#foreach #terraform
#инструкция foreach #терраформирование
Вопрос:
В настоящее время я занимаюсь небольшим рефакторингом нашей инфраструктуры. Моя текущая версия моего проекта похожа на следующую: И я пытаюсь использовать for_each для повторного использования переменных.
resource "google_cloud_scheduler_job" "job" { name = "Create_All_Dossier_Summary" description = "desc1" schedule = "0 19 * * 1" time_zone = "America/Sao_Paulo" attempt_deadline = "320s" retry_config { retry_count = 1 } http_target { http_method = "POST" uri = "lt;some-urlgt;" } }
И я пытаюсь обновить его до чего-то вроде следующего:
variable "description" { default = ["desc1", "desc 2"] } resource "google_cloud_scheduler_job" "job" { for_each = toset(var.description) name = "Create_All_Dossier_Summary" description = each.value schedule = "0 19 * * 1" time_zone = "America/Sao_Paulo" attempt_deadline = "320s" retry_config { retry_count = 1 } http_target { http_method = "POST" uri = "lt;some-urlgt;" } }
Итак, конфигурация в порядке, но после запуска terraform plan
terraform уничтожает мою старую , и это не то, что я хотел бы, чтобы terraform делал, я стремился, чтобы он просто создал вторую, так как первая уже есть, и конфигурация та же.
Есть ли способ сказать terraform, чтобы он не воссоздавал этот первый ресурс после выполнения этого рефакторинга?
Plan: 2 to add, 0 to change, 1 to destroy. # google_cloud_scheduler_job.job will be destroyed # google_cloud_scheduler_job.job["desc 2"] will be created # google_cloud_scheduler_job.job["desc1"] will be created
Кстати: Я пытаюсь использовать список объектов, я использовал список строк здесь, потому что это проще продемонстрировать.
Ответ №1:
Когда пространство имен/адрес ресурса изменяется в конфигурации Terraform, вы должны переименовать его соответствующий идентификатор в состоянии с state mv
помощью подкоманды:
terraform state mv google_cloud_scheduler_job.job 'google_cloud_scheduler_job.job["desc 2"]'
Обратите внимание, что второй адрес ресурса должен быть полностью приведен в виде буквальной строки, чтобы оболочка правильно интерпретировала его как аргумент из-за использования "
в синтаксисе.
Комментарии:
1. Так просто и так полезно, хе-хе, спасибо