|
安装 CentOS 镜像下载要安装的 CentOS 版本,这里选用最新的 CentOS 6.2:
$ wget http://mirrors.kernel.org/centos ... -x86_64-minimal.iso创建一个 10GB 大小的 “硬盘”(raw 格式),最好用一个较小的 “硬盘”,体积太大提交到云里会花很长时间,而且每次运行实例也会花很长时间:
$ kvm-img create -f raw centos.img 10GFormatting 'centos.img', fmt=raw size=10737418240使用刚才下载的 CentOS “安装盘” 和刚创建的 “硬盘” 引导启动系统,用 -vnc 参数打开 vnc 访问,这样可以从其他机器登录到这个界面安装系统:
$ sudo kvm -m 512 -cdrom CentOS-6.2-x86_64-minimal.iso \-drive file=centos.img -boot d -net nic -net tap -nographic -vnc :0用 vncviewer 登录后按照屏幕提示完成 CentOS 安装。需要注意的是在分区阶段把 10GB 硬盘全部划分成一个 ext4 root 分区,不要创建多个分区也不要创建 swap 区:
$ vncviewer 172.16.39.111:5900安装完后会自动重启,如果没有重启的话按照下面的命令启动刚刚安装好的虚拟机镜像 centos.img,如果出现 failed to find romfile “pxe-rtf8139.bin” 的错误提示可以通过安装 kvm-pxe 解决:
$ sudo kvm -m 512 -drive file=centos.img -boot c -net nic -net tap \-nographic -vnc :0kvm: pci_add_option_rom: failed to find romfile "pxe-rtl8139.bin"$ sudo apt-get install kvm-pxe再次用 vnc 登录虚拟机镜像,安装一些必要工具(因为这个镜像将会是模板,所以最好保持最简最小化):
$ vncviewer 172.16.39.111:5900# yum update# yum upgrade# yum install openssh-server# chkconfig sshd on修改分区加载表(/etc/fstab),注释或删除以前的,加上 UUID=cec-rootfs 一行:
# vi /etc/fstab#UUID=47a90bea-2d88-4c82-a335-09c1533b1538 / ext4 defaults 1 1LABEL=cec-rootfs / ext4 defaults 0 0在网络接口配置里面注释或删除这行 #HWADDR= 一行,启用 DHCP:
# vi /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE="eth0"#HWADDR="00:11:22:12:34:56"#NM_CONTROLLED="yes"BOOTPROTO=dhcpONBOOT="yes"注射 ssh key 以便外界可以用 ssh -i mykey.priv root@host 的形式无密码登录到虚拟机实例,在 /etc/rc.local 文件中加入下面这些:
# vi /etc/rc.local...mkdir -p /root/.sshecho >> /root/.ssh/authorized_keyscurl -m 10 -s http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key| grep 'ssh-rsa' >> /root/.ssh/authorized_keyschmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keysecho "AUTHORIZED_KEYS:"echo "--------------------"cat /root/.ssh/authorized_keysecho "--------------------"别忘了还需要修改 sshd 的配置实现无密码登录:
# vi /etc/ssh/sshd_config...RSAAuthentication yesPubkeyAuthentication yesPermitRootLogin without-passwordChallengeResponseAuthentication noPasswordAuthentication noUsePAM no需要关闭 SELINUX,否则即使上面 ssh 设定允许 root 无密码登录也无效:
# vi /etc/selinux/configSELINUX=disabledSELINUXTYPE=targeted70-persistent-net.rules 会自动添加其他的网络接口,需要删除这个文件避免自动添加除了 eth0 以外的接口,关闭虚拟机准备发布镜像:
# rm -rf /etc/udev/rules.d/70-persistent-net.rules# shutdown -h now发布 CentOS 镜像CentOS 镜像已经做好了,现在可以发布到云里了:
$ cloud-publish-image amd64 centos.img mybucketami-00000007 mybucket/centos.img.manifest.xml等待一段时间后出现 ami-00000008mybucket/centos.img.manifest.xml 表示我们刚制作的 CentOS 镜像已经正式发布到云里,以后就可以以这个镜像为模板来快速生成虚拟机实例(instance)。可以通过 euca-describe-images 来查看:
$ euca-describe-imagesIMAGEami-00000008images/centos.img.manifest.xmlavailableprivatex86_64machine instance-store第一个 CentOS 虚拟机实例有了 CentOS 镜像(模板)以后我们就可以以这个 “镜像” 为模板来为云计算用户创建 n 个 CentOS 虚拟机(操作系统)实例,不过在运行实例之前需要 key:
$ euca-add-keypair mykey > mykey.priv$ chmod 600 mykey.priv $ euca-describe-keypairsKEYPAIRmykey76:7d:93:88:a0:e5:3e:5d:4b:62:cd:85:c5:23:7a:05$ euca-run-instances -k mykey -t m1.small ami-00000008RESERVATIONr-hzwwif81vpseeclouddefaultINSTANCEi-0000002aami-00000008pendingvpsee (vpseecloud, None)0m1.small2012-02-01T14:26:51Zunknown zoneaki-00000001ami-00000000上面使用 euca-run-instances 创建一个实例后可以用 nova-manage 命令看到:
$ euca-describe-instancesRESERVATIONr-z973l7mmvpseeclouddefaultINSTANCEi-0000002aami-00000008172.16.39.200172.16.39.200runningvpsee (vpseecloud, cloud00)0m1.small2012-02-01T13:56:02Znovaami-00000000ami-00000000还记得在 Ubuntu 上安装和配置 OpenStack Nova 的创建网络部分吗?看看现在云里面 IP 的分配情况:
$ sudo nova-manage network listid IPv4 IPv6 start address DNS1 DNS2 VlanID project uuid1 172.16.38.0/23 None 172.16.38.2 8.8.4.4 None None None None刚才用 euca-run-instances 启动的一个 ubuntu 虚拟机实例的 IP 就是从 172.16.38.2 开始的,目前分配的 IP 是 172.16.39.200(从 euca-describe-instances 可以看出来),所以 ssh 登录这个 IP 就登上了我们的 CentOS 云虚拟机:
$ ssh -i mykey.priv root@172.16.39.200[iyunv@server-25 ~]# |
|
|
|
|
|
|