- Terraformで特定のリソースを指定してデプロイする方法
- 特定のリソースを指定してデプロイする際の注意点
Terraformは一度コードを記述することで、複数の環境に同じ設定のインフラをコピーして構築できるので便利です。
一方で、Terraformを介さずに手動でデプロイしたリソースがあると、予期せぬリソースが適用されてしまい困ります。
そこでこの記事では、Terraformを利用して、指定した特定のリソースだけをデプロイする方法を紹介します。
適用するリソースをコントロールできるようになることで、Terraformでのリソース適用が柔軟に行えるようになります。
ぜひ最後までご覧ください。
Terraformで適用リソースを指定する方法
Terraformで適用するリソースを指定するには、Terraformが標準で提供している「-target」オプションを利用します。「-target」オプションすることで、指定したリソースのみをデプロイすることができます。
terraform plan コマンドの実行方法
「module.example_lambda」というリソースのみを適用したい場合、どのような変更が行われるかを確認します。 確認するときのコマンドはこちらです。
terraform plan -target=module.example_lambda
上のコマンドを実行することで、「module.example_lambda」というリソースに対しての変更内容が確認できます。
terraform apply コマンドの実行方法
上で実行した変更内容で問題なければ、リソースを適用するapplyコマンドを実行します。
applyコマンドでもplanと同様に「-target」オプションを指定することに注意ください。
terraform apply -target=module.example_lambda
上のコマンドを実行することで、「module.example_lambda」というリソースのみ適用されます。
複数のリソースを対象にする場合
「-target」コマンドは、複数のリソースに対しても利用できます。 その場合、適用したいリソースの数分、「-target=対象リソース」を記述します。
terraform apply -target=module.example_lambda1 -target=module.example_lambda2 ・・・
そのほかのオプションなどは、Terraformの公式サイトを参照ください。
Terraformで指定リソースのみ適用するときの注意点
「-targetオプション」で、指定したリソースのみ適用する場合、いくつか注意点があります。
- 依存関係の問題
「-targetオプション」を使用することで依存関係が無視される場合があります。
特定のリソースのみを操作すると、他の依存するリソースに影響を与える可能性があります。 - 一貫性保持
一部のリソースのみを適用することで、全体の状態が一貫しなくなる可能性があります。
特に本番環境で使用する場合は、慎重に使用する必要があります。
指定したリソースを適用する全体の流れ
全体のコマンドの流れはこちらのようになります。 以下のコマンドを順番に実行することで、特定のリソースやモジュールに対して計画と適用を行うことができます。
terraform init
terraform plan -target=module.example_lambda
terraform apply -target=module.example_lambda
これにより、module.example_lambda の変更を計画し、その変更のみを適用することが可能です。
まとめ
- Terraformで特定のリソースのみ適用するには「-target」オプションを使う
- 複数のリソースを指定する場合「-target」オプションをリソース数分記述する
- 特定リソースのみ適用する場合、対象リソースの依存関係も正しく適用されているか確認する
「-targetオプション」を使用することで、特定のリソースやモジュールに対してのみ変更を計画・適用することができます。
予期せぬ変更を適用したくない場合など、「-target」オプションを利用して、特定リソースのみデプロイすると有効です。
ぜひ利用してみてください。
本記事が皆様の参考になれば幸いです。



コメント