Я работаю над импортом некоторой существующей инфраструктуры в 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}