0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

terraform initを行うべきタイミング

Posted at

背景

最近たまたま機会が重なり、ずっとterraformを触ってます。
(3月はterraform集中月間でした)

module追加したり大きな変更をした場合にとりあえず実行していたinit。そろそろちゃんと理解したかったので整理してみました。

結論

とりあえず結論から。以下が主要な実行タイミングです。

①新規プロジェクト開始時

  • Terraformプロジェクトを最初にセットアップする際
  • main.tfやversions.tfなどの基本設定ファイルを作成後に実行

②プロジェクト構成の変更時

  • Backend設定の変更(ex. ローカルからリモートに変更する場合)
  • Providerバージョンの更新(ex. AWS Providerのバージョンアップをする場合)
  • 新しいModuleの追加や既存Moduleのバージョン変更

terraform initが行っていること

terraform initでは、主に以下の4つの主要な処理が行われます。

  1. Backendの設定
    a. Terraformの状態管理(state)の保存場所を設定
    b. terraform.tfstateの保存方法を決定
    c. 既存のBackend設定と新しい設定の一貫性を確認
  2. Moduleのインストール
    a. 定義されたすべてのモジュールをダウンロード
    b. .terraform/modulesディレクトリに保存
    c. モジュール間の依存関係を解決
  3. Providerのインストール
    a. required_providersブロックで指定されたプロバイダーをインストール
    b. .terraform.providersディレクトリに保存
    c. バージョンの整合性を確認
  4. Lockファイルの生成
    a. .terraform.lock.hclファイルを作成
    b. 使用するProviderとModuleのバージョンを固定
    c. チーム開発でのバージョンの一貫性を保証

各ステップで生成されるファイルとディレクトリ構造について

.terraform.lock.hclファイルは一見バージョン管理すべきかどうかわかりにくいですが、使用するProviderとModuleのバージョンを固定するため、含める必要があります。

.terraformに生成されるディレクトリ構造と概要は以下の通りです。

.terraform/
├── modules/          # モジュールの保存場所
│   └── ...
├── providers/        # プロバイダーのインストール先
└── terraform.tfstate # Backend設定情報

参考資料

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?