Я хотел бы запустить terraform только для определенного ресурса

Долго запускать terraform и ждать. Поэтому я хотел бы запустить его, чтобы исключить rds, выполнение которых занимает больше всего времени, или я хотел бы запустить только ресурс ec2. Есть ли способ сделать такие вещи в terraform?


person negabaro    schedule 16.10.2017    source источник
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
comment
Спасибо за ваш комментарий. Я решил это, используя опцию -target, которой вы меня научили - person negabaro; 16.10.2017
comment
Нет проблем, пожалуйста, примите этот ответ, если он вам помог. - person Julio Daniel Reyes; 16.10.2017
comment
Но это не исключение. Это включение. Если вам нужно исключить только 1 ресурс, но включить остальные 99 ресурсов... тогда это утомительно - person Vino; 03.06.2019
comment
Если у вас так много ресурсов, требуются более продвинутые навыки, такие как сценарии bash. - person Azri Jamil; 12.06.2019
comment
Как уже упоминалось, это противоположно тому, что спросил вопрошающий. Если вы хотите исключить определенный ресурс, один из способов — удалить его из состояния с помощью «terraform rm state resource.key». - person James O'Brien; 07.08.2019
comment
Прежде чем понизить ответ, обратите внимание, что он фактически просил либо исключить, либо запустить только ресурс ec2. И после всего этого времени запрос на исключение функции все еще открыт в репозитории terraform github.com/hashicorp/ terraform/issues/2253. - person Julio Daniel Reyes; 05.09.2019
comment
Было бы лучше сохранить план, а затем применить сохраненный план вместо того, чтобы постоянно проверять наличие плана. - person matesio; 24.06.2020
comment
Не уверен, почему, но в моей конфигурации переключатель: --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