Создать учетную запись хранилища Azure и контейнер перед запуском terraform init? - PullRequest
0 голосов
/ 07 сентября 2018

Поправьте меня, если я ошибаюсь, когда вы запускаете terraform init, вас попросят назвать учетную запись хранения и контейнер для состояния terraform.

Можно ли это также автоматически сделать с помощью terraform?

Редактировать: я использую Azure.

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Я обычно делю свои конфигурации терраформ на две части.

Тот, который создает учетную запись хранения с контейнером с определенным тегом (например, tf=backend). Второй, который создает все остальные ресурсы. Я разделяю backend.tfvars между двумя, а во втором я получаю ключ учетной записи хранения, используя Azure CLI и ранее установленный тег (таким образом мне не нужно получать ключ и передавать его вручную моему второму сценарию ).

Вы можете даже перенести состояние первой конфигурации terraform после развертывания, если вы не хотите полагаться на локальное состояние

0 голосов
/ 08 сентября 2018

Да, абсолютно. Как правило, вы хотите, чтобы сегмент S3 использовался для каждой из ваших сред, хотя также возможно, чтобы этот сегмент был общим для всех сред, а затем настроить управление доступом с помощью политик сегментов. Не создавайте этот контейнер как часть предоставления других ресурсов, так как его жизненные циклы, вероятно, будут другими (вы хотите сохранить контейнер в течение длительного времени и вряд ли захотите его уничтожить).

Что вы делаете, так это определяете этот сегмент в Terraform, используя сначала локальное состояние. После того, как он создан, вы добавляете удаленный бэкэнд, указывающий на этот сегмент.

terraform {
  required_version = ">= 0.11.7"

  backend "s3" {
    bucket = "my-state-bucket"

    key = "s3_state_bucket"

    region = "us-west-2"

    encrypt = "true"
  }
}

После запуска terraform init Terraform спросит, хотите ли вы перенести файл локального состояния на S3. Ответьте да, и после этого вы можете удалить локальный файл состояния, так как он больше не используется.

Этот подход позволяет вам выйти из сложившейся ситуации и по-прежнему управлять всей своей инфраструктурой как кодом, а не создавать ее вручную с помощью веб-консоли или сценариев bash.

...