Как использовать cloud-init с Terraform?

24

Я работаю с Digital Ocean и Terraform и уже могу автоматизировать домен, поддомен, сетевые настройки и хост, но есть раздел под названием, User dataкоторый выглядит так:

Данные пользователя

Описание этого поля говорит Allows the use of Cloud-init to configure your droplet. Оглядываясь вокруг, я нашел документацию .

Мой вопрос: как воспользоваться этим при использовании Terraform ?

Gepser
источник

Ответы:

21

Файлы 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

SztupY
источник
5

Когда вы создаете группу автоматического масштабирования с помощью Terraform, вы можете указать, какие user_dataэкземпляры будут использоваться этой ASG. Документировано здесь - https://www.terraform.io/docs/providers/aws/r/launch_configuration.html#user_data

Вы также можете создать один экземпляр EC2 и предоставить user_dataдля использования - https://www.terraform.io/docs/providers/aws/r/instance.html#user_data

Документация AWS EC2 объясняет, как user_dataпередать cloud-initсервису, который работает в большинстве дистрибутивов Linux, доступных как AMI на AWS - http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html#user- данное облако инициализации

Евгений
источник