почему террагрунт уничтожает ранее созданные ресурсы

Я организовал наш код terraform, как показано ниже:

     $ tree infrastructure
    infrastructure
    ├── ecr
    │   └── terraform.tfvars
    ├── ecs
    │   ├── ecs-iam.json
    │   └── terraform.tfvars
    └── terraform.tfvars

    2 directories, 4 files
    $cat infrastructure/terraform.tfvars 
    terragrunt = {
     remote_state {
    backend = "s3"
    config {
      bucket     = "terraform-dev-state-west2"
      key        = "dev/terraform.tfstate"
      region     = "us-west-2"
      encrypt    = true
    }
  }
}

В каждом каталоге компонентов я определю свойства общего модуля.

$more infrastructure/ecr/terraform.tfvars
terragrunt = {
  include {
    path = "${find_in_parent_folders()}"
  }

  terraform {
    source = "git::ssh://[email protected]/deployment//modules/ecr"
  }
}

repository_names = [
  "web",
  "db",
  "cache",
  "log"
]

Я могу без проблем перейти в отдельный каталог, например ecr или ecs, запустить "terragrunt init; terragrunt apply". Будет создан кластер AWS ECR или AWS ECS. Но когда я запускаю terragrunt в каталоге ECR, он уничтожает ранее созданный кластер ECS. Если я сначала создал ресурс ECR, а затем cd ecs для запуска terragrunt, он уничтожит ресурсы ECR. Даже если я поместил зависимости ECR в файл ECS terraform.tfvars, результат будет тот же. Я думаю, это потому, что terragrunt не включает определение ресурса из всех подпапок в «инфраструктуре». Если это так, можно ли таким образом структурировать каталоги terraform?


person roadtest ma    schedule 21.04.2018    source источник


Ответы (1)


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

$cat infrastructure/terraform.tfvars 
    terragrunt = {
     remote_state {
    backend = "s3"
    config {
      bucket     = "terraform-dev-state-west2"
      key        = "${path_relative_to_include()}/terraform.tfstate"
      region     = "us-west-2"
      encrypt    = true
    }
  }
}

После этого изменения я могу запускать terragrunt в подпапке, не влияя друг на друга.

person roadtest ma    schedule 24.04.2018