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

既存クラウドをTerraformで管理してみた

 既存クラウドをTerraformで管理してみた

とらのあなラボTechConferenceVol.2におけるセッション「既存クラウドをTerraformで管理してみた」の登壇資料です。

■イベント情報
https://yumenosora.connpass.com/event/241175/

■今後のイベントについてはこちら
https://yumenosora.connpass.com/

■虎の穴ラボ 採用サイト
https://yumenosora.co.jp/tora-lab/

More Decks by 虎の穴ラボ株式会社

Other Decks in Technology

Transcript

  1. Copyright (C) 2020 Toranoana Inc. All Rights Reserved. 既存クラウドを Terraformで管理してみた

    1
  2. Copyright (C) 2020 Toranoana Inc. All Rights Reserved. 自己紹介 2

    本業: ねこ様の奴隷 副業: 虎の穴ラボのエンジニア 服部 和哉(はっとり かずや) 2020年8月入社 趣味はアーケードカードゲーム 最近やったゲーム • デス・ストランディング • 龍が如くシリーズ
  3. Copyright (C) 2020 Toranoana Inc. All Rights Reserved. アジェンダ 1.

    Infrastructure as codeについて 2. 管理対象のクラウド環境説明 3. Terraformで管理するためにやったこと 4. チームメンバーに使ってもらうためにしたこと 5. 今後やっていくこと 3
  4. Copyright (C) 2020 Toranoana Inc. All Rights Reserved. Infrastructure as

    code について 4
  5. Copyright (C) 2020 Toranoana Inc. All Rights Reserved. 何故、Infrastructure as

    codeを導入するか 手順書ベースのインフラ管理のデメリット 手順書を作る・残すこと自体は大事 しかし・・・ • 手順書の精度が作る人によって異なる • 完璧な手順があっても、人間はミスをする • 設定変更があった場合の反映や履歴管理が大変 そこで出てくるのがInfrastructure as code 5
  6. Copyright (C) 2020 Toranoana Inc. All Rights Reserved. Infrastructure as

    code(IaC)とは • サーバー等のインフラの構築をコードを用いて行うこと ◦ コード化されるということはGit等で履歴管理しやすい • インフラ構築を手動操作をせずに、構築することができる。 ◦ 手動操作をしないということは操作ミスが起きにくい ▪ もちろん、Infrastructure as codeを導入しても 定義ミス等は起こり得る・・・ 6
  7. Copyright (C) 2020 Toranoana Inc. All Rights Reserved. Infrastructure as

    codeの種類と各ツール Infrastructure as codeツールを簡単に大別すると2種類 • 構成管理ツール ◦ サーバーに載せるソフトウェアなどの 構築(Nginx,Apache等) • プロビジョニングツール ◦ サーバー、ネットワークなどの構築 (EC2、Subnet等) 7
  8. Copyright (C) 2020 Toranoana Inc. All Rights Reserved. Infrastructure as

    codeの種類と各ツール 対応するツール • 構成管理 ◦ Chef ◦ Ansible ◦ Puppet • プロビジョニング ◦ Terraform ◦ Cloud Formation(AWS限定) ◦ Deployment Manager(GCP限定) 8
  9. Copyright (C) 2020 Toranoana Inc. All Rights Reserved. Terraform選定理由 とらのあなラボでは

    GCP、AWS両方使っているため、 その両方に対応しているTerraformを採用 9
  10. Copyright (C) 2020 Toranoana Inc. All Rights Reserved. 管理対象の クラウド環境説明

    10
  11. Copyright (C) 2020 Toranoana Inc. All Rights Reserved. 管理対象のクラウド 下記のブログで紹介した内容

    をTerraformで管理します。 本番で使えるFargate環境構築 https://toranoana-lab.hatenablog.co m/entry/2020/12/07/000000 ※NatGatewayとCodePipeline は今回は除外してます。 11
  12. Copyright (C) 2020 Toranoana Inc. All Rights Reserved. 12 同じ構成の環境が

    本番用、ステージング用と それぞれあります。
  13. Copyright (C) 2020 Toranoana Inc. All Rights Reserved. Terraformで管理するた めにやったこと

    13
  14. Copyright (C) 2020 Toranoana Inc. All Rights Reserved. 管理方針をきめる •

    本番環境は絶対に変えない。 • 本番環境とステージング環境で差異があれば ステージング環境を変える。 • 新規構築は一旦考えない。 飽くまで目的はインフラ管理手順の簡略化 14
  15. Copyright (C) 2020 Toranoana Inc. All Rights Reserved. 具体的な管理方法 下記のようなルーチンでもくもくと作業していきます。

    1. TerraformのAWS providerのドキュメントから管理したいリソースを探す。 https://registry.terraform.io/providers/hashicorp/aws/latest/docs 2. Example Usageをコピーして自分のテンプレートファイルにコピーし、リソース名だけ 変更する 3. terraform importコマンドで実際のリソースとテンプレートのリソースを紐付ける。 ※importに使用するIDのフォーマットはドキュメントの Importの項を参照する 4. terraform planコマンドを実行して差分がなくなるまでテンプレートファイルを変更す る 15
  16. Copyright (C) 2020 Toranoana Inc. All Rights Reserved. 実践 16

  17. Copyright (C) 2020 Toranoana Inc. All Rights Reserved. テンプレートを書くのに便利なツール terraformer

    https://github.com/GoogleCloudPlatform/terraformer 既存環境からテンプレートを作成してくれるツール。 今回は補助的に利用。 17
  18. Copyright (C) 2020 Toranoana Inc. All Rights Reserved. 出来上がったテンプレート 実際に作成したテンプレートです

    https://github.com/toranoana/TechConference2-iac 18
  19. Copyright (C) 2020 Toranoana Inc. All Rights Reserved. チームメンバーに 使ってもらうためにしたこと

    19
  20. Copyright (C) 2020 Toranoana Inc. All Rights Reserved. テンプレートを作って終わりではない アプリケーションもインフラも一度作って終わりということはな

    い。 継続的に管理するためには、アプリと同じ用にチーム全員が使 えるようにする必要がある。 20
  21. Copyright (C) 2020 Toranoana Inc. All Rights Reserved. 手順書を作る 手順書ベースをやめるためのなのに手順書を作る?

    Terraformを扱うためにも手順はあった方が良い。 すべてのインフラ構築手順を手順書に落とすよりはかなり手順 書の量は少なく、簡潔になるはず。 21
  22. Copyright (C) 2020 Toranoana Inc. All Rights Reserved. ハンズオンを行う Terraformに関する基本的な操作方法と

    作成した手順書に従っての操作をハンズオン形式で チームメンバーに実施してもらう。 22
  23. Copyright (C) 2020 Toranoana Inc. All Rights Reserved. 今後やっていくこと 23

  24. Copyright (C) 2020 Toranoana Inc. All Rights Reserved. 今後やっていくこと 実はTerraformを導入してまだ3ヶ月程度です。

    そのため、やる必要のあることはまだ沢山あると考えています。 • 新規環境構築にも対応していく • Dockerで利用できるようにする • テンプレートを書くためのハンズオンを行う • テンプレートのコードレビュー文化を根付かせる 24
  25. Copyright (C) 2020 Toranoana Inc. All Rights Reserved. まとめ 25

  26. Copyright (C) 2020 Toranoana Inc. All Rights Reserved. まとめ •

    手順の簡略化のためにInfrastructure as codeは有用。 • 既存のものを管理するためには結構地道な作業が必要に なる。 • Infrastructure as codeを導入しただけで満足せず、 チームメンバーにも使ってもらえるようにする施策も必要。 26