Les fichiers cloud-init sont essentiellement des codes d'amorçage, qui s'exécutent avant chaque démarrage, et peuvent - entre autres - modifier des fichiers, configurer des services, créer des utilisateurs, etc.
Tous les types de droplets ne prennent pas en charge toutes les fonctionnalités de cloud-init, par exemple CoreOS utilise sa propre implémentation, avec un sous-ensemble très limité de valeurs valides.
Pour l'utiliser dans terraform, il vous suffit de fournir le fichier cloud-init lors de la création de 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"
Cela va par exemple créer une droplet, où CoreOS exécutera etcd2 et la flotte au démarrage
Vous pouvez trouver d'autres exemples dans ce référentiel , où je montre comment on peut utiliser ces options de configuration pour configurer des services basés sur des dockers simples sur CoreOS