【読書メモ】【4章】詳解 Terraform 第3版 ―Infrastructure as Codeを実現する

技術書

 

↓の本の「4章 モジュールで再利用可能なインフラを作る」のメモを残します。

 

前章のメモ

 

Terraformのモジュールとは?

 

コードを再利用するための仕組み。

プログラミング言語でいうところのライブラリみたいなイメージ。

 

自分で作ったモジュールでもネットに公開されている誰かが作ったモジュールでも使える

 

モジュールの基本

 

モジュール=Terraformファイルを集めたもの

であり、

ルートモジュール=直接terrarform applyするモジュール

再利用可能なモジュール=他のモジュールから参照されているモジュール

 

新しくモジュールを参照したり、sourceパラメータの変更時にはterraform initを実行する

 

2種類の変数

 

variable:外部から値を指定する変数。モジュールの入力変数になる。

locals:モジュール内のみで使う変数。外部から値を変更できない。

 

出力

 

outputブロックを使って、モジュール内の値を他のモジュールで参照できるようにできる。

 

モジュールの注意点

ファイルパス

 

モジュール内で相対パスを使うと、

×そのモジュールのディレクトリから見た相対パス

terraform applyを実行したディレクトリから見た相対パス

になる。

 

なので、モジュールでは相対パスではなくパス参照(path.<TYPE>)を使う。

path.module そのモジュールのパスを返す
path.root ルートモジュールのパスを返す
path.cwd カレントディレクトリ(terraformを実行したディレクトリ)のパスを返す。
多くの場合はpath.rootと同じになる

 

インラインブロック

 

インラインブロックを使用するとモジュールの柔軟性が下がる。

 

例えば、セキュリティグループを↓のようにインラインブロックを使うとルールを追加できない。

もしステージング環境だけ許可したい通信要件があった場合に困ってしまう。

 

なので、インラインブロックは使わず別リソースを使うようにする

 

モジュールのバージョン管理

 

・モジュールを使うときの課題

複数の環境から同じモジュールを参照していると、そのモジュールの変更が複数の環境へデプロイされてしまう。

 

・解決策

  1. モジュールを別リポジトリで管理しGitタグでバージョンをつけます。
  2. Terraformファイルからモジュールを参照する際にはバージョンを含めて指定する。

このようにすれば、環境ごとに別バージョンを参照でき安全です。

 

まとめ

 

  1. Terraformにはコードを再利用できるようモジュールという仕組みがある
  2. 入出力の変数やローカルな変数が設定できる
  3. ファイルパスに注意し、インラインブロックの使用は控える
  4. モジュールにバージョンを付与し、環境ごとに適切なバージョンを使う

 

 

次章のメモ

 

コメント

タイトルとURLをコピーしました