จะใช้ cloud-init กับ Terraform ได้อย่างไร?


24

ฉันทำงานกับ Digital Ocean และ Terraform และฉันสามารถทำให้โดเมน, โดเมนย่อย, ค่ากำหนดเครือข่ายและโฮสต์ได้โดยอัตโนมัติ แต่มีส่วนที่เรียกUser dataว่ามีลักษณะดังนี้:

ข้อมูลผู้ใช้

Allows the use of Cloud-init to configure your dropletรายละเอียดของข้อมูลที่ระบุว่า มองไปรอบ ๆ ผมพบว่าเอกสาร

คำถามของฉันคือวิธีการใช้ประโยชน์จากสิ่งนี้ในขณะที่ใช้Terraform ?

คำตอบ:


21

ไฟล์ Cloud-init เป็นรหัสบูตสแตรปซึ่งทำงานก่อนการเริ่มต้นแต่ละครั้งและสามารถแก้ไขไฟล์ตั้งค่าบริการสร้างผู้ใช้เป็นต้น

หยดบางประเภทไม่สนับสนุนฟังก์ชันการทำงานทั้งหมดของ cloud-init ตัวอย่างเช่น CoreOS ใช้การใช้งานของตัวเองโดยมีค่าที่ถูกต้องบางส่วน

หากต้องการใช้สิ่งนี้ใน terraform เพียงระบุไฟล์ cloud-init ระหว่างการสร้าง 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"

ตัวอย่างนี้จะสร้าง droplet โดยที่ CoreOS จะรัน etcd2 และกลุ่มยานพาหนะในระหว่างการเริ่มต้น

คุณสามารถหาตัวอย่างเพิ่มเติมได้ในที่เก็บนี้ซึ่งฉันแสดงวิธีใช้ตัวเลือกการกำหนดค่าเหล่านี้เพื่อตั้งค่าบริการพื้นฐานนักเทียบท่าอย่างง่าย ๆ บน CoreOS


5

เมื่อคุณสร้างกลุ่มการปรับขนาดอัตโนมัติด้วย Terraform คุณสามารถระบุการuser_dataใช้โดยอินสแตนซ์ที่สร้างโดย ASG นี้ จัดทำเอกสารไว้ที่นี่ - https://www.terraform.io/docs/providers/aws/r/launch_configuration.html#user_data

นอกจากนี้คุณยังสามารถสร้างอินสแตนซ์ EC2 เดียวและให้user_dataใช้ - https://www.terraform.io/docs/providers/aws/r/instance.html#user_data

เอกสาร AWS EC2 อธิบายถึงวิธีการuser_dataส่งผ่านไปยังcloud-initบริการที่ทำงานบนการกระจาย Linux ส่วนใหญ่ที่มีอยู่ใน AMS บน AWS - http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html#user- ข้อมูลเมฆ init

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.