cloud

本節介紹幾個 cloud-init 的典型應用:設置 hostanme,設置用戶初始密碼,安裝軟件。 python

設置 hostname

cloud-init 默認會將 instance 的名字設置爲 hostname。但這樣不太方便,有時但願可以將兩者分開,可利用 cloud-init 的set_hostname 模塊實現。set_hostname 它會查詢 metadata 中 hostname 信息,默認值就是 instance 的名字。咱們能夠指定本身的 hostname,方法是將下面的內容傳給 cloud-init:ubuntu

#cloud-configpython2.7

hostname: my1.cloudman.ccssh

manage_etc_hosts: true工具

 

說明以下:

pwa

  1. cloud-init 只會讀取以 #cloud-config 開頭的數據,因此這一行必定要寫對。命令行

  2. hostname: my1.cloudman.cc 告訴 cloud-init 將 hostname 設置爲 my1.cloudman.cc。debug

  3. manage_etc_hosts: true 告訴 cloud-init 更新 /etc/hosts 文件。code

接下來的問題是:如何將這些信息傳給 cloud-init?server

有三幾種方法:

① instance 部署時,直接將其粘貼到 Customization Script 輸入框中。

② 將其保存爲文件,instance 部署時上傳(上圖 ② 所示)。

③ 將其保存爲文件,命令行 nova boot 或者 openstack server create 部署 instance 時,使用參數 --user-data 傳入。

部署成功後,hostname 正確設置,/etc/hosts 也相應更新。

定製用戶初始密碼

官方的 cloud image 默認只能經過 ssh key 登陸。咱們能夠利用set-passwords 模塊爲用戶設置密碼並啓用密碼登陸。須要傳入的腳本以下:

#cloud-config

chpasswd:

   list: |

       root:123456

       ubuntu:123456

   expire: false

ssh_pwauth: true

 

說明以下:

  1. root 和 ubuntu 用戶密碼設置爲 123456。

  2. ssh_pwauth 啓用密碼登陸。

instance 啓動後 ssh 驗證:

ubuntu 用戶 ssh 密碼登陸成功,而且可經過密碼切換到 root。

安裝軟件

標準鏡像中不可能包含咱們須要的全部軟件,定製安裝是不可避免的。一個辦法是部署完後手動安裝,另外一個辦法是經過 package-update-upgrade-install 模塊讓 cloud-init 自動爲咱們安裝。

須要傳入的腳本以下:

#cloud-config

apt:

 primary:

   - arches: [default]

     search:

       - http://1.2.3.4

 

packages:

- pwgen

- pastebinit

- [libpython2.7, 2.7.3-0ubuntu3.1]

 

因爲 http://1.2.3.4 不是一個有效的 apt 源,安裝確定會失敗,咱們能夠在 /var/log/cloud-init.log 看到失敗的信息。

雖然失敗了,但咱們至少能夠肯定以下事情:

  1. 傳入的腳本是有效的,cloud-init 確實在嘗試安裝指定的軟件。

  2. /var/log/cloud-init.log 會完整地記錄 cloud-init 運行的全部細節,是 debug 最重要的工具。

cloud-init 的模塊衆多,功能很全,是實現 instance 定製的神器。因爲篇幅所限,這裏只討論了幾個典型用例。更多用法以及示例可參看 https://cloudinit.readthedocs.io

關於 Metadata 和 cloud-init 的主題就討論到這裏,下一次咱們將開始新的教程 《天天5分鐘玩轉容器技術》,敬請期待。

相關文章
相關標籤/搜索