# terraform > Terraform CLI でインフラストラクチャを管理する。IaC タスク時に使用。 - Author: straydog - Repository: koizumikento/cc-mmo - Version: 20260124101725 - Stars: 0 - Forks: 0 - Last Updated: 2026-02-06 - Source: https://github.com/koizumikento/cc-mmo - Web: https://mule.run/skillshub/@@koizumikento/cc-mmo~terraform:20260124101725 --- --- name: terraform description: Terraform CLI でインフラストラクチャを管理する。IaC タスク時に使用。 --- # Terraform Infrastructure Skill Terraform CLI を使用してインフラストラクチャをコードで管理するスキル。 ## CLI 検出 ```bash # Terraform CLI command -v terraform >/dev/null 2>&1 && echo "terraform: available" || echo "terraform: not found" terraform version 2>/dev/null | head -1 # プロバイダー認証 aws sts get-caller-identity 2>/dev/null && echo "AWS: authenticated" || echo "AWS: not authenticated" gcloud auth list 2>/dev/null | grep -q ACTIVE && echo "GCP: authenticated" || echo "GCP: not authenticated" az account show 2>/dev/null && echo "Azure: authenticated" || echo "Azure: not authenticated" ``` ## 安全な実行フロー ### 標準フロー ```bash terraform init -input=false terraform validate terraform plan -out=tfplan -input=false # ユーザー確認後 terraform apply tfplan rm -f tfplan ``` ### ドリフト検出 ```bash terraform plan -detailed-exitcode -input=false # 終了コード: 0=変更なし, 2=変更あり ``` ## セキュリティ機能(Terraform 1.10+) ### Ephemeral 変数 状態ファイルに保存されない一時変数: ```hcl variable "session_token" { type = string ephemeral = true # 状態に保存されない sensitive = true # ログに表示されない } ``` ### 宣言的ブロック(Terraform 1.5+) ```hcl # リソースインポート import { to = aws_instance.web id = "i-1234567890abcdef0" } # リファクタリング moved { from = aws_instance.old_name to = aws_instance.new_name } ``` ## エラーハンドリング | エラー | 対処 | |--------|------| | `Error acquiring state lock` | 他プロセス終了待ち or `force-unlock` | | `No valid credential sources` | プロバイダー認証設定 | | `Resource already exists` | import or 設定修正 | ### リトライポリシー | 項目 | 値 | |------|-----| | 最大リトライ | 3回 | | 間隔 | 5秒 | | タイムアウト | 300秒 | ## 追加リソース - 詳細コマンドリファレンス: [reference.md](reference.md) - 実行パターン・スクリプト: [examples.md](examples.md) ## 注意事項 - `*.tfstate` は Git にコミットしない - `-auto-approve` は CI/CD 以外で使用禁止 - `destroy` は不可逆操作 - センシティブ変数は `sensitive = true` でマーク