Ошибка при настройке Terraform S3 Backend - PullRequest
1 голос
/ 01 апреля 2019

Я настраиваю бэкэнд S3 через terraform для AWS.

terraform {
  backend "s3" {}
}

При предоставлении значений для (S3 backend) имени сегмента, ключа и региона при выполнении команды "terraform init", появляется следующая ошибка

" Ошибка при настройке серверной части" s3 ": для провайдера AWS не найдены действительные источники учетных данных. Дополнительные сведения о предоставлении учетных данных для провайдера AWS см. В https://terraform.io/docs/providers/aws/index.html. Пожалуйста, обновите конфигурацию в ваших файлах Terraform, чтобы исправить эту ошибку затем снова запустите эту команду."

Я объявил доступ и секретные ключи как переменные в provider.tf. Во время выполнения команды «terraform init» он не запрашивал ключ доступа или секретный ключ.

Как решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 03 апреля 2019

Не - добавлять переменные для секретов.Это действительно очень плохая практика, и в ней нет необходимости.

Terraform подберет ваш профиль AWS по умолчанию или использует любой профиль AWS, установленный вами AWS_PROFILE.Если это в AWS, вы должны использовать профиль экземпляра.Роли тоже можно выполнять.

Если вы жестко закодируете профиль в свой tf-код, тогда вы должны иметь одинаковые имена профилей, где бы вы ни захотели запустить этот скрипт, и изменять его для каждой учетной записи, с которой он запускается.

Не - делайте все эти командные вещи, если вы не любите скрипты-обертки или печатаете.Сделайте - добавьте себе remote_state.tf , который выглядит как

terraform {
  backend "s3" {
    bucket         = "WHAT-YOU-CALLED-YOUR-STATEBUCKET"
    key            = "mykey/terraform.tfstate"
    region         = "eu-west-1"
  }
}

сейчас, когда ваш terraform init:

Инициализация бэкэнда ...

Успешно настроен бэкэнд "s3"!Terraform будет автоматически использовать этот бэкэнд, если не изменится конфигурация бэкэнда.

Значения в провайдере не относятся к разрешению для remote_state и могут даже быть разными учетными записями AWS (или даже другим облачным провайдером).

0 голосов
/ 01 апреля 2019

При запуске terraform init необходимо добавить -backend-config параметры для ваших учетных данных (ключи aws).Поэтому ваша команда должна выглядеть так:

terraform init -backend-config="access_key=<your access key>" -backend-config="secret_key=<your secret key>"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...