Cloud-init


cloud-init用於在創建虛擬機時通過元數據服務對虛擬機基本配置,包括常見的主機名,用戶,密碼等等。同時用戶可以通過user_data自定義一些數據對虛擬機進行配置,可以有配置文件cloud-config或者直接給定腳本,支持常見的shell cmd python腳本
 
 
博客
 

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驅動
  • 獲取物理磁盤
  • 創建防火牆規則
  • 刪除防火牆規則
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM