Файлы Cloud-init - это, по сути, загрузочные коды, которые запускаются перед каждым запуском и могут, среди прочего, изменять файлы, настраивать службы, создавать пользователей и т. Д.
Не все типы капель поддерживают все функции cloud-init, например, CoreOS использует собственную реализацию с очень ограниченным подмножеством допустимых значений.
Чтобы использовать это в terraform, просто предоставьте файл cloud-init во время создания капли:
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"
Это, например, создаст дроплет, где CoreOS будет запускать etcd2 и запускать флот во время запуска
Вы можете найти еще несколько примеров в этом репозитории , где я покажу, как можно использовать эти параметры конфигурации для настройки некоторых простых сервисов на основе докеров на CoreOS