お疲れ様です。おれちゃんでござる!
前回はTerraformの基本のこと話してて、Terraformの様々な可能性を見てました。今回は、またいじりながらという形で、少し複雑なコード仕組みを紹介と思います。
そのため少し前の記事にあげた例を再使用したくて、巻き戻したいと思っています。
変数ファイル
ec2.tfふむふむ。このところで止まりましたね。ここではインスタンスタイプはコードの中に固定されていたので変えたい時にはtfファイルの中を変更しないといけない。
コードをもっと簡単に変更したいのなら変数を作ればもっと楽になる。
variable.tfファイルを作ればそこで変数を設定することができる。書き方は以下でございます。
variables.tfここでインスタンスのタイプを変えるinstance_typeとインスタンスの名前を変えるinstance_nameの二つの変数が記入されています。
descriptionの部分は任意でただ変数の説明を書くスペースです。任意と言っても大きいプロジェクトになれたら大変助かるのでベストプラクティスとしてついたほうがいい。
defaultは、もしこの変数に値が与えられなかったらdefault(デフォルト)の値にされるということです。
変数の使い方
variables.tfファイルに記載されてる変数を使うには前のec2.tfのコードを少し変えないといけないです。
結果は以下になります。
これでコードを毎回変わるより簡単に変数を変えたらコードを再使用することができます。
では今設定した変数はどうやって使えますか?一般的な両方二つあります。まずは以下のようにコマンドで-varのコマンドオプションでデフォルトがある変数が変える。
-varなしにapplyしたら必須変数はプロンプトで聞かれてるけどデフォルトがある変数はデフォルトにされます。
ほかの方法はtfvarsファイルを使うことです。tfvarsファイルを使って変数を値に与えたらTerraformは自動的にそのファイルを読んで変数を変更します。
これで変数「インプット」を使うようになりましたが、実行したコードの詳細情報はtfstateの中にわざわざ見ないようどうやって表示できますか? それはアウトプットでです。
アウトプット
アウトプットはoutput.tfファイルで書くのです。以下のように書きます。
output.tf
このコードでec2.tfで作られるインスタンスのインスタンスIDはapplyコマンド後に表示される。どの値が表示されるかのはresource次第なのでドキュメンテーションをよく見ててください。例えばEC2のインスタンスの場合だったら以下です。
terraform applyの後、この結果になります。
これで作られたEC2のIdは簡単に表示できる。
最後に
段々複雑になりますが流石に可能性も更にひろがってますね。こうしたらコードを変えずにだた変数の違うセットで案件を構築する未来の欠片が見えてきましたね。
次はまたterraformのコードのコンセプトを一つ紹介したいと思います。
また次お楽しみにしてね ^^💦