iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 12
0
DevOps

今晚我想來點 Terraform 佐 AWS系列 第 12

今晚我想打開神秘的使用者資料

前面我們所使用佈建器 (Provisioner) 的 remote-exec 不怎麼好用,而且 Terraform 無法檢查設定有沒有變動。

aws 有一個叫做使用者資料 (User Data) 的功能,可以輔助我們設定虛擬機。只要在建立機器時傳送使用者資料 (User Data),在執行個體 (instance) 啟動之後就會執行指令。

使用者資料 (User Data)

使用者資料是基於 cloud-init 這個工具在運作的。

cloud-init 是由 Canonical 所發佈的工具。 (就是維護 Ubuntu 的那一家公司)

目的就是要讓雲端虛擬機初始化可以更容易的自動化。目前常見的雲端平台跟多數的 Linux 作業系統都有支援 cloud-init 功能。

使用者資料可以使用 gzip 壓縮,大小通常會有 16384 位元組的上限。支援兩種格式:

  • shell 腳本: 檔案以 #! 開始
  • cloud-int 組態: 檔案以 #cloud-config 開始

以下提供幾個簡單的範例,完整的設定方式請詳閱 Modules - cloud-init

建立使用者

使用 users 建立使用者,並可以設定 sudo 權限,放入公鑰等等。

#cloud-config
users:
  - default
  - name: barfoo
    sudo: ALL=(ALL) NOPASSWD:ALL
    groups: users, admin
    ssh_import_id: None
    lock_passwd: true
    ssh_authorized_keys:
      - <ssh pub key 1>

建立檔案

使用 write_files 把檔案放到目的地。

#cloud-config
write_files:
  - path: /var/www/html/terraform.html
    content: |
      <h1>Provisioning via Terraform</h1>

安裝套件

要更新 apt 套件資料庫的話,要把 package_update 設定為 true

要安裝的套件全部列在 packages 下面。

#cloud-config
package_update: true
packages:
 - nginx
 - git

Reference


上一篇
今晚我想佈建一台網頁伺服器
下一篇
今晚我想透過使用者資料建立一台網頁伺服器
系列文
今晚我想來點 Terraform 佐 AWS30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言