当前位置: 首页>>技术教程>>正文


如何使用ubuntu创建束上传和访问自定义Debian AMI

, ,

介绍

本指南将提供有关如何在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目录中。
Create disk image with dd

在磁盘映像上创建文件系统

在挂载该映像之前,我们需要创建一个文件系统。为此,我们可以使用mkfs.ext3命令,如下所示:

mkfs.ext3 -F debian-ami 

您的终端输出应类似于以下内容:
Make a filesystem on the disk image

挂载新创建的磁盘映像

现在,我们几乎可以挂载新的磁盘映像了。在执行此操作之前,我们需要确定要在哪里运行chroot环境。在本指南中,我们将使用/chroot目录。更改为root(超级用户)并使用[[mkdir | mkdir]]命令创建目录:

mkdir /chroot 

Create chroot directory

从〜/aws目录中挂载磁盘映像,我们使用以下命令linux命令

mount -o loop /home/linuxconfig/aws/debian-ami /chroot 

mount the disk image

将Debian安装到/chroot

要将Debian安装到/chroot,我们使用debootstrap命令,该命令可以在Debian和Ubuntu上找到。如果您遵循我们的先决条件部分,那么debootstrap命令应该已经可以使用:

debootstrap --arch i386 etch /chroot/ http://ftp.debian.org 

该命令的输出将很长。 debootstrap将检索,验证,解压缩并安装所有必需的软件包。Install debian with debootstrap command

最后,您应该获得类似于下一个终端屏幕截图中显示的消息:

successful chroot installation message

配置chroot的Debian安装

进入chroot环境

现在我们已经成功安装了最小的Debian系统软件包,我们需要chroot进入该安装并进行一些更改。使用chroot命令进入chroot环境。

chroot /chroot 

Enter chroot environment with chroot command

创建设备

mount /proc
cd /dev
MAKEDEV console
MAKEDEV std

MAKEDEV create chrooted environment devices

修改root密码

这将为超级用户帐户创建新密码:
注意:我们仍然处于chroot环境中!

passwd 

create new password for a chroot super user account

配置网络接口

我们需要编辑网络接口文件以在启动时使用DHCP。这个命令可以解决问题:

echo -e 'auto lo\niface lo inet loopback\nauto eth0\niface eth0 inet dhcp' >> /etc/network/interfaces 

configure network edit interfaces file

修改/etc /fstab文件

我们还需要定义一些挂载点:

echo -e '/dev/sda1 / ext3 defaults 0 1\n/dev/sda2 swap swap defaults 0 0' > /etc/fstab 

edit fstab file

安装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

Setup java environmental variable

最后,我们还可以设置帐号变量,访问密钥和秘密密钥:
注意:本指南随机创建了访问密钥,秘密密钥和帐号,以适合实际格式。它们无效!但是,如果您有足够的时间,可以尝试!

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

Download amazon ami tools zip file

安装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

Export ami tools variables

捆绑新的AMI

全部设置完毕,我们准备捆绑新的Debian AMI。如果保留空白,默认值为10MB,系统将提示您“请为arch [i386]指定一个值”:

ec2-bundle-image -i debian-ami --cert $EC2_CERT --privatekey $EC2_PRIVATE_KEY -u $EC2_ACCNO 

Bundle AMI image

上传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 

Upload AMI with ec2-upload-bundle tool

从Amazon S3设置EC2 API工具

本教程的这一部分将说明如何设置和使用EC2 API工具以注册和使用新的AMI。

下载EC2 API工具

下载api工具:

cd ~/aws
wget http://s3.amazonaws.com/ec2-downloads/ec2-api-tools.zip

Download API tools

安装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/

install amazon api tools

使用API​​工具注册AMI

在此阶段,我们准备注册新的AMI。注册后,我们将获得AMI的ID号。
注:对于Amazon API工具,您的Amazon EC2证书和私钥的路径是从先前定义的环境变量中自动提取的。

ec2-register linux-debian-etch/debian-ami.manifest.xml 

Register AMI with ec2-register

运行AMI实例

现在我们有了一个AMI的注册号,我们可以启动它:

ec2-run-instances ami-b9f115d0 

Start amazon AMI instance

描述AMI实例

好吧,AMi正在运行,我们需要了解有关它的更多信息,例如IP地址或完整域名,请使用启动AMI时生成的实例号。 (请参阅上一步!):

ec2-describe-instances i-c369ccaa 

Describe amazon machine instance

使用SSH连接到AMI

如果这不是您的第一个AMI,则可能已经启用了端口22。如果不是,请在尝试连接之前先运行以下命令:

ec2-authorize default -p 22 

启用后,使用shh命令连接到新的Debian ETCH AMI:

ssh root@IP-address or full-domain-name 

注意:我们之前使用ec2-describe-instances命令检索了完整域名。
Connect to AMI via ssh and enable port 22

附录

其他有用的EC2命令

控制台输出

要查看实例发生了什么,我们可以将ec2-get-console-output与实例ID结合使用:

ec2-get-console-output  

关闭Amazon EC2实例

要关闭Amazon EC2实例,请使用:

ec2-terminate-instances  

查看已注册AMI的列表

要查看您已注册的Amazon Machine Images列表:

ec2-describe-images 

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/9502.html,未经允许,请勿转载。