チームメンバ向けの勉強資料。 構成要素と、tfstateに主眼をあてた説明です。
Terraform ざっくり入門柏熊 宏幸
View Slide
Terraformとは
Terraformとは● HashiCorp社が開発● Infrastructure as Codeを実現するツールの一種○ SaaS、AWSやGCP等のクラウドサービスがターゲット○ オンプレサーバの構築や、プロビジョニング周りは{無理|不得意}● サポートしているサービスは様々○ AWS○ GCP○ Azure … etc
構成要素
構成要素設定ファイル(Resource,Module)ステータス(Backend)対象環境(Provider).tfstatex.tfy.tf
構成要素設定ファイル(Resource,Module)ステータス(Backend)対象環境(Provider).tfstatex.tfy.tf・対象環境に作るリソースを定義するファイル . resource:最小単位. module :複数のresourceをまとめた単位・moduleは自前で作成可能だし、配布も可能 . ref・resourceは小さい単位なので、適宜 module化がおススメ.
構成要素設定ファイル(Resource,Module)ステータス(Backend)対象環境(Provider).tfstatex.tfy.tf・Terraform側のステータスを定義 . Terraform管理下のリソース情報を保持 .・保存先はいろいろある . ref
構成要素設定ファイル(Resource,Module)ステータス(Backend)対象環境(Provider).tfstatex.tfy.tf・環境構築や認証方法を提供 . ・様々なクラウドサービス、SaaSが存在.・複数プロバイダを組み合わせることが可能 →マルチクラウドを構築可能
動作のきほん
動作のきほん.tfstatex.tfy.tf設定ファイル(Resource,Module)ステータス(Backend)対象環境(Provider)
動作のきほん.tfstatex.tfy.tf設定ファイルとステータスが同一となるよう、差分を対象環境へ反映する設定ファイル(Resource,Module)ステータス(Backend)対象環境(Provider)
リソース追加した時
リソース追加した時.tfstatex.tfy.tfz.tfz.tfに設定を追加設定ファイル(Resource,Module)ステータス(Backend)対象環境(Provider)
リソース追加した時.tfstatex.tfy.tfz.tf設定ファイルにあるが、ステータスにない場合、ステータスに追加設定ファイル(Resource,Module)ステータス(Backend)対象環境(Provider)
リソース追加した時.tfstatex.tfy.tfz.tfz.tfのリソースを対象環境へ新規作成設定ファイル(Resource,Module)ステータス(Backend)対象環境(Provider)
リソース削除した時
リソース削除した場合のうごき.tfstatex.tfy.tfz.tfy.tfの設定を消す設定ファイル(Resource,Module)ステータス(Backend)対象環境(Provider)
リソース削除した場合のうごき.tfstatex.tfz.tf設定ファイルにないステータスは差分となるステータスから削除設定ファイル(Resource,Module)ステータス(Backend)対象環境(Provider)
リソース削除した場合のうごき.tfstatex.tfz.tfy.tfのリソースを対象環境から削除設定ファイル(Resource,Module)ステータス(Backend)対象環境(Provider)
.tfstateにないリソースが変更された時
.tfstateにないリソースが変更された時.tfstatex.tfy.tfz.tf設定ファイル(Resource,Module)ステータス(Backend)対象環境(Provider).tfstateに無いリソースを手動で作る
.tfstateにないリソースが変更された時.tfstatex.tfy.tfz.tf設定ファイル(Resource,Module)ステータス(Backend)対象環境(Provider).tfstateに無いので変化なし
.tfstateにないリソースが変更された時.tfstatex.tfy.tfz.tf設定ファイル(Resource,Module)ステータス(Backend)対象環境(Provider)一部だけTerraformするのもあり!手動で作ってからTerraform化、とかやりやすい!
まとめ
まとめ● Terraformの構成要素は3つ.○ 設定ファイル(Resource,Module)○ ステータス(Backend)○ 対象環境(Provider)● Providerが豊富なので自由度が高い.○ アプリケーション環境はAWS、モニタリングはDatadogなど● 宣言的に環境を定義できる.○ 設定ファイル通りになるように、対象環境を変更する.○ ステータスに存在しないリソースは対象外なので、一部だけ適用可能.
おわり
付録:勉強会実施時のQ.A.
付録:勉強会実施時のQ.A.1. リソース作成順序はどうなるの?○ よしなに計算してくれる.■ 依存関係のないものは、並列実行■ 依存関係のあるものは、依存先から実行2. リソースを変更した場合の挙動はどうなるの?○ 削除して作成と、更新のパターンがあります。○ 重要なリソースについては予め lifecycleで制御したほうがいい。