安裝Cloud-Init FAQ
Cloud-init能做什么
cloud-init是一款用于初始化云主機的工具,它擁有豐富的模塊,能夠為云主機提供的能力有:初始化密碼、擴容根分區、設置主機名、注入公鑰、執行自定義腳本等等,功能十分強大。
安裝cloud-init
檢查是否已經安裝Cloud-Init工具
不同的操作系統,命令不同,以centos為例,執行以下命令查看系統是否已經安裝cloud-init:
rpm -qa | grep cloud-init
安裝cloud-init
無明確版本要求,建議安裝系統源上的版本(若采用舊有編譯安裝,則建議在大更改時重做為系統源版本):
采用以下命令安裝:
yum install cloud-init cloud-utils-growpart -y
配置cloud-init
默認的cloud.cfg配置文件/etc/cloud/cloud.cfg修改如下(不同操作系統會有不同,根據實際情況來定需要設置的值):
- 確定參數值如下:true/True/1, false/False/0 均可
disable_root: false
ssh_pwauth: true
ssh_deletekeys: false
preserve_hostname: false
- 若 cloud-init 版本 >= 21.1(參考 cloud-init -v)
在配置文件中,preserver_hostname: false 另起一行(或保證縮進同級即可),加上
Prefer_fqdn_over_hostname: true
- 若 cloud-init 版本 < 21.1
修改 cloudinit python 包源碼 cloudinit/distros/ init .py,將:
def_select_hostname (self,hostname,fqdn) :
# Prefer the short hostname over the long
# fully qualified domain nameif not hostname:
return fqdn
return hostname
替換為:
def_select_hostname (self, hostname, fgdn) :
if fqdn:
return fqdn
return hostname
說明修改配置或代碼都是為了優先使用?fqdn 從而避免像 AAA.bbb 這樣的 hostname“截斷”成 AAA 的問題。確保輸入 hostname 命令顯示的是 AAA.bbb 非“截斷”主機名即可,因系統限制在終端顯示的 root@AAA 可忽略。
- 模塊包括如下內容(建議參考修改)
cloud_init_modules:
- migrator
- seed random
- bootcmd
- write-files
- growpart
- resizefs
- disk setup
- mounts
- set hostname
- update hostname
- update etc hosts
- ca-certs
- rsyslog
- users-groups
- ssh
- 修改system_info部分,distro內容不做修改
distro內容不做修改
default_user:默認用戶名改為root,lock_passwd 改為False
其余部分涉及系統 yum/apt 源的更改,建議遵循“系統其他配置修改”,保留系統默認,去除 cloud-init 配置
system_info下其余內容不做修改
system_info:
# This will affect which distro class gets used
distro: openEuler
# Default user name + that default users groups (if added/used)
default user:
name: root
lock_passwd: False
- 添加 datasource_list 和 datasource 部分,禁用網絡托管。
datasource_list: [ ConfigDrive,OpenStack ]
datasource:
ConfigDrive:
dsmode: local
OpenStack:
metadata_urls:["//169.254.169.254"]
max_wait: 120
timeout: 10
retries: 5
network:
config: disabled
云主機安裝Cloud-Init可以做什么?
cloud-init是一款用于初始化云主機的工具,它擁有豐富的模塊,能夠為云主機提供的能力有:初始化密碼、擴容根分區、設置主機名、注入公鑰、執行自定義腳本等等,功能十分強大。
安裝NetworkManager后,使用Cloud-Init注入密鑰或密碼失敗怎么辦?
如果在安裝了NetworkManager后使用Cloud-Init注入密鑰或密碼失敗,可能是因為Cloud-Init的版本與NetworkManager不兼容所致,特別是在Debian 9.0及以上版本中可能會出現兼容性問題。以下是處理此問題的方法:
- 卸載當前版本的Cloud-Init: 首先,您需要卸載當前安裝的Cloud-Init版本。
- 安裝較舊版本的Cloud-Init: 安裝Cloud-Init的0.7.6版本或更早的版本。這些較舊的版本可能與NetworkManager兼容性更好。
如何安裝Cloudbase-Init工具?
- 根據Windows操作系統的不同位數,您需要在下載所需版本的Cloudbase-Init工具安裝包。
- 打開Cloudbase-Init工具安裝包開始安裝。
- 單擊“Next”。
- 勾選“I accept the terms in the License Agreement”,單擊“Next”。
- 使用Cloudbase-Init默認安裝路徑進行安裝,單擊“Next”。
- 在“Configuration options”窗口中,設置用戶名為“Administrator”,日志輸出串口選擇“COM1”,且不勾選“Run Cloudbase-Init service as LocalSystem”。
- 單擊“Next”。
- 單擊“Install”。
- 在“Files in Use”窗口保留默認勾選“Close the application and attempt to restart them”,單擊“OK”。
- 單擊“Finish”。
如何配置Cloudbase-Init工具?
- 打開 Windows 實例,登錄到管理員賬戶。
- 打開安裝目錄。例如:“C:\Program Files (x86)\Cloudbase Solutions\Cloudbase-Init\conf”。
- 復制“cloudbase-init-unattend.conf.sample”文件并重命名為“cloudbase-init.conf”。
- 使用文本編輯器(如記事本)打開 “cloudbase-init.conf”。
- 修改或添加配置項來適配您的需求。以下是一些常見配置項:
- username: 指定默認用戶名。
- password: 指定默認密碼。
- ssh_user: 指定用于 SSH 訪問的用戶名,如果需要的話。
- ssh_public_key: 指定用于 SSH 訪問的公鑰,如果需要的話。
- metadata_services: 指定獲取元數據的服務,如 openstack 或 cloudbase-init.
- network_adapter: 指定要進行網絡配置的適配器名稱。
- ntp_use_vm_logical_clock: 是否使用虛擬機的邏輯時鐘作為 NTP 時鐘源。
- 保存并關閉配置文件。
- 打開命令提示符,切換到 Cloudbase-Init 的安裝目錄。
- 運行以下命令啟動 Cloudbase-Init:
cloudbase-init.exe --config-file cloudbase-init.conf
Cloudbase-Init 將讀取配置文件并執行初始化操作,根據您的配置來自定義 Windows 實例。
- 部分配置可能需要實例重啟才能生效。您可以使用 Windows 的重新啟動選項來完成這一步驟。
SUSE 11 SP4如何安裝growpart?
操作場景
SUSE/openSUSE系列growpart工具是獨立的工具包,不是以“cloud-*”開頭。請參考以下步驟安裝growpart工具。
操作步驟
- 使用以下命令檢查是否已安裝cloud-init和growpart:
rpm -qa | grep cloud-init
rpm -qa | grep growpart
- 如果已安裝,請使用以下命令卸載已安裝的cloud-init和growpart:
zypper remove cloud-init growpart
- 清理殘留文件。
rm -fr /etc/cloud/*
rm -fr /var/lib/cloud/*
- 執行以下命令安裝growpart。
zypper install //download.opensuse.org/repositories/home:/garloff:/OTC:/cloudinit/SLE_11_SP4/noarch/growpart-0.27-1.1.noarch.rpm
- 執行以下命令安裝python-oauth。
zypper install //download.opensuse.org/repositories/home:/garloff:/OTC:/cloudinit/SLE_11_SP4/x86_64/python-oauth-1.0.1-35.1.x86_64.rpm
- 執行以下命令安裝cloud-init。
zypper install //download.opensuse.org/repositories/home:/garloff:/OTC:/cloudinit/SLE_11_SP4/x86_64/cloud-init-0.7.6-27.23.1.x86_64.rpm
- 使用以下命令檢查growpart、python-oauth和cloud-init是否安裝成功:
rpm -qa | grep growpart
rpm -qa | grep python-oauth
rpm -qa | grep cloud-init
- 配置服務開機啟動:
chkconfig cloud-init-local on
chkconfig cloud-init on
chkconfig cloud-config on
chkconfig cloud-final on