操作場景
Cloud-Init工具安裝完成后,請參考本節操作配置Cloud-Init工具。
前提條件
-
已安裝Cloud-Init工具。
-
已為云主機綁定彈性公網IP。
-
已登錄云主機。
-
云主機的網卡屬性為DHCP方式。
配置步驟說明
包含如下兩步操作:
1.配置Cloud-Init工具。
具體操作請參考配置Cloud-Init工具。
2.檢查Cloud-Init工具相關配置是否成功。
具體操作請參考檢查Cloud-Init工具相關配置是否成功。
配置Cloud-Init工具
1.用戶可以根據需要根據用戶類型配置登錄云主機的用戶權限。使用root賬戶登錄,需要開啟root用戶的ssh權限,并開啟密碼遠程登錄。
?若用戶選擇注入密碼,則通過自己注入的密碼進行遠程SSH或noVNC登錄。
?若用戶選擇注入密鑰,則通過自己注入的密鑰進行遠程SSH登錄。
2.設置開放root密碼遠程登錄并開啟root用戶的ssh權限。
以CentOS 6.7系列操作系統為例,在“/etc/cloud/cloud.cfg”設置“disable_root”值為“0”表示不禁用(部分OS的Cloud-Init配置使用“true”表示禁用,“false”表示不禁用),設置“ssh_pwauth”為“1”啟用密碼遠程登錄,“lock_passwd”設置為“False”表示不鎖住用戶密碼。
users:
- name: root
lock_passwd: False
disable_root: 0
ssh_pwauth: 1
3.在配置文件“/etc/cloud/cloud.cfg”中禁用Cloud-Init接管網絡。
當Cloud-Init版本等于或高于0.7.9版本時,在配置文件“/etc/cloud/cloud.cfg”中增加如下內容,禁用Cloud-Init接管網絡。
說明:
增加的內容需嚴格按照yaml格式進行配置。
圖 禁用Cloud-Init接管網絡

4.配置agent訪問OpenStack數據源。
在“/etc/cloud/cloud.cfg”最后一行添加如下內容,配置agent訪問OpenStack數據源。
datasource_list: [ OpenStack ]
datasource:
OpenStack:
metadata_urls: ['//169.254.169.254']
max_wait: 120
timeout: 5
apply_network_config: false
說明:
max_wait和timeout可由用戶自定義是否需要配置,上述回顯信息中max_wait和timeout的取值僅供參考。
當操作系統版本低于Debian8、CentOS 5時,不支持配置agent訪問OpenStack數據源。
CentOS、EulerOS操作系統云主機必須要禁用默認的zeroconf路由,以便精確訪問OpenStack數據源。
echo "NOZEROCONF=yes" >> /etc/sysconfig/network
apply_network_config: false為可選項,對于使用Cloud-Init 18.3及以上版本的用戶,需添加此配置項。
5.在配置文件“/etc/cloud/cloud.cfg”中補充如下內容。
manage_etc_hosts: localhost
防止啟動云主機時,系統長時間卡在“Waiting for cloudResetPwdAgent”狀態。
圖 新增manage_etc_hosts: localhost

6.執行vi /etc/ssh/sshd_config命令,在vi編輯器中打開“/etc/ssh/sshd_config”。
將“sshd_config”中的“PasswordAuthentication”的值修改為“yes”。
說明:
如果是SUSE和openSUSE操作系統,需要同時配置“sshd_config”文件中的以下兩個參數為“yes”。
PasswordAuthentication
ChallengeResponseAuthentication
7.修改配置文件“cloud_init_modules”。
-
將ssh從最后提前到第一位處理,提高云主機ssh登錄速度。
-
開啟機器名更新機制,請勿注釋或刪除“ - update_hostname”語句。
-
cloud_init_modules:
-
- ssh
-
- migrator
-
- bootcmd
-
- write-files
-
- growpart
-
- resizefs
-
- set_hostname
-
-?update_hostname
-
- update_etc_hosts
-
- rsyslog
-
- users-groups
8.修改以下配置使得鏡像創建的云主機主機名不帶“.novalocal”后綴且主機名稱中可以帶點號。
a.執行如下命令,修改“init.py”文件。
vi /usr/lib/python*.*/site-packages/cloudinit/sources/__init__.py
不同OS安裝的python版本有差異,請選擇對應的路徑。
按“i”進入編輯模式,根據關鍵字toks查詢,修改內容如下信息所示。
if toks:
toks = str(toks).split('.')
else:
#toks = ["ip-%s" % lhost.replace(".", "-")] #屏蔽此行
toks = lhost.split(".novalocal") #增加此行
if len(toks) > 1:
hostname = toks[0]
#domain = '.'.join(toks[1:]) #屏蔽此行
else:
hostname = toks[0]
if fqdn and domain != defdomain:
#return hostname #屏蔽此行
return "%s.%s" % (hostname, domain) #增加此行
else:
return hostname
修改完成后按“ESC”退出編輯模式,輸入:wq!保存并退出。
b.執行如下命令進入“cloudinit/sources”文件夾。
cd /usr/lib/python*.*/site-packages/cloudinit/sources/
不同OS安裝的python版本有差異,請選擇對應的路徑。
c.執行如下命令,刪除“init.pyc”文件和優化編譯后的“init.pyo”文件。
rm -rf __init__.pyc
rm -rf __init__.pyo
d.執行如下命令,清理日志信息。
rm -rf /var/lib/cloud/*
rm -rf /var/log/cloud-init*
9.執行以下命令編輯Cloud-Init日志輸出路徑配置文件,設置日志處理方式handlers,建議配置為cloudLogHandler。
vim /etc/cloud/cloud.cfg.d/05_logging.cfg
[logger_cloudinit]
level=DEBUG
qualname=cloudinit
handlers=cloudLogHandler
propagate=1
10.確保刪除鏡像模板中已經存在的linux帳戶和“/home/linux”目錄。
userdel linux
rm -fr /home/linux
檢查Cloud-Init工具相關配置是否成功
執行以下命令,無錯誤發生,說明Cloud-Init配置成功。
cloud-init init --local
正確安裝的Cloud-Init會顯示Cloud-Init的版本詳細信息,并且無任何錯誤信息。例如,正確安裝的情況下,不含有缺少文件的提示信息。
說明:
執行如下命令,可將系統用戶密碼有效期設置為最大。此操作可選。
chage -M 99999 $user_name
其中,user_name為系統用戶,例如root賬戶。
密碼有效期建議設置為99999。