どうも,新卒エンジニアのナカノです.
3月中旬辺りから段々と暖かくなってきましたね.
よく通る川沿いの道では沢山の桜の木が花を咲かせており,通勤時が非常に楽しいです.
さて,今回もTerraformに関する記事です.
前回は実行環境の準備に関する内容の記事でした.
今回の内容は,よく使われるTerraformのコマンドに関してです.
- よく使われるコマンド
- init
- fmt
- validate
- plan
- apply
- destroy
- 最後に
よく使われるコマンド
Terraformを用いてインフラリソースを作るには,まず.tf
という拡張子の設定ファイルを作成します.
その後にリソース作成用のコマンドを実行すると,各.tf
ファイルの情報がある一つのJSONファイルにまとめられます.
これをterraform.tfstate
というのですが,Terraformはこのファイルを基準にしてリソースの作成・改変・削除を行います.
以下は,それらを行う際によく用いられるコマンドです.
init
リソースの作成・改変・削除を行う際にまず行うべきコマンドです.
これが実行されると,実行場所に.terraform
というディレクトリが作成されます.
このディレクトリがないとリソースの作成・改変・削除が行えないため,何よりも一番重要なコマンドです. www.terraform.io
fmt
設定ファイルのフォーマットを行う際に使われるコマンドです.
ただ,使用するエディタによってはフォーマット機能の付いたパッケージがあるため,人によってはあまり使われないかもしれません. www.terraform.io
validate
設定ファイルに文法エラーがあるか否かをチェックする際に使うコマンドです.
便利ですが,次に紹介するplan
というコマンドが文法エラーを含めたエラーの検知を行ってくれるため,これもあまり使われないものかもしれません.
www.terraform.io
plan
どういったリソースを作成,改変或いは削除するのかをTerraformが決めるために使われるコマンドです.
この実行によってterraform.tfstate
と設定ファイルたちの内容の差分を検知し,Terraformの振る舞い方が決まります.
そのため,init
コマンドの次に必須なコマンドであると言っても過言ではないでしょう.
ところで,plan
コマンドには次のよく使われるオプションがあります.
-target=resource
これを用いることで,ある特定のリソースのみに対してplan
コマンドを実行させることが出来ます.
ある複数個のリソースに対してplan
を行いたいのであれば,このオプションをplan
に複数個並べて付ければよいです.
-destroy
削除対象のリソースたちの情報を見るためにこのオプションが使われます.
Terraformのリソース情報の差分認識を観察するには割と重要なオプションです.
-var 'foo=bar'
変数設定されているがその値が空の場合,このオプションが必要です.
このオプションを付けずにコマンドを実行すると,空の変数の値を対話的に要求されます.
その場合は,画面に変数値を入力してコマンド実行の続きを行えば大丈夫です.
-var-file=foo
Terraformには.tfvars
という拡張子のファイルがあり,これは変数設定を行う際に使われるファイルの一つです.
ファイルの内容は一見すると環境変数の設定ファイルの様に見えるかもしれません.
このオプションを使う場合は,オプション値に該当の.tfvars
ファイルのパスを指定します.
もしこのオプションを使わない場合は,画面上で.tfvars
に書かれている変数の値を対話的に一つずつ要求されます.
apply
plan
コマンドの結果を元にリソースを作成・改変・削除するために使われるコマンドです.
この実行時でもエラーが検出されることがあるので,plan
が正常に終了したからといって油断するのは禁物です.
なお,このコマンドでは次のオプションがよく使われます.
-auto-approve
Terraformのバージョンが0.11.0になってからこのオプションが登場しました.
それ以前のバージョンではapply
を実行すると実行が終了するまでコマンドの処理が動き続けていました.
ところが,それではオペレーションミスなどが偶発することもあり,0.11.0以降では実行の許可を対話的に求められる様になりました.
さて,このオプションですが,その「実行許可の対話的要請」をスキップする様にしてくれるものです.
これを付けてapply
を実行すれば,0.11.0以前の様なapply
の挙動になります.場合によっては便利だったりします.
-target=resource
, -var 'foo=bar'
, -var-file=foo
plan
のオプションにあるものと同様です.
www.terraform.io
destroy
作成済みのTerraformで管理されたリソースを削除する際に使われるコマンドです.
実はapply
の実行時でもリソースが削除されることもあるのですが,違いは「destory
は削除のみに使われて,apply
では『リソースを作り直す」挙動を起こす時にリソースが削除される」といった感じです.
このコマンドでも次のよく使用されるコマンドがあります.
-auto-approve
apply
のオプションにあるものと同様です.もしこれを使うのであれば,destory
の実行の前にterraform plan -destroy
をすべきです.
最後に
よく使われるコマンドは上記の通りですが,基本的には
terraform init
terraform plan
terraform apply
terraform destroy
の4つを覚え,使い慣れる様にしておくとよいでしょう.
それでは,今回はここまでと致します.
次回は「場合によって役立つコマンド」についてご紹介致します.