cloud init在OpenStack中的应用

cloud init可以用来对虚拟机做初始化工作,正如windows系统里的bat脚本post install可以实现windows系统初始化工作一样,cloud init可以设置虚拟机的机器名,登录账号等,比如默认基于cloud image的虚拟机是不提供登录账号的,可以通过cloud init来创建登录账号来达到登录虚拟机的目的。

使用cloud init需要先安装cloud init的安装包,以ubuntu为例:

sudo apt-get -y install cloud-init

而默认的cirros镜像中是没有安装cloud-init的,一般cloud image中都已经包含了此包,所以无需再安装。
OpenStack中提供两种方式来使用cloud init,终端命令行以及dashboard,下面的实现基于ubuntu-16.04-server-cloudimg,首先来看dashboard上提供的支持,我们修改cloud image的登录密码为abc123,这样即便不导入key pair也可以通过创建的账户登录虚拟机:

这里写图片描述

上面的脚本中#cloud-config是cloud init脚本的开始标志,cloud init需要通过此行来判断脚本的开始,ssh_pwauth表示开启密码登录,登录密码则为abc123.

launch虚拟机,接下来我们尝试用设置的密码登录虚拟机。
这里写图片描述

登录成功,这里通过cloud init我们实现了登录基于cloud image的虚拟机的另一种方式,标准做法是导入宿主机的公钥实现无密码登录,这个不在此文的讨论范围之内。

当然,也可以通过将cloud init的脚本保存为一个文件,创建虚拟机时通过导入此文件来达到相同的目的。

下面来看通过命令行的方式实现虚拟机的主机名的修改,假设我们希望将虚拟机的名称修改为sunday,我们将cloud init的脚本保存为sunday.txt并通过nova boot创建一个虚拟机:

这里写图片描述

通过ssh连接上虚拟机,查看虚拟机的主机名是否修改成功:
这里写图片描述

cloud init支持的功能繁多,可以参考cloud init的官网[1]来学习它支持的其它功能。


[1]: http://cloudinit.readthedocs.io/en/latest/

猜你喜欢

转载自blog.csdn.net/chenwei8280/article/details/79685520