Назад | Перейти на главную страницу

Могу ли я добавить вывод в модуль Terraform, который уже существует в состоянии?

Я работаю над импортом некоторой существующей инфраструктуры в Terraform (точнее, репозитории и команды Github).

Мои ресурсы Terraform основаны на повторно используемых модулях.

Например, у меня есть repo модуль, в который можно передавать вары для создания нового репозитория Github.

У меня есть разные файлы состояний для моих репозиториев и команд. В repo module обращается к удаленному состоянию ресурсов группы, чтобы получить team_id команды, которая владеет этим модулем.

Это требует моего team модуль для создания вывода для каждого team_id.

Для новых репозиториев и команд это хорошо работает.

Однако ресурсы моей прежней команды не были созданы с помощью Terraform. Они были импортированы, поэтому выходы никогда не создавались.

Я не могу понять, как добавить необходимый вывод к каждому из моих team модули. Я пробовал вручную обновить файл terraform.tfstate:

           "outputs": {
                "team_id": {
                    "sensitive": false,
                    "type": "string",
                    "value": "2814777"
                }
            },

Но когда я запускаю команду:

terraform output module.my_team.github_team.team

В ответе говорится, что выходы не определены.

Есть ли рекомендуемый способ добавления выходных значений в модули, если ресурсы, составляющие эти модули, были импортированы, а не созданы с помощью Terraform?

Так что я решил это сам. Фактически вы можете вручную обновить файл состояния, чтобы добавить выходы в модуль. Ключевые моменты:

Когда используешь terraform_remote_state, выходы модуля доступны, только если они существуют в корневом модуле. Вы не можете удаленно ссылаться на вывод в модуле, вложенном в корневой модуль.

Ссылка на выходные данные как на вары не очень интуитивна. Первоначально я пробовал это:

${data.terraform_remote_state.my_teams.outputs.team_a_id.value}

Правильная интерполяция:

${data.terraform_remote_state.my_teams.team_a_id}