Bagaimana cara menggunakan cloud-init dengan Terraform?

24

Saya bekerja dengan Digital Ocean dan Terraform dan saya sudah dapat mengotomatiskan domain, subdomain, preferensi jaringan, dan tuan rumah, tetapi ada bagian yang disebut User dataseperti ini:

Data pengguna

Deskripsi bidang itu mengatakan Allows the use of Cloud-init to configure your droplet. Melihat sekeliling saya menemukan dokumentasi .

Pertanyaan saya adalah, bagaimana cara memanfaatkan ini saat menggunakan Terraform ?

Gepser
sumber

Jawaban:

21

File cloud-init pada dasarnya adalah kode bootstrap, yang dijalankan sebelum setiap startup, dan dapat - antara lain - memodifikasi file, mengatur layanan, membuat pengguna, dll.

Tidak semua jenis tetesan mendukung semua fungsi cloud-init, misalnya CoreOS menggunakan implementasinya sendiri, dengan subset nilai valid yang sangat terbatas.

Untuk menggunakan ini dalam terraform, cukup berikan file cloud-init selama pembuatan droplet:

main.tf:

resource "digitalocean_droplet" "web" {
  image              = "coreos-stable"
  name               = "web"
  region             = "lon1"
  size               = "2gb"
  private_networking = true
  ssh_keys           = ["${digitalocean_ssh_key.dodemo.id}"]
  user_data          = "${file("web.conf")}"
}

web.conf:

#cloud-config
coreos:
  units:
    - name: "etcd2.service"
      command: "start"
    - name: "fleet.service"
      command: "start"

Ini misalnya akan membuat tetesan, di mana CoreOS akan menjalankan etcd2 dan armada selama startup

Anda dapat menemukan beberapa contoh lagi di repositori ini , di mana saya menunjukkan bagaimana seseorang dapat menggunakan opsi konfigurasi ini untuk mengatur beberapa layanan berbasis buruh pelabuhan sederhana di CoreOS

SztupY
sumber
5

Saat Anda membuat grup Penskalaan Otomatis dengan Terraform, Anda dapat menentukan yang user_dataakan digunakan oleh instance yang dibuat oleh ASG ini. Didokumentasikan di sini - https://www.terraform.io/docs/providers/aws/r/launch_configuration.html#user_data

Anda juga dapat membuat satu instance EC2, dan menyediakan user_datauntuk digunakan - https://www.terraform.io/docs/providers/aws/r/instance.html#user_data

Dokumentasi AWS EC2 menjelaskan bagaimana user_dataditeruskan ke cloud-initlayanan yang berjalan di sebagian besar distribusi Linux yang tersedia sebagai AMI di AWS - http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html#user- data-cloud-init

Evgeny
sumber