Terraform
terraformはgo製
terraform自体は、設定の中身をクラウドプロバイダのAPIコールに変換するバイナリ
.tfファイルにHCLという言語で記載する
ヒアドキュメント
- <<-EOFとEOFで囲む
出力変数
- apply時にコンソールへ出力される
- ステートにも出力される
データソース
- プロバイダから取得する読み込み専用の情報
- サブネット一覧等
- 何かが作られるわけではなく、コード内で使えるようになるだけ
- フィルタのように指定して取得する
ステートファイル
- terraformでどんなインフラを構築したかの情報を保持
- クラウド上の実際のリソースへの参照を持っており、そこから最新の状態を取得し、terraformのコードと比較することで、どのような変更を適用すべきか判断している
- terraformモジュール(main.tf等)ごとに生成される?
terraform_remote_stateデータソース
- 別のterraformモジュールのステートを読み込める
- ステート内の出力変数も読み込める
モジュール
- 関数のように再利用可能
- あるフォルダ内にあるterraform設定の集まりは、全てモジュール
- モジュールにはプロバイダは設定しない
- 利用側で行う
- 入力パラメータを設定できる
- モジュール利用時に入力を渡す
- 入力を設定することで、利用側ごとに異なる挙動を行わせる
terraform init
- プロバイダに関するコードのダウンロード
- バックエンド(ステートの保存先)の設定
- 利用モジュールのダウンロード