Terraform - удалить все ресурсы, кроме одного - PullRequest
3 голосов
/ 20 марта 2019

У меня есть проект Terraform 0.11 с 30-40 различными ресурсами.Я хотел бы удалить все из них, кроме нескольких - и те немногие логически связаны друг с другом.

Я искал что-то близкое к terraform destroy --except=resource-id, но этого, конечно, не существует.

Есть ли способ достичь этого без особых сценариев (у администраторов Terraform есть разные ОС)?Возможно, использование модулей облегчит этот процесс?

1 Ответ

3 голосов
/ 21 марта 2019

В команде terraform destroy не существует существующей функции. Если вы действительно хотите это сделать и знаете, что делаете, вот обходной путь.

# list all resources
terraform state list

# remove that resource you don't want to destroy
# you can add more to be excluded if required
terraform state rm <resource_to_be_deleted> 

# destroy the whole stack except above resource(s)
terraform destroy 

Так почему эти команды работают для вашей идеи?

Состояние (* .tfstate) используется Terraform для отображения ресурсов реального мира в вашей конфигурации, отслеживания метаданных.

terraform state rm удаляет элемент (ресурс) из состояния (* .tfstate).

Поскольку вы не запускаете terraform apply или terraform refresh, после terraform state rm terraform вообще не знает, что исключенный ресурс был создан.

Когда вы запускаете terraform destroy, он не имеет подробных сведений о состоянии этого ресурса и не разрушит его. Это уничтожит остальных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...