Terraformでは、特定のリソースに対してのみ計画や適用を行うために、-targetオプションを利用します。このオプションを使うことで、特定のリソースやモジュールだけにplanやapplyコマンドを実行することができます。
以下に具体的な例を示します。
1. terraform plan コマンド
例えば、リソース aws_instance.example のみを計画したい場合:
terraform plan -target=aws_instance.example
これはaws_instance.exampleリソースに対してのみ変更の計画を示します。
2. terraform apply コマンド
同様に、リソース aws_instance.example のみを適用したい場合:
terraform apply -target=aws_instance.example
これはaws_instance.exampleリソースに対してのみ変更を適用します。
複数のリソースを対象にする場合
複数のリソースを対象にすることもできます。その場合、-targetオプションを複数回使用します。
例えば、aws_instance.example と aws_s3_bucket.example のみを計画・適用したい場合:
terraform plan -target=aws_instance.example -target=aws_s3_bucket.example
terraform apply -target=aws_instance.example -target=aws_s3_bucket.example
特定のモジュールを対象にする場合
モジュール全体を対象にすることもできます。
例えば、モジュール module.example のみを計画・適用したい場合:
terraform plan -target=module.example
terraform apply -target=module.example
注意点
-targetオプションを使用する際にはいくつかの注意点があります:
- 依存関係の問題:
-targetオプションを使用することで依存関係が無視される場合があります。特定のリソースのみを操作すると、他の依存するリソースに影響を与える可能性があります。 - 一貫性保持: 一部のリソースのみを適用することで、全体の状態が一貫しなくなる可能性があります。特に本番環境で使用する場合は、慎重に使用する必要があります。
全体の流れ
以下のコマンドを順に実行することで、特定のリソースやモジュールに対して計画と適用を行うことができます。
terraform init
terraform plan -target=aws_instance.example
terraform apply -target=aws_instance.example
これにより、aws_instance.example の変更を計画し、その変更のみを適用します。
この-targetオプションを使用することで、特定のリソースやモジュールに対してのみ変更を計画・適用することができます。柔軟に対応できるため、特定の部分だけを慎重に操作したい場合に有用です。

コメント