Jak korzystać z inicjowania chmury z Terraform?

24

Pracuję z Digital Ocean i Terraform i już mogę zautomatyzować domenę, subdomenę, preferencje sieciowe i hosta, ale istnieje sekcja o nazwie, User dataktóra wygląda następująco:

Dane użytkownika

Opis tego pola mówi Allows the use of Cloud-init to configure your droplet. Rozglądając się, znalazłem dokumentację .

Moje pytanie brzmi: jak to wykorzystać podczas korzystania z Terraform ?

Gepser
źródło

Odpowiedzi:

21

Pliki inicjujące chmurę są zasadniczo kodami rozruchowymi, które są uruchamiane przed każdym uruchomieniem i mogą między innymi modyfikować pliki, konfigurować usługi, tworzyć użytkowników itp.

Nie wszystkie typy kropelek obsługują wszystkie funkcje inicjowania chmury, na przykład CoreOS używa własnej implementacji z bardzo ograniczonym podzbiorem prawidłowych wartości.

Aby użyć tego w terraformie, po prostu podaj plik inicjujący chmurę podczas tworzenia kropli:

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"

Spowoduje to na przykład utworzenie kropli, w której CoreOS uruchomi etcd2 i uruchomi flotę podczas uruchamiania

Możesz znaleźć więcej przykładów w tym repozytorium , gdzie pokazuję, jak można użyć tych opcji konfiguracji do skonfigurowania prostych usług opartych na dokerze w CoreOS

Sztuczki
źródło
5

Podczas tworzenia grupy automatycznego skalowania za pomocą Terraform można określić, user_dataktóre będą używane przez instancje utworzone przez ten ASG. Udokumentowane tutaj - https://www.terraform.io/docs/providers/aws/r/launch_configuration.html#user_data

Możesz także utworzyć pojedynczą instancję EC2 i zapewnić user_datajej użycie - https://www.terraform.io/docs/providers/aws/r/instance.html#user_data

Dokumentacja AWS EC2 wyjaśnia, w jaki sposób user_datajest przekazywana do cloud-initusługi działającej w większości dystrybucji Linuksa dostępnych jako AMI w AWS - http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html#user- inicjacja chmury danych

Evgeny
źródło