RHEL Atomic Host 初始配置文件cloud-init說明

Red Hat Enterprise Linux Atomic Host使用cloud-init在安裝和首次啓動期間配置系統。最初開發Cloud-init是爲了提供雲實例的早期初始化。在Red Hat Enterprise Linux Atomic Host中,它還可用於虛擬機安裝。

cloud-init使用的文件是YAML格式的文件。

注意:cloud-init僅在第一次啓動計算機時運行。如果cloud-init由於文件中的語法錯誤或者缺少必需的指令(例如用戶憑據)而失敗,則必須重新創建並啓動新實例。一個啓動失敗的實例將無法正常工作。

以下是如何使用cloud-init執行常見任務的一些示例。

1.如何使用cloud-init創建用戶?

要使用cloud-init創建用戶,您必須創建兩個文件:meta-data和user-data,然後將它們打包到ISO映像中。

創建一個目錄:

$ mkdir cloudinitiso
$ cd cloudinitiso

創建一個名爲meta-data的文件,添加以下內容

instance-id: Atomic0
local-hostname: atomic-00

創建一個名爲user-data的文件,添加以下內容

#cloud-config
password: atomic
chpasswd: {expire: False}
ssh_pwauth: True
ssh_authorized_keys:
  - ssh-rsa AAA...SDvZ [email protected]

上面的user-data文件的最後一行是SSH公鑰。SSH公鑰可以在〜/ .ssh / id_rsa.pub中找到。

創建包含meta-data 和user-data的ISO映像

# genisoimage -output atomic0cidata.iso -volid cidata -joliet -rock user-data meta-data

生成 名爲atomic0cidata.iso的文件。將此文件附加到您計劃安裝Red Hat Enterprise Linux Atomic Host的計算機上,您的用戶名將爲“cloud-user”,密碼將爲“atomic”。

2.如何使用戶首次登錄時必須更改密碼?

強制“cloud-user”在第一次登錄時更改其密碼,將user-data文件中的chpasswd: {expire: False}改爲chpasswd: {expire: True}。這是一個全局設置。如果將此項設置爲True,則所有創建的用戶都必須更改其密碼。

#cloud-config
password: atomic
chpasswd: {expire: True}
ssh_pwauth: True
ssh_authorized_keys:
  - ssh-rsa AAA...SDvz [email protected]
  - ssh-rsa AAB...QTuo [email protected]

3.如何更改默認用戶名?

要將默認用戶名從cloud-user更改爲其他用戶,請將user: username添加到用戶數據文件中:

#cloud-config
user: username
password: atomic
chpasswd: {expire: False}
ssh_pwauth: True
ssh_authorized_keys:
  - ssh-rsa AAA...SDvz [email protected]
  - ssh-rsa AAB...QTuo [email protected]

4.如何設置root密碼?

要設置root密碼,必須在user-data文件的chpasswd部分中創建用戶列表。列表的格式如下所示。空格很重要,因此不要在冒號(:)的任何一側包含任何空格,因爲它會設置一個帶有空格的密碼。如果使用此方法設置用戶密碼,則必須在此部分中設置所有密碼。這意味着password:必須從頂部移動到此部分。

#cloud-config
ssh_pwauth: True
ssh_authorized_keys:
  - ssh-rsa AAA...SDvz [email protected]
  - ssh-rsa AAB...QTuo [email protected]
chpasswd:
  list: |
     root:password
     cloud-user:atomic
  expire: False

5.如何添加更多用戶?

在user-data文件的users部分中創建和描述用戶。添加此部分也需要在此處設置默認用戶的選項。

如果users部分中的第一個條目是default默認用戶,則將與其他用戶一起創建cloud-user。如果省略默認行,則不會創建cloud-user。默認情況下,如果沒有selinux-user值,用戶將被標記爲unconfined_u

#cloud-config
users:
  - default
  - name: foobar
    gecos: User N. Ame
    selinux-user: staff_u
    groups: users,wheel
    ssh_pwauth: True
    ssh_authorized_keys:
      - ssh-rsa AA..vz [email protected]
chpasswd:
  list: |
    root:password
    cloud-user:atomic
    foobar:foobar
  expire: False

6.如何運行第一個啓動命令?

user-data文件 的runcmd和bootcmd部分可用於在啓動和初始化期間執行任意命令。該部分在inti過程的早期運行,在init結束時執行。這些命令不會保存用於將來的引導,只會在第一次初始化引導期間執行。

#cloud-config
users:
  - default
  - name: foobar
    gecos: User N. Ame
    groups: users
chpasswd:
  list: |
    root:password
    fedora:atomic
    foobar:foobar
  expire: False
bootcmd:
 - echo New MOTD >> /etc/motd
runcmd:
 - echo New MOTD2 >> /etc/motd

7.如何添加額外的sudoers?

通過向user-data文件的users部分添加sudo和groups條目,可以將用戶配置爲sudoer,如下所示。

#cloud-config
users:
  - default
  - name: foobar
    gecos: User D. Two
    sudo: ["ALL=(ALL) NOPASSWD:ALL"]
    groups: wheel,adm,systemd-journal
    ssh_pwauth: True
    ssh_authorized_keys:
      - ssh-rsa AA...vz [email protected]
chpasswd:
  list: |
    root:password
    cloud-user:atomic
    foobar:foobar
  expire: False

8.如何設置靜態網絡配置?

將一個network-interfaces部分添加到meta-data文件中。本節包含常用的網絡配置選項集。

由於cloud-init 中存在當前錯誤,因此不會自動啓動靜態網絡配置。而是默認的DHCP配置保持活動狀態。建議的解決方法是通過bootcmd指令手動停止和重新啓動網絡接口。

network-interfaces: |
  iface eth0 inet static
  address 192.168.1.10
  network 192.168.1.0
  netmask 255.255.255.0
  broadcast 192.168.1.255
  gateway 192.168.1.254
bootcmd:
  - ifdown eth0
  - ifup eth0

9.如何只創建root用戶?

要僅創建root用戶,請在user-data文件的users部分中爲root創建一個條目。

users:
  - name: root
chpasswd:
  list: |
    root:password
  expire: False

您可以爲root用戶設置SSH密鑰,如下所示:

users:
  - name: root
    ssh_pwauth: True
    ssh_authorized_keys:
      - ssh-rsa AA..vz [email protected]

10.如何設置根邏輯卷大小?

要將根邏輯卷的大小設置爲6GB(例如,而不是默認的3GB),請在user-data中使用該指令write_files:

write_files:
  - path: /etc/sysconfig/docker-storage-setup
    permissions: 0644
    owner: root
    content: |
    ROOT_SIZE=6G

11.如何啓用overlay2驅動程序?

overlay2通過容器存儲設置啓用。使用runcmd指令將STORAGE_DRIVER選項更改爲“overlay2”:

runcmd:
  - echo "STORAGE_DRIVER=overlay2" >> /etc/sysconfig/docker-storage-setup
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章