在对自己的实例做好了所有配置后,就可以开始制作AMI了。

需要用到的工具有:

1. AMI tools

wget http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools.noarch.rpm -P /usr/local/src

rpm -ivh /usr/local/src/ec2-ami-tools.norach.rpm

2. API tools

wget http://s3.amazonaws.com/ec2-downloads/ec2-api-tools.zip -P /usr/local/src

cd /usr/local/src

unzip ec2-api-tools.zip

mkdir ~/aws

mv ec2-api-tools-1.5.2.4 ~/aws

3. 设置环境变量

vi /etc/profile.d/linuxjcq.sh

# 设置JAVA_HOME环境变量
export JAVA_HOME="/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64"
# 设置EC2_HOME
export EC2_HOME=/root/aws/ec2-api-tools-1.5.2.4
# 设置身份
export EC2_PRIVATE_KEY=/root/.ec2/pk*.pem
export EC2_CERT=/root/.ec2/cert*.pem
export PATH=$EC2_HOME/bin:$PATH

这边用的两个文件pk*.pem和cert*.perm需要到https://aws.amazon.com/的securityCredentials中的"X.509 Certificates"设置并获得这两个文件

制作AMI

1. 确认安装了所有软件后,在"AWS Management Console"控制台中停止EC2实例,右击实例,选择"stop"

EC2的AMI制作(二):安装tools和制作AMI_休闲

2. 实例停止后,再次右击改实例,选择"Create Image (EBS AMI)"

EC2的AMI制作(二):安装tools和制作AMI_休闲_02

3. 点击左侧边栏的"Snapshots",确认快照已经创建成功,并记下"Snapshot ID"

EC2的AMI制作(二):安装tools和制作AMI_ec2 ami amazon snap_03

4. 右击已经停止的实例,选择"start"重新开启实例

5. 创建初始AMI

使用命令行连接到EC2后,执行以下命令(这个命令有API tools提供),snap-98c46eff就是前面创建的快照

ec2-register -n "RHEL x86_64 6.2 source" -d "RHEL x86_64 6.2: LNMP" -a x86_64 --kernel aki-08ed0761 --root-device-name /dev/sda1 -b /dev/sda1=snap-98c46eff:40:false

命令会返回一个AMI Id

ec2-register命令说明

-n:指定AMI的名称

-d:描述信息

-a:指定架构,可以为i386或者x86_64

--kernel:指定内核ID,就是前一篇文章的Kernel Id

--root-device-name:指定root设备的名称

-b:格式为[<snapshot-id>][:<size>[:<delete-on-termination>]

snapshot-id为快照ID
size为大小
delete-on-termination为终止时是否删除

如果你绑定了多个设备,可以使用多个-b选项

注意:默认的EC2的AMI的/root设备都比较小,可以使用size这个选项扩大它,但是在AWS Management Console中没有直接指定大小的功能

6. 点击做侧边栏的"AMIs",选择"Owned By Me"就可以看到定制的AMIs

7. 使用定制的AMIs安装服务器,其中安装步骤几乎和前一篇相同(http://linuxjcq.blog.51cto.com/3042600/776422),在选择Instance Type时选择需要的类型,在选择AMI时选择自己创建的AMI,如下图

EC2的AMI制作(二):安装tools和制作AMI_ec2 ami amazon snap_04

8. 扩展root设备的空间

使用以下命令查看

df -PH
Filesystem             Size   Used  Avail Use% Mounted on
/dev/xvde1             6.1G   3.9G   2.2G  64% /
none                   310M      0   310M   0% /dev/shm

发现root设备并没有40G,前面创建,使用以下命令扩展空间

resize2fs /dev/xvde1 40G

再次查看空间正常

9. 添加交换分区

a. 创建新卷

在"AWS Management Console"的左侧边栏中,点击"Volumes",点击"Create Volume"创建新卷

EC2的AMI制作(二):安装tools和制作AMI_休闲_05

填入要创建的卷的大小,选择和实例创建是相同的Availability Zone,这里是us-east-1b,一定要相同

EC2的AMI制作(二):安装tools和制作AMI_休闲_06

b. 选中创建的新卷,点击"Attach Volume

EC2的AMI制作(二):安装tools和制作AMI_职场_07

选择要挂载的实例,和挂载点,交换分区的挂载点为/dev/sda3,点击"Yes, Attach"完成

EC2的AMI制作(二):安装tools和制作AMI_ec2 ami amazon snap_08 

c. 格式化分区

使用命令fdisk -l后会发现新挂载的卷为/dev/xvde1

使用以下命令格式化

mkswap /dev/xvde3

d. 挂载,fstab文件中添加以下行

vi /etc/fstab

/dev/xvde3    swap    swap  defaults    0 0

执行以下命令挂载

mount /dev/xvde3

10. 挂载其他卷,比如/data/分区,大小为200G

a. 创建新卷

和9中的a相同,大小为200G

b. 挂载

和9中的b相同,挂载点位/dev/sdf

c. 格式化分区

mkfs.ext4 /dev/xvdf

d. 挂载,编辑/etc/fstab文件

vi /etc/fstab

/dev/xvdf    /data    ext4   defaults  1 2

执行以下命令挂载

mount /data

11. 关机

12. 创建完整的AMI

右击已经关闭的实例,选择"Create Image (EBS AMI)"

EC2的AMI制作(二):安装tools和制作AMI_休闲_02

等待一会儿,在左侧边栏的"AMIs"中将会看到新的AMI,现在这个是完整的AMIs了,使用它就可以安装一个刚现在完全相同的EC2实例。