介绍
本指南将提供有关如何在Amazon Elastic Compute Cloud(Amazon EC2)上创建,捆绑,上传,运行和连接Debian ETCH AMI的所有必要步骤。在本指南中,我们使用了Ubuntu 9.04。但是,只要包含Java和ruby软件包,也可以使用任何其他Linux发行版。有关Amazon EC2的更多信息,请阅读这里。
该页面绝不是Amazon Web Services的会员。 !
先决条件
- 网络连接
- Amazon Web Services(AWS)的S3和EC2服务的注册用户帐户
- Amazaon访问密钥ID
- 亚马逊秘密访问密钥
- 亚马逊帐号
- Amazon X.509证书
- 至少1GB的可用硬盘空间
- 需要安装以下软件包:
apt-get install ssh debootstrap ruby
sun-java6-bin libopenssl-ruby curl
开始之前
正如您将在本指南的下一部分中看到的那样,要成功使用Amazon的EC2 Web服务,需要许多不同的文件。为了简单起见,我们将在〜/中创建目录”aws”并将所有必需的文件存储在此处以快速访问。将有三个例外:
- 我们将安装到/opt目录中的AWS api和ami工具
- chroot环境将在/chroot中创建
- 亚马逊的账户证书和私钥将存储在〜/.ec2中
创建Amazon机器映像
在chroot环境中创建AMI
使用dd创建磁盘映像
首先,我们需要创建一个大小适合于我们的安装的磁盘映像。在这种情况下,我们将创建一个大约750MB的磁盘映像。为此,我们使用dd命令。
dd if=/dev/zero of=debian-ami count=750 bs=1M
该命令的输出将创建一个名为debian-ami的文件,并将其存储在我们的〜/aws目录中。
在磁盘映像上创建文件系统
在挂载该映像之前,我们需要创建一个文件系统。为此,我们可以使用mkfs.ext3命令,如下所示:
mkfs.ext3 -F debian-ami
您的终端输出应类似于以下内容:
挂载新创建的磁盘映像
现在,我们几乎可以挂载新的磁盘映像了。在执行此操作之前,我们需要确定要在哪里运行chroot环境。在本指南中,我们将使用/chroot目录。更改为root(超级用户)并使用[[mkdir | mkdir]]命令创建目录:
mkdir /chroot
从〜/aws目录中挂载磁盘映像,我们使用以下命令linux命令:
mount -o loop /home/linuxconfig/aws/debian-ami /chroot
将Debian安装到/chroot
要将Debian安装到/chroot,我们使用debootstrap命令,该命令可以在Debian和Ubuntu上找到。如果您遵循我们的先决条件部分,那么debootstrap命令应该已经可以使用:
debootstrap --arch i386 etch /chroot/ http://ftp.debian.org
该命令的输出将很长。 debootstrap将检索,验证,解压缩并安装所有必需的软件包。
最后,您应该获得类似于下一个终端屏幕截图中显示的消息:
配置chroot的Debian安装
进入chroot环境
现在我们已经成功安装了最小的Debian系统软件包,我们需要chroot进入该安装并进行一些更改。使用chroot命令进入chroot环境。
chroot /chroot
创建设备
mount /proc
cd /dev
MAKEDEV console
MAKEDEV std
修改root密码
这将为超级用户帐户创建新密码:
注意:我们仍然处于chroot环境中!
passwd
配置网络接口
我们需要编辑网络接口文件以在启动时使用DHCP。这个命令可以解决问题:
echo -e 'auto lo\niface lo inet loopback\nauto eth0\niface eth0 inet dhcp' >> /etc/network/interfaces
修改/etc /fstab文件
我们还需要定义一些挂载点:
echo -e '/dev/sda1 / ext3 defaults 0 1\n/dev/sda2 swap swap defaults 0 0' > /etc/fstab
安装sshd
一旦我们准备好了新的AMI,然后上载并启动它,便可以通过ssh连接到它。因此,我们需要安装ssh守护程序。使用apt-get安装ssh软件包:
注意:我们仍然处在根深蒂固的环境中
apt-get install ssh
您的chroot环境与主机共享相同的Internet连接,因此一切应该顺利进行。不用担心“设置区域设置失败”。交战的消息。
退出/卸载chroot环境
一切都应该准备好,所以我们可以退出chroot环境:
exit
并使用unmount来卸载文件映像:
umount -l /chroot
上传新的Amazon Machine Image
设置Amazon环境变量,密钥和证书
现在是时候从Amazon网站上提取我们的帐户详细信息和证书了。创建〜/.ec2目录并在其中保存证书。在[http://developer.amazonwebservices.com/connect/kbcategory.jspa?categoryID=84这里]中描述了涉及的步骤。导航到“入门->设置一个帐户。如果您保存了私钥和证书,则可以设置环境变量,因此在使用ami和api工具时,我们不必使用完整路径来引用它们:
mkdir ~/.ec2
export EC2_PRIVATE_KEY=~/.ec2/pk-K5AHLDNT3ZI28UIE6Q7CC3YZ4LIZ54K7.pem
export EC2_CERT=~/.ec2/cert-K5AHLDNYYZI2FUIE6R7CC3YJ4LIZ54K7.pem
EC2 AMI工具和EC2 API工具基于Java。为Java设置环境变量并确认已安装Java:
export JAVA_HOME=/usr/
$JAVA_HOME/bin/java -version
最后,我们还可以设置帐号变量,访问密钥和秘密密钥:
注意:本指南随机创建了访问密钥,秘密密钥和帐号,以适合实际格式。它们无效!但是,如果您有足够的时间,可以尝试!
export EC2_ACCNO=155678941235
export ACCESS_KEY=1WQ6FJKYHJMPTJ3QR6G2
export SECRET_KEY=VDYxRzosnDWvxrJ97QntVpsSUBAavGHE1QJELEyY
从Amazon S3设置EC2 AMI工具
本教程的这一部分将说明如何设置和使用EC2 AMI Tools以便捆绑和上载新的AMI。
下载EC2 AMI工具
下载ami工具:
cd ~/aws
wget http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools.zip
安装EC2 AMI工具
将ec2-ami-tools.zip解压缩到/opt:
注意:使用sudo或切换到root用户!
unzip -d /opt/ ec2-ami-tools.zip
将AMI工具包括到PATH变量和EC2_HOME中:
export PATH=$PATH:/opt/ec2-ami-tools-1.3-21885/bin
export EC2_HOME=/opt/ec2-ami-tools-1.3-21885
捆绑新的AMI
全部设置完毕,我们准备捆绑新的Debian AMI。如果保留空白,默认值为10MB,系统将提示您“请为arch [i386]指定一个值”:
ec2-bundle-image -i debian-ami --cert $EC2_CERT --privatekey $EC2_PRIVATE_KEY -u $EC2_ACCNO
上传AMI文件
以前,bundle image ami工具默认会在/tmp目录中创建文件。这也是新AMI的XML清单所在的地方。现在上传AMI:
注意:如果存储桶不存在,它将被创建!此外,您必须为存储桶选择自己的名称。
ec2-upload-bundle -b linux-debian-etch -m /tmp/debian-ami.manifest.xml -a $ACCESS_KEY -s $SECRET_KEY
从Amazon S3设置EC2 API工具
本教程的这一部分将说明如何设置和使用EC2 API工具以注册和使用新的AMI。
下载EC2 API工具
下载api工具:
cd ~/aws
wget http://s3.amazonaws.com/ec2-downloads/ec2-api-tools.zip
安装EC2 API工具
将ec2-api-tools.zip解压缩到/opt:
注意:使用sudo或切换到root用户!
unzip -d /opt/ ec2-api-tools.zip
将api工具包括到PATH变量和EC2_HOME中:
export PATH=$PATH:/opt/ec2-api-tools-1.3-24159/bin/
export EC2_HOME=/opt/ec2-api-tools-1.3-24159/
使用API工具注册AMI
在此阶段,我们准备注册新的AMI。注册后,我们将获得AMI的ID号。
注:对于Amazon API工具,您的Amazon EC2证书和私钥的路径是从先前定义的环境变量中自动提取的。
ec2-register linux-debian-etch/debian-ami.manifest.xml
运行AMI实例
现在我们有了一个AMI的注册号,我们可以启动它:
ec2-run-instances ami-b9f115d0
描述AMI实例
好吧,AMi正在运行,我们需要了解有关它的更多信息,例如IP地址或完整域名,请使用启动AMI时生成的实例号。 (请参阅上一步!):
ec2-describe-instances i-c369ccaa
使用SSH连接到AMI
如果这不是您的第一个AMI,则可能已经启用了端口22。如果不是,请在尝试连接之前先运行以下命令:
ec2-authorize default -p 22
启用后,使用shh命令连接到新的Debian ETCH AMI:
ssh root@IP-address or full-domain-name
注意:我们之前使用ec2-describe-instances命令检索了完整域名。
附录
其他有用的EC2命令
控制台输出
要查看实例发生了什么,我们可以将ec2-get-console-output与实例ID结合使用:
ec2-get-console-output
关闭Amazon EC2实例
要关闭Amazon EC2实例,请使用:
ec2-terminate-instances
查看已注册AMI的列表
要查看您已注册的Amazon Machine Images列表:
ec2-describe-images