Cloud-init原理


Ubuntu修改主機名后,重啟自動恢復原來的主機名?

這是因為Ubuntu18.10上,默認安裝並啟動了cloud-init, 需要停止它的四個服務進程,才可以使用傳統的方式修改主機名。
  cloud-init: https://cloudinit.readthedocs.io/en/latest/topics/examples.html?highlight=lock-passwd#including-users-and-groups
  這是它的官方幫助文檔中的一篇。
  配置參數參考: https://www.cnblogs.com/gushiren/p/9511234.html
  元數據參考:https://www.cnblogs.com/gushiren/p/9511500.html
  使用示例參考: https://www.cnblogs.com/gushiren/p/9511570.html
        https://www.cnblogs.com/gushiren/p/9511593.html
  cloud-init簡介:
    它是為解決雲環境中,對新建虛擬機的初始化配置問題,所提供的一個解決方案,若你的非雲環境,完全可以關閉它。

  它能做什么?
    它可以通過元數據服務來為批量創建的虛擬機設置主機名,配置創建什么用戶,用戶的密碼,設置root是否能ssh登錄,配置啟動VM時,安裝什么軟件,以及執行什么腳本,甚至磁盤如何分區,分多大,格式化為什么文件系統,是否可自動增長等等,它都可以通過定義配置文件來實現。

  它的基本工作原理:
  local階段:
    首先cloud-init-local 服務在開機時,最先啟動,它會試圖從元數據服務哪里獲取IP的配置信息,若沒有找到IP信息,就設置為dhcp自動獲取IP,需要注意: 元數據服務有很多種,似乎每個廠家的規則還不太相同,這個不是很確定,具體有哪些元數據服務可用,可查看 dpkg-reconfigure cloud-init 這是Ubuntu或Debian系統中的查看方法,其它還需自行查詢。在ubuntu上,默認啟用了所有元數據服務,若你是VMware安裝的Ubuntu虛擬機,那默認將使用本地的元數據服務,即/var/lib/cloud/seed/ 下面的本地磁盤文件來存儲安裝系統時,根據你的設置,自動生成的元數據配置文件信息。
  init, config, 和 final階段:
    接着根據/etc/cloud/cloud.cfg 定義的,此三個階段分別要執行的任務,其中每個任務都是以模塊(module)形式設置的。
    虛擬機啟動時 ,所有定制化項目都可在這三個階段設置,但每個配置項,具體要做什么,就是由metadata(元數據)來決定了。
    如: cloud.cfg 中指定了 set_hostname 這個 module,則意味着 cloud-int 會設置 instance(虛擬機) 的主機名,而具體設置成哪個主機名則由 metadata 中 hostname 參數決定。

關於其元數據配置文件:
root@zcf:~# cat /var/lib/cloud/seed/nocloud-net/user-data
#cloud-config          #凡是用戶自定義的cloud-init的配置文件,必須以#cloud-config開頭,這是cloud-init識別它的方式。
   growpart: {mode: 'off'}    #這些配置信息的含義 在上面給出的官方連接中都有介紹,這里就不多說了。
      hostname: zcf        #另外,在OpenStack中,你創建VM時,可直接在啟動VM時,給其傳遞執行腳本處,寫這些信息,也是可別cloud-init識別的。
      locale: en_US.UTF-8
      resize_rootfs: false
     users:
  - gecos: zcf
    groups: [adm, cdrom, dip, plugdev, sudo]
    lock-passwd: false
    name: zcf
    passwd: $6$221/i.......m6G/
    shell: /bin/bash

非雲環境的Ubuntu主機如何關閉Cloud-init:
  systemctl disable cloud-init-local cloud-init cloud-config cloud-final
  systemctl stop cloud-init-local cloud-init cloud-config cloud-final

 


免責聲明!

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



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