cloudinit为我们提供了一个初始化云主机的工具,但是大部分资料都是针对linux如何使用,对windows怎么具体使用很少涉及(大概是因为很简单,直接安装就行,参考下面文章)
win7镜像制作
openstack之cloudinit配置
完成上述工作之后,一般是需要进行镜像的用户名密码设置,比如增加一个user并指定用户所属(Administrator/Guest),增加一个初始化程序,写个脚本等等…
元数据
元数据可以自己定义,key-value,例如,我需要添加条测试信息
nova meta set instance-000 testInfo=content
这个意思是说,我向主机instance-000添加一条元数据,这个元数据内容是{testInfo:content},如果添加成功,可以在 http://169.254.169.254/openstack/latest/meta_data.json 中看到meta中的信息。目前我还不知道这个自己添加的数据有什么用,如果手动做的话,我觉的应该在instance-000中写一个脚本,去请求meta_data.json数据,然后解析json,获取出testInfo,content,然后达到执行的目的。(这是目前的想法,也是最笨的方法)。cloudinit保留了admin_pass这个字段,创建主机时,直接使用它就可以设置密码(用户名,密码,预设值是在cloudinit安装路径的.conf文件里,可以看到)
nova boot --flavor m1.xlarge --image win7-ci --nic net-id=selfprovide --security-group default instance-0 --meta admin_pass=123456
创建一个云主机,设置网卡selfprovide(注意,使用cloudinit,必须要私网的,内部通信所需),指定初始密码是123456。默认情况下,实例创建成功后,需要重启一次,cloudinit才能生效。
nova meta set instance-0 username=user
增加一个元数据,这个手动解析吧,如果不想干这些事,那就是用user-data来解决
user-data
镜像模板制作时,根本不需要设置任何的用户名密码,如果你安装了cloudinit,并且没有任何改动,当实例创建好以后,会增加一个Admin用户,密码是admin_pass。如果想增加一个Guest该如何用?cloudinit给我们提供了一个user-data方案,请参考cloudinit-userdata. 在windows下可以使用批处理、powershell、python、xml格式,linux下shell、python、xml。但要注意加首行标记
批处理
rem cmd
PowerShell
#ps1_sysnative (system native)
#ps1_x86 (Windows On Windows 32bit)
shell
#!/bin/bash
Python
#!/usr/bin/env python
注意:要预装python解析环境
Python is available by default with the build itself, but also it must be in the system PATH.
EC2 format
# 没有标记行
添加一个demo用户示例
这里采用批处理格式
rem cmd
net user demolongruan /add /passwordchg:no /expires:never
net localgroup Guests demo/add
net localgroup Users demo/del
保存文件为adduser.bat
nova boot --flavor m1.large --image win7-ci --nic net-id=selfprovice --security-group default win7-1 --meta admin_pass=123456 --user-data ./adduser.bat
执行成功,重启后会发现多个Guest用户demo
参考文章: http://cloudbase-init.readthedocs.io/en/latest/userdata.html#batch https://ask.openstack.org/en/question/61813/calling-batch-script-from-cloudbase-init/ https://www.ibm.com/developerworks/cn/cloud/library/1620-openstack-metadata-service/