Tips On Cloud-Init
Oct 12, 2015
Technology
参考
主要参考了
http://huang-wei.github.io/programming/2013/12/23/run-cloud-init-in-local-kvm.html
这里主要记录的是操作步骤。
介绍
红帽介绍:
Cloud-Init 是一个用来自动配置虚拟机的初始设置(如主机名,网卡和密钥)的工具。它可以在
使用模板部署虚拟机时使用,从而达到避免网络冲突的目的。
在使用这个工具前,cloud-init 软件包必须在虚拟机上被安装。安装后,Cloud-Init 服务会在系
统启动时搜索如何配置系统的信息。您可以使用只运行一次窗口来提供只需要配置一次的设置信息
;或在 新建虚拟机、编辑虚拟机和编辑模板窗口中输入虚拟机每次启动都需要的配置信息。
cloud-init安装
Ubuntu 14.04上可以通过以下命令来安装cloud-init:
$ apt-cache search cloud-utils
cloud-utils - metapackage for installation of upstream cloud-utils source
$ sudo apt-get install cloud-utils
镜像准备
在http://cloud-images.ubuntu.com/releases/ 可以找到Ubuntu制作的ubuntu cloud image, image分版本, 这里使用14.04的image。
$ wget http://cloud-images.ubuntu.com/releases/14.04.3/
release-20151008/ubuntu-14.04-server-cloudimg-amd64-disk1.img
取回来后的镜像可以直接使用,但解压开后读取速度会更快:
$ qemu-img convert -O qcow2 ubuntu-14.04-server-cloudimg-amd64-disk1.img my_vm.img
对比两个镜像大小可以看到:
$ qemu-img info ubuntu-14.04-server-cloudimg-amd64-disk1.img
image: ubuntu-14.04-server-cloudimg-amd64-disk1.img
file format: qcow2
virtual size: 2.2G (2361393152 bytes)
disk size: 246M
cluster_size: 65536
Format specific information:
compat: 0.10
$ qemu-img info my_vm.img
image: my_vm.img
file format: qcow2
virtual size: 2.2G (2361393152 bytes)
disk size: 903M
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
配置脚本内容
my-user-data内容:
$ cat my-user-data
#cloud-config
password: xxxxxx
chpasswd: { expire: False }
ssh_pwauth: True
ssh_authorized_keys:
- ssh-rsa xxxxxx
timezone: Asia/Chongqing
通过my-user-data生成img文件:
$ cloud-localds my-seed.img my-user-data
由之前的my_vm.img和my-seed.img文件启动虚拟机:
$ qemu-system-x86_64 -net nic -net user,hostfwd=tcp::2222-:22 -hda my_vm.img -hdb my-seed.img -m 512
通过qemu的窗口或者ssh登录系统: ssh -p 2222 ubuntu@localhost
.
引入meta-data
meta-data的内容与虚拟机的实例相关,只用来做初始化,虚拟机实例运行完一次以后就不需要修改 。但如果要引入更新,则重建一下instance-id即可。
更新my-meta-data文件内容:
$ echo "instance-id: $(uuidgen || echo i-abcdefg)" > my-meta-data
由my-meta-data和my-user-data生成my-seed.img文件:
$ cloud-localds my-seed.img my-user-data my-meta-data
启动虚拟机:
$ qemu-system-x86_64 -net nic -net user,hostfwd=tcp::2222-:22 -hda my_vm.img -hdb my-seed.img -m 512
$ kvm -net nic -net user,hostfwd=tcp::2222-:22 -hda my_vm.img -hdb my-seed.img -m 512
其他初始化行为
需要初始化的脚本:
$ cat hello_world.sh
#!/bin/bash
echo "hello world!" >> /home/ubuntu/test
将初始化脚本和cloud config data合并:
$ write-mime-multipart
--output=combined-userdata.txt hello_world.sh:text/x-shellscript my-user-data
由生成的combined-userdata.txt生成my-seed.img:
$ echo "instance-id: $(uuidgen || echo i-abcdefg)" > my-meta-data
$ cloud-localds my-seed.img combined-userdata.txt my-meta-data
重启后即可得到更新后的系统镜像.