Terraform の個人的なまとめ

Published: 2023/3/26


Terraform は、リソースを宣言的に管理するツール。

module について

プログラミング言語でいうところの、関数に相当する。 パラメータを導入して共通化させたリソース宣言が module である。 実際のリソース宣言ファイルからは、 module 宣言を行って利用する。

バージョン

モジュールは、プログラミング言語におけるパッケージと同じように、外部に公開できる。 外部公開なので、バージョンを指定できるようになっている。 module リソースで version フィールドにてその値を指定する。

provider について

独自の resource 定義を行うプラグイン的な機構。 resource を create / update / delete する方法を提供(provide)する。

state について

terraform は apply の度に、リソース宣言を適用した結果の状態について、指定された場所に保存する。 (指定がない場合は、ローカルになる。) これを state と呼ぶ。

すでに state があるプロジェクトにおいて、再度 plan ないし apply していく際には、 terraform は裏でその state に保存されたリソースの状態と、実際の resource の状態を API を経由して確認し、もし差分があれば、それをメモリ内部で反映した上で、 plan ないし apply の処理を行っている。

この、メモリ内部での state の最新状態への更新処理を、 terraform 的には refresh と言う。

-refresh-only

plan ないし apply に -refresh-only のオプションを付け加えると、 terraform は state ファイルの更新のみを行う。 具体的には、 terraform plan -refresh-only にて state の差分の表示を行い、 terraform apply -refresh-only にて state 状態の保存処理を行う。


Tags: terraform

関連記事