cloud-init幾點筆記及centos莫名改hostname問題。

一個奇怪的問題

前幾天在hyper-v上搭一個centos虛擬機。不想一步步地安裝,就用centos官方的 generic cloud-init enabled image搭建了。把網絡配置爲static ip地址,而後發生一個奇怪的現象,不論怎麼改hostname,過一段時間都會自動在hostname後附加一個 .localdomainhtml

改/etc/hostname , 改/etc/network , 改/etc/hosts , 改/etc/resolv.cfg, hostnamectl 都無效。查看日誌終於發現是cloud-init服務在修改hostname。只要阻止cloud-init服務改hostname就行了,可在 /etc/cloud/cloud.cfg.d 的目錄下增長一個配置文件。執行:windows

sudo echo "preserve_hostname: 1" > /etc/cloud/cloud.cfg.d/00_preserve_hostname.cfg

或者另外一個辦法,把 /etc/cloud/cloud.cfg 配置文件中把一下2行刪掉:centos

- set_hostname
- update_hostname

注:cloud-init的0.7.9版的changelog中提到一條:服務器

set_hostname: avoid erroneously appending domain to fqdn 。 可能做爲bug修復掉了吧[centos 7目前(2017/7/18)使用的是0.7.5版]網絡

cloud-init文檔閱讀筆記

對cloud-init一直都比較模糊,只知道和openstack之類的雲服務平臺有關。之前下載來的虛擬機雲映像文件,不知道登入密碼,搜索的時候總有高手神祕的說一句 #cloud-cofig 啥啥啥的,然而具體怎麼搞,一頭霧水。偶只想搭個服務器,不想搞雲平臺,偶的笨辦法就是掛載映像文件,而後操做映像裏的文件-_-!!!app

好吧,解決此次問題,仍是閱讀了一下cloud-init的文檔,同時記點筆記。dom

  1. cloud-init是個服務,裝在guest os裏,guest os在啓動的時候,對虛擬機進行必要的初始化,例如修改密碼,修改配置等等。
  2. cloud-init初始化虛擬機一個必要的事項就是如何拿到初始化的配置數據。提供配置數據的服務方叫datasource。根據不一樣的雲服務平臺,openstack, amz, azure等,cloud-init實現了不一樣的數據源。例如config driver數據源,就是生成一個磁盤映像,虛擬機啓動時cloud-init尋找特定的文件系統,找到後獲取配置數據,進行初始化。
  3. 數據源裏的配置數據分爲meta-data和user-data。meta-data主要是雲服務平臺要用的配置,例如 server name, instance id;user-data則是由用戶定義的虛擬機相關的配置,腳本等。
  4. 對於非雲平臺的狀況,cloud-init提供一種datasource,叫NoCloud。藉助NoCloud,cloud-init可也初始化虛擬機。NoCloud有點像config driver,然而更簡單。配置文件放在一個vfat或iso9660文件系統上,文件系統的lable必須是cidata。
  5. cloud-init服務,在systemd裏有一個generator,會自動的判斷是否啓動cloud-init服務。因此普通的systemctl disable是不能中止cloud-init服務。0.7.7以上版本提供一個簡單辦法,放一個文件 /etc/cloud/cloud-init.disabled,就可阻止cloud-init。

centos虛擬機雲映像怎麼改登入密碼的方法來了:D

  1. 建立2個文件,user-data和meta-data。
/user-data
/meta-data
  1. user-data文件內容:
#cloud-config
 password: passw0rd
 chpasswd: { expire: False }
 ssh_pwauth: True
  1. meta-data文件內容。虛擬機實例id爲iid-local01,hostname設爲cloudimg. 虛擬機根據instance-id判斷該實例是不是第一次啓動。大部分的配置數據只在第一次啓動時初始化。
instance-id: iid-local01
local-hostname: cloudimg
  1. 製做一個iso光盤映像,在windows下,我使用mkisofs.exe,ultraiso之類的也應該能夠。seed.iso爲建立的iso光盤映像文件名。
mkisofs.exe -r -R -J -l -L -V cidata -o seed.iso meta-data user-data
  1. 把seed.iso掛載到虛擬機光盤裏。啓動虛擬機,cloud-init就會自動修改密碼了。
相關文章
相關標籤/搜索