Os arquivos init na nuvem são essencialmente códigos de inicialização, executados antes de cada inicialização e podem - entre outros - modificar arquivos, configurar serviços, criar usuários etc.
Nem todos os tipos de gotículas suportam todas as funcionalidades do cloud-init, por exemplo, o CoreOS usa sua própria implementação, com um subconjunto muito limitado de valores válidos.
Para usar isso em terraform, basta fornecer o arquivo cloud-init durante a criação de gotículas:
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"
Por exemplo, isso criará uma gota, onde o CoreOS executará o etcd2 e a frota durante a inicialização
Você pode encontrar mais alguns exemplos neste repositório , onde mostro como é possível usar essas opções de configuração para configurar alguns serviços baseados em docker simples no CoreOS