terraformのチュートリアルを見ながら、いろいろ試してみた記録その1。結構使い勝手はよさそうなので、こういうツールでちゃんとAWSのリソースを管理していきたい。

terraform の導入

導入は brew install terraform で OK

EC2インスタンスを立てる, 更新する, 破棄する

とりあえず簡単なところから。以下のファイルを example.tf という名前で作成する。

で、 terraform plan を実行するとこれからAWSに対して何を行うのかを表示してくれる。なにもないまっさらな状態であれば以下のような出力になるだろう。

terraform apply を実行すると、実際にリソースが作成される。さっきの example.tf を編集してたとえば t1.micro にして、 terraform plan をするとちゃんと instance_type に差分がでる旨の表示が出る。スタックの削除は terraform destroy で行ける。

リソースの依存性を扱う

以下のように、Elastic IPを設定する。Elastic IPに対するパラメタは instance しかない。そこには ${aws_instance.example.id} とあるがこれは、 EC2 インスタンスのidが埋め込まれる変数の役割を持つ。

もうすでに EC2 インスタンスは立ち上がっており、 aws_eip の部分だけ追記をして terraform plan を実行すると以下のようになり、この挙動がわかりやすい。

プロビジョニング

以下のように provisioner 内の command を設定することによりプロビジョニングを行える

まっさらな状態でこれを実行すると、file.txtがちゃんと生成される

変数

variables.tf なるファイルを作る

そして、example.tf の provider を以下のように変えてみよう

variables.tf で定義してある region についての挙動はもうおわかりだろう。問題は access_keysecret_key であるが、これは default が設定されていないので apply 時に渡す。たとえば terraform apply -var 'access_key=...' -var 'secret_key=...' のような具合だ。

また conf ファイルから読み込みたければ、たとえば dev.tfvars という名前で以下のようなファイルを作成し terraform apply -var-file ./dev.tfvars を実行すれば良い。

環境変数からの呼び出しは TF_VAR_access_key などという名前をつければいける。

出力

terraform apply を実行した結果のうち、重要な値の出力を得たい場合は以下のような形のコードを書けばよい

すると apply 時に以下のような出力が得られる

またapply後に出力だけ得たい場合は terraform output ip などとすれば良い。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です