Долго запускать terraform и ждать. Поэтому я хотел бы запустить его, чтобы исключить rds, выполнение которых занимает больше всего времени, или я хотел бы запустить только ресурс ec2. Есть ли способ сделать такие вещи в terraform?
Я хотел бы запустить terraform только для определенного ресурса
comment
Пожалуйста, переименуйте вопрос: я хотел бы запустить terraform только для определенного ресурса.
- person Hugo   schedule 24.06.2019
comment
Что касается вопроса в заголовке (который не рассматривается в принятом ответе), в системе отслеживания проблем Terraform есть запрос на эту функцию: github.com/hashicorp/terraform/issues/2253 Одно из предложений по этому вопросу: «взять выходные данные списка планов терраформирования, выбрать все ресурсы, которые я хочу сохранить, а затем создать список параметров -target из остальных с помощью сценария оболочки.'
- person Matt R   schedule 06.08.2019
Ответы (3)
Вы можете использовать -target=resource
следующим образом:
terraform plan -target=module.mymodule.aws_instance.myinstance
terraform apply -target=module.mymodule.aws_instance.myinstance
or
terraform plan -target=aws_instance.myinstance
terraform apply -target=aws_instance.myinstance
Отказ от ответственности: прежде чем понизить ответ, обратите внимание, что он на самом деле просил либо «исключить», либо «запускать только ресурс ec2». И по прошествии всего этого времени запрос на исключение функции все еще открыт в репозитории terraform.
person
Julio Daniel Reyes
schedule
16.10.2017
Спасибо за ваш комментарий. Я решил это, используя опцию -target, которой вы меня научили
- person negabaro; 16.10.2017
Нет проблем, пожалуйста, примите этот ответ, если он вам помог.
- person Julio Daniel Reyes; 16.10.2017
Но это не исключение. Это включение. Если вам нужно исключить только 1 ресурс, но включить остальные 99 ресурсов... тогда это утомительно
- person Vino; 03.06.2019
Если у вас так много ресурсов, требуются более продвинутые навыки, такие как сценарии bash.
- person Azri Jamil; 12.06.2019
Как уже упоминалось, это противоположно тому, что спросил вопрошающий. Если вы хотите исключить определенный ресурс, один из способов — удалить его из состояния с помощью «terraform rm state resource.key».
- person James O'Brien; 07.08.2019
Прежде чем понизить ответ, обратите внимание, что он фактически просил либо исключить, либо запустить только ресурс ec2. И после всего этого времени запрос на исключение функции все еще открыт в репозитории terraform github.com/hashicorp/ terraform/issues/2253.
- person Julio Daniel Reyes; 05.09.2019
Было бы лучше сохранить план, а затем применить сохраненный план вместо того, чтобы постоянно проверять наличие плана.
- person matesio; 24.06.2020
Не уверен, почему, но в моей конфигурации переключатель: --target=aws_instance.myinstance (примечание: два тире, один тире не работает)
- person jlo-gmail; 02.04.2021
Я хотел бы запустить его, чтобы исключить rds, которые занимают больше всего времени
В настоящее время Terraform не поддерживает исключение ресурсов (также известное как обратный таргетинг).
Ошибка № 2253: запрос функции: обратный таргетинг/исключение
(Спасибо за ссылку, Хулио Даниэль Рейес.)
person
user1338062
schedule
06.07.2021
Добавив к ответу Хулио, вы можете нацелить несколько ресурсов следующим образом:
terraform init
terraform plan -target=resource_type1.resource_name1 -target=resource_type2.resource_name1
terraform apply -target=resource_type1.resource_name1 -target=resource_type2.resource_name1
person
Saurabh
schedule
04.08.2021