cloud-init资料
转载自:http://www.cnblogs.com/smallcoderhujin/p/4238609.htmlcloud-init用于在创建虚拟机时通过元数据服务对虚拟机基本配置,包括常见的主机名,用户,密码等等。同时用户可以通过user_data自定义一些数据对虚拟机进行配置,可以有配置文件cloud-config或者直接给定脚本,支持常见的shell cmd python脚本
·
转载自:http://www.cnblogs.com/smallcoderhujin/p/4238609.html
cloud-init用于在创建虚拟机时通过元数据服务对虚拟机基本配置,包括常见的主机名,用户,密码等等。同时用户可以通过user_data自定义一些数据对虚拟机进行配置,可以有配置文件cloud-config或者直接给定脚本,支持常见的shell cmd python脚本
- 官网: http://www.cloudbase.it
博客
- 使用cloud-init实现虚拟机信息管理: http://blog.marvelworld.tk/?p=575
cloud-init for windows
- 启动一个云主机,制作模板
- 安装cloudbase-init.msi程序,见百度云盘
- 修改代码,允许重复加载插件(测试时使用)
>程序:C:\Program Files (x86)\Cloudbase Solutions\Cloudbase-Init\Python27\Lib\site-packages\cloudbaseinit\init.py
>方法:_exec_plugin
>修改为:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
plugin_name = plugin.get_name()
status = self ._get_plugin_status(osutils, instance_id, plugin_name)
LOG.info( 'Executing plugin \'%s\'' , plugin_name)
try :
(status, reboot_required) = plugin.execute(service,
shared_data)
self ._set_plugin_status(osutils, instance_id, plugin_name,
status)
return reboot_required
except Exception, ex:
LOG.error( 'plugin \'%(plugin_name)s\' failed with error '
'\'%(ex)s\'' , { 'plugin_name' : plugin_name, 'ex' : ex})
LOG.exception(ex)
|
- 编写测试脚本
|
1
2
3
4
5
6
7
8
9
|
import os
def test() :
fl = open ( 'c:\hujin.log' , 'wb' )
fl.write( 'hello,world' )
fl.close()
if main = = 'name' :
test()
|
- 启动Cloud Initialization Service 服务
cloud-init for linux
待更新
源码流程说明
- 程序首先判断操作系统类型,加载对应的模块
- 加载服务,服务共分为四种:
|
1
2
3
4
|
'cloudbaseinit.metadata.services.httpservice.HttpService' ,
'cloudbaseinit.metadata.services.configdrive.ConfigDriveService' ,
'cloudbaseinit.metadata.services.ec2service.EC2Service' ,
'cloudbaseinit.metadata.services.maasservice.MaaSHttpService'
|
目前openstack中我们会用第一种,使用http获取openstack的元数据服务
- 加载插件,插件共分为:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
'cloudbaseinit.plugins.windows.mtu.MTUPlugin' ,
'cloudbaseinit.plugins.windows.ntpclient.NTPClientPlugin' ,
'cloudbaseinit.plugins.windows.sethostname.SetHostNamePlugin' ,
'cloudbaseinit.plugins.windows.createuser.CreateUserPlugin' ,
'cloudbaseinit.plugins.windows.networkconfig.NetworkConfigPlugin' ,
'cloudbaseinit.plugins.windows.licensing.WindowsLicensingPlugin' ,
'cloudbaseinit.plugins.windows.sshpublickeys.'
'SetUserSSHPublicKeysPlugin' ,
'cloudbaseinit.plugins.windows.extendvolumes.ExtendVolumesPlugin' ,
'cloudbaseinit.plugins.windows.userdata.UserDataPlugin' ,
'cloudbaseinit.plugins.windows.setuserpassword.'
'SetUserPasswordPlugin' ,
'cloudbaseinit.plugins.windows.winrmlistener.'
'ConfigWinRMListenerPlugin' ,
'cloudbaseinit.plugins.windows.winrmcertificateauth.'
'ConfigWinRMCertificateAuthPlugin' ,
'cloudbaseinit.plugins.windows.localscripts.LocalScriptsPlugin' ,
|
上面windows中就是使用localscript插件
- 执行插件
- 根据配置重启机器
PS
目前主要功能有
- 创建新用户
- 修改用户密码
- 添加用户到指定用户组
- 获取用户home目录
- 设置主机名
- 获取网卡信息
- 获取DHCP信息
- 设置NTP
- 设置静态IP
- 判断服务是否存在
- 获取服务状态
- 设置服务启动模式
- 启动服务
- 关闭服务
- 获取默认网关
- 获取CD驱动
- 获取物理磁盘
- 创建防火墙规则
- 删除防火墙规则
更多推荐


所有评论(0)