It takes a long time to run terraform and wait. So I would like to run it to exclude rds that takes the longest time to excute or I would like to run only ec2 resource. Is there a way to do such things in terraform?

3

3 Answers

You can use -target=resource like this:

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 

Disclaimer: Before downvoting the answer, please note that he actually asked to either "exclude" or "run only ec2 resource". And after all this time the exclude feature request is still open in the terraform repo.

8

Adding to Julio's answer, you could target multiple resources in the following manner:

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 

I would like to run it to exclude rds that takes the longest time

Terraform currently does not support exclusion of resources (aka. inverse targeting).

Issue #2253: "feature request: inverse targeting / exclude"

(Thanks for the link Julio Daniel Reyes.)

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy