Мы используем Terraform для кодификации всей нашей инфраструктуры на AWS.Мы используем Gitlab для SCM и Gitlab-Runner для CI / CD.Мы также начали использовать Atlantis , чтобы мы могли автоматически запускать все наши Terraform в запросах на получение.
Поставщик Terraform, который мы настроили в коде, выглядит примерно так:
provider "aws" {
region = "us-east-1"
assume_role {
role_arn = "arn:aws:iam::123456789012:role/atlantis"
session_name = "terraform"
}
}
Экземпляр Gitlab-Runner, на котором работает Atlantis, имеет разрешения для принятия роли «atlantis», на которую ссылается блок assume_role
.И все это прекрасно работает.
Однако бывают случаи, когда мне все еще нужно запускать Terraform вручную из командной строки.Проблема в том, что когда я это делаю, моя учетная запись (которая настроена как федеративная / SAML-регистрация) не может принимать роли.Однако у него есть доступ ко всему, что связано с созданием и уничтожением ресурсов.
Это означает, что мне нужно временно удалить указанный выше блок assume_role
на моем локальном компьютере, а затем запустить мои команды Terraform.Это не конец света, но это немного раздражает.Я хочу сделать что-то вроде: создать второго провайдера "aws" - тот, который не не пытается взять на себя другую роль - как это:
provider "aws" {
region = "us-east-1"
alias = "local-cli"
}
А потом я 'буду называть что-то вроде terraform plan --provider=local-cli
.Но, к сожалению, такой опции --provider
нет;Я только что сделал это сейчас. Согласно документации Terraform , похоже, что я могу настроить второго поставщика на для каждого ресурса , но на самом деле я пытаюсь запустить Terraform со вторым за сеанс .Есть ли какие-то решения для этого?