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
>修改為:
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)
- 編寫測試腳本
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
待更新
源碼流程說明
- 程序首先判斷操作系統類型,加載對應的模塊
- 加載服務,服務共分為四種:
'cloudbaseinit.metadata.services.httpservice.HttpService', 'cloudbaseinit.metadata.services.configdrive.ConfigDriveService', 'cloudbaseinit.metadata.services.ec2service.EC2Service', 'cloudbaseinit.metadata.services.maasservice.MaaSHttpService'
目前openstack中我們會用第一種,使用http獲取openstack的元數據服務
- 加載插件,插件共分為:
'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驅動
- 獲取物理磁盤
- 創建防火牆規則
- 刪除防火牆規則
