はじめに
前回の「Terraformのど基本 - その3」ではTerraformでAWSのリソースを扱っていく為の準備として、TerraformのインストールとIAMそしてAWS CLIの設定までを行った。
今回はいよいよになるが、Terraformを使って実際にAWSのリソースを操作する簡単なデモを行ってTerraformのど基本シリーズを締め括りたいと思う。
本来であればEC2やVPCやS3と言ったリソースやAWSといったサービス毎にファイルを分割して管理・構築する方が実践ではオススメではあるがここでは内容理解に重点を置きたいのでmain.tfという一つのファイルにまとめて進めていく。
今回構築する内容としては非常にシンプルなものではあるが、AWS Profileの情報を利用してEC2インスタンスを立ち上げるというのを行っていきたいと思う。
前準備
まずは再度の確認にはなるが前回行ったIAMユーザアクセス権があることを確認したい。
aws sts get-caller-identityのレスポンスが返却されればOKだが、もしここでレスポンスが返却されていない様であれば、前回の「Terraformのど基本 - その3」のAWS CLIの設定の項目で復習して欲しい。
名前は何でも良いのだが、任意のディレクトリを作成しその中にここではmain.tfという名前のファイル名を作成しておこう。
例: test/main.tf
main.tf
では早速main.tfを記述していく。細かい箇所に関しては後ほど解説する予定なので一先ず下記の通り記述をお願いしたい。
それではブロック毎に内容の記述内容の解説を行っていく。
variable
ここで理解して頂きたいことはdefaultとtypeである。これはその名の通り変数のデフォルト値であったり型宣言の部分となる。
variable内の様々な記法に関してはこちらのドキュメントを参照
terraform
次に来るブロックがterraformと書かれたブロックである。ここには必要とするモジュール名であったりバージョン情報などを記述する。
terraform内の様々な記法に関してはこちらのドキュメントを参照
provider
そして次に来るブロックがproviderのブロックとなる。ここでは構築するリソースのプロバイダー情報を記述する。ここではAWSのリソースを作成していくのでawsとし、リージョン情報とプロファイルを指定している。
provider内の様々な記法に関してはこちらのドキュメントを参照
resource
そして最後がresourceのブロックとなる。ここではリソースの種類、リソース名とリソースの設定値を記述してあげる必要がある。ここではAMIの情報とインスタンスタイプの情報を記述している。
resource内の様々な記法に関してはこちらのドキュメントを参照
変数(variable)の参照の仕方
terraformの変数の定義方法は上記で記載した通りとなるが、定義した変数を参照したい場合はvar.変数名で参照が可能。
例えばサンプルで使用されているaws_regionという変数を使用したければ、var.aws_regionの様にすることでデフォルト値のap-northeast-1を取得することが出来る。
mapの参照の仕方
mapの参照の仕方はlookup関数を使用して、引数にkey・valueを渡すことで値が取得出来る様になっている。
例えばサンプルで使用されているlookup(var.amis, var.aws_region)という記述を見てみよう。
まずは引数を確認する。var.amisつまり変数amisを参照するということである。同様にvar.aws_regionは先程確認した内容になるが、変数aws_regionを参照することを意味する。
そしてlookup関数はlookup(map, key)の様に用いられ、引数にmapとkeyを渡してあげることで該当の値を参照出来る様になっている。
つまりサンプルにあるlookup(var.amis, var.aws_region)と記述することで、var.aws_region(ap-northeast-1)のkeyを用いてvar.amis(ap-northeast-1 = "ami-034968955444c1fd9")のmapより値を取得することを意味する。
結果としてここではami-034968955444c1fd9の値が取得出来る。
terraformによるAWSリソースの作成
それでは準備が整ったので、先程のサンプルを用いて簡単なAWSリソースを作成していく。基本的にな流れはTerraformのど基本 - その2を参照頂ければと思う。
既に任意のディレクトリ内にmain.tfというサンプルファイルを準備頂いていると思うが、下記の手順でリソースを作成していく。
terraform fmt
以前はterraform initから処理を始めたが、今回はインデントなどのフォーマットを整えるterraform fmtから実行したいと思う。
terraform init
現在のディレクトリ内のTerraform関連ファイル(main.tf)を元に必要なモジュールのダウンロードを行い.terraformというディレクトリ内に保存を行う。
成功すると下記の様に初期化される。
terraform plan
実際にterraformにて設定を適用した場合に(terraform applyした場合に)変更点はどこにあるのかの差分の確認を行う。
下記の通り変更差分が表示される。
terraform apply
最後にterraform applyを行い、実際に適用してAWSのリソースを作成していく。途中で実際に変更を適用するかのプロンプトが表示されるが、問題なければyesと入力し処理を進めていく。
AWSコンソールを確認すると下記の通りEC2インスタンスが作成されていることが確認出来る。
terraform destroy
それでは後片付けをして、先程作成したリソースを削除していきたいと思う。ここでもplanやapply時と同様に変更差分が表示されるので問題なければyesと入力して処理を進めていく。
まとめ
以上となる。terraformの基本的な流れと使い方について少しでも理解して頂けただろうか。この記事で少しでもterraformの最初の入りがスムーズに進むと嬉しい限りです。
コメント
コメントを投稿