在对自己的实例做好了所有配置后,就可以开始制作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"
2. 实例停止后,再次右击改实例,选择"Create Image (EBS AMI)"
3. 点击左侧边栏的"Snapshots",确认快照已经创建成功,并记下"Snapshot ID"
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为快照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,如下图
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"创建新卷
填入要创建的卷的大小,选择和实例创建是相同的Availability Zone,这里是us-east-1b,一定要相同
b. 选中创建的新卷,点击"Attach Volume
选择要挂载的实例,和挂载点,交换分区的挂载点为/dev/sda3,点击"Yes, Attach"完成
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)"
等待一会儿,在左侧边栏的"AMIs"中将会看到新的AMI,现在这个是完整的AMIs了,使用它就可以安装一个刚现在完全相同的EC2实例。