Come usare cloud-init con Terraform?


24

Sto lavorando con Digital Ocean e Terraform e già posso automatizzare il dominio, il sottodominio, le preferenze di rete e l'host, ma esiste una sezione chiamata User datasimile a questa:

Dati utente

La descrizione di quel campo dice Allows the use of Cloud-init to configure your droplet. Guardandomi intorno ho trovato la documentazione .

La mia domanda è: come trarne vantaggio durante l'utilizzo di Terraform ?

Risposte:


21

I file cloud-init sono essenzialmente codici bootstrap, che vengono eseguiti prima di ogni avvio e possono - tra l'altro - modificare file, impostare servizi, creare utenti, ecc.

Non tutti i tipi di goccioline supportano tutte le funzionalità di cloud-init, ad esempio CoreOS utilizza la propria implementazione, con un sottoinsieme molto limitato di valori validi.

Per usarlo in terraform, è sufficiente fornire il file cloud-init durante la creazione di 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"

Questo, ad esempio, creerà un droplet, in cui CoreOS eseguirà etcd2 e la flotta durante l'avvio

Puoi trovare altri esempi in questo repository , dove mostro come si possono usare queste opzioni di configurazione per impostare alcuni semplici servizi basati su docker su CoreOS


5

Quando si crea un gruppo di ridimensionamento automatico con Terraform, è possibile specificare che user_datadeve essere utilizzato dalle istanze create da questo ASG. Documentato qui - https://www.terraform.io/docs/providers/aws/r/launch_configuration.html#user_data

È inoltre possibile creare una singola istanza EC2 e fornire user_datada utilizzare - https://www.terraform.io/docs/providers/aws/r/instance.html#user_data

La documentazione di AWS EC2 spiega come user_dataviene passato al cloud-initservizio in esecuzione sulla maggior parte delle distribuzioni Linux disponibili come AMI su AWS - http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html#user- dati-cloud-init

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.