Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Terraformのざっくり入門

 Terraformのざっくり入門

チームメンバ向けの勉強資料。
構成要素と、tfstateに主眼をあてた説明です。

kashiwaguma-hiro

June 05, 2019
Tweet

More Decks by kashiwaguma-hiro

Other Decks in Technology

Transcript

  1. Terraform ざっくり入門
    柏熊 宏幸

    View Slide

  2. Terraformとは

    View Slide

  3. Terraformとは
    ● HashiCorp社が開発
    ● Infrastructure as Codeを実現するツールの一種
    ○ SaaS、AWSやGCP等のクラウドサービスがターゲット
    ○ オンプレサーバの構築や、プロビジョニング周りは{無理|不得意}
    ● サポートしているサービスは様々
    ○ AWS
    ○ GCP
    ○ Azure … etc

    View Slide

  4. 構成要素

    View Slide

  5. 構成要素
    設定ファイル
    (Resource,Module)
    ステータス
    (Backend)
    対象環境
    (Provider)
    .tfstate
    x.tf
    y.tf

    View Slide

  6. 構成要素
    設定ファイル
    (Resource,Module)
    ステータス
    (Backend)
    対象環境
    (Provider)
    .tfstate
    x.tf
    y.tf
    ・対象環境に作るリソースを定義するファイル .
      resource:最小単位.
      module :複数のresourceをまとめた単位
    ・moduleは自前で作成可能だし、配布も可能 . ref
    ・resourceは小さい単位なので、適宜 module化がおススメ.

    View Slide

  7. 構成要素
    設定ファイル
    (Resource,Module)
    ステータス
    (Backend)
    対象環境
    (Provider)
    .tfstate
    x.tf
    y.tf
    ・Terraform側のステータスを定義 .
      Terraform管理下のリソース情報を保持 .
    ・保存先はいろいろある . ref

    View Slide

  8. 構成要素
    設定ファイル
    (Resource,Module)
    ステータス
    (Backend)
    対象環境
    (Provider)
    .tfstate
    x.tf
    y.tf
    ・環境構築や認証方法を提供 .
      ・様々なクラウドサービス、SaaSが存在.
    ・複数プロバイダを組み合わせることが可能
     →マルチクラウドを構築可能

    View Slide

  9. 動作のきほん

    View Slide

  10. 動作のきほん
    .tfstate
    x.tf
    y.tf
    設定ファイル
    (Resource,Module)
    ステータス
    (Backend)
    対象環境
    (Provider)

    View Slide

  11. 動作のきほん
    .tfstate
    x.tf
    y.tf
    設定ファイルとステータスが同一となるよう、差分を
    対象環境へ反映する
    設定ファイル
    (Resource,Module)
    ステータス
    (Backend)
    対象環境
    (Provider)

    View Slide

  12. リソース追加した時

    View Slide

  13. リソース追加した時
    .tfstate
    x.tf
    y.tf
    z.tf
    z.tfに設定を追加
    設定ファイル
    (Resource,Module)
    ステータス
    (Backend)
    対象環境
    (Provider)

    View Slide

  14. リソース追加した時
    .tfstate
    x.tf
    y.tf
    z.tf
    設定ファイルにあるが、
    ステータスにない場合、
    ステータスに追加
    設定ファイル
    (Resource,Module)
    ステータス
    (Backend)
    対象環境
    (Provider)

    View Slide

  15. リソース追加した時
    .tfstate
    x.tf
    y.tf
    z.tf
    z.tfのリソースを
    対象環境へ
    新規作成
    設定ファイル
    (Resource,Module)
    ステータス
    (Backend)
    対象環境
    (Provider)

    View Slide

  16. リソース削除した時

    View Slide

  17. リソース削除した場合のうごき
    .tfstate
    x.tf
    y.tf
    z.tf
    y.tfの設定を消す
    設定ファイル
    (Resource,Module)
    ステータス
    (Backend)
    対象環境
    (Provider)

    View Slide

  18. リソース削除した場合のうごき
    .tfstate
    x.tf
    z.tf
    設定ファイルにないステータ
    スは差分となる
    ステータスから削除
    設定ファイル
    (Resource,Module)
    ステータス
    (Backend)
    対象環境
    (Provider)

    View Slide

  19. リソース削除した場合のうごき
    .tfstate
    x.tf
    z.tf
    y.tfのリソースを
    対象環境から
    削除
    設定ファイル
    (Resource,Module)
    ステータス
    (Backend)
    対象環境
    (Provider)

    View Slide

  20. .tfstateにないリソースが変更された時

    View Slide

  21. .tfstateにないリソースが変更された時
    .tfstate
    x.tf
    y.tf
    z.tf
    設定ファイル
    (Resource,Module)
    ステータス
    (Backend)
    対象環境
    (Provider)
    .tfstateに無いリ
    ソースを手動で作

    View Slide

  22. .tfstateにないリソースが変更された時
    .tfstate
    x.tf
    y.tf
    z.tf
    設定ファイル
    (Resource,Module)
    ステータス
    (Backend)
    対象環境
    (Provider)
    .tfstateに無いの
    で変化なし

    View Slide

  23. .tfstateにないリソースが変更された時
    .tfstate
    x.tf
    y.tf
    z.tf
    設定ファイル
    (Resource,Module)
    ステータス
    (Backend)
    対象環境
    (Provider)
    一部だけTerraformするのもあり!
    手動で作ってからTerraform化、とかやりやすい!

    View Slide

  24. まとめ

    View Slide

  25. まとめ
    ● Terraformの構成要素は3つ.
    ○ 設定ファイル(Resource,Module)
    ○ ステータス(Backend)
    ○ 対象環境(Provider)
    ● Providerが豊富なので自由度が高い.
    ○ アプリケーション環境はAWS、モニタリングはDatadogなど
    ● 宣言的に環境を定義できる.
    ○ 設定ファイル通りになるように、対象環境を変更する.
    ○ ステータスに存在しないリソースは対象外なので、一部だけ適用可能.

    View Slide

  26. おわり

    View Slide

  27. 付録:勉強会実施時のQ.A.

    View Slide

  28. 付録:勉強会実施時のQ.A.
    1. リソース作成順序はどうなるの?
    ○ よしなに計算してくれる.
    ■ 依存関係のないものは、並列実行
    ■ 依存関係のあるものは、依存先から実行
    2. リソースを変更した場合の挙動はどうなるの?
    ○ 削除して作成と、更新のパターンがあります。
    ○ 重要なリソースについては予め lifecycleで制御したほうがいい。

    View Slide