Terraform初心者が「Terraform meetup tokyo#2」に参加した
インフラ構成管理ツールの1つであるTerraformの勉強会に参加してきた. Terraformは昨今のクラウド環境でよく使用されていて,AWSやGCP,Azureなど幅広いインフラに対応している. 自分はTerraformを今から取り入れようかなという感じで,それにあたり何か知見を得れればと思い参加した.
個々のアプリのリポジトリでTerraformを管理している話
表題の通りTerraformの管理をアプリケーションごとに書いているという話.
- 良かったこと
- アプリが使用するインフラリソースがわかりやすい
- Terraform変更の影響範囲が明確
- Terraformのアップグレードを必要に応じてできる
- Planが早い
- アプリの変更とインフラの変更を一緒にレビューできる
- 良くないこと
- 同じような修正が何度も必要
- 書き方にムラが出やすい
- CI/CDが大変
- インフラ構成全体の把握に時間がかかる
感想
プロジェクトが少なかったりチームが小さいと小回りがきくのでやりやすそう.またタグでリソース管理元リポジトリがわかるようにしているのは便利そう!
APIがある外部サービスはTerraformで管理できますよ
Providerのない外部サービスでもそのサービスがAPIさえ提供していてくれればCustom Providerを作って構成管理できるという話.TwilioのProviderを作成された際の知見を話された.
- クラウド以外の外部サービスを使う場合でも有名なサービスであればTerraformにProviderが用意されている
- APIを提供している外部サービスはTerraformのProviderを自作すればTerraformで管理できる
- Providerの作り方
- 公式ドキュメントをやる
- TerraformProvider実践を読む
- 既存のProviderコードを読む
感想
Terraform側が提供しているProviderもまぁまぁあるが,APIさえあれば管理できちゃうともなるとWebで使っているサービスに関してはほとんど管理できるのではと感じた.
Terraformerのおはなし
Terraformerのアーキテクチャと機能追加のプルリクエストを送った際の知見を話された.
- Terraformerとは,対応しているSaaS,IaaSの既存情報を元にtfstateとtfファイルを作成してくれる
- Terraformのアーキテクチャ
- 前処理
- Providerとの通信
- 取得結果のparse
- 機能追加で実際コードを書くのはアーキテクチャでいう前処理部分だけ,簡単!
- TerrafomerもすごいけどTerraformのplugin機構もすごい
感想
機能追加のプルリクエストなのにコード書いてる部分少なくてお手軽に実装できそうだなと思った. Terraformすら触っていない自分としては,既存のAWS環境をTerraformerでimportしてみてどのようなstateが出力されるのか,1から作成するよりも作業が少なくなるのか試してみようと思う.
FOLIOのTerraform運用tips
FOLIOさんでTerraformを運用しているやり方が全体的に見えるようなお話をされた.
- Terraformコマンドの運用
- ディレクトリ構成
- 変数の格納
- アカウントを超えて全体で使う変数とアカウント固有の変数で分けている
- Terraformの書き方
- 属人化を防ぐことやTerraformの破壊的変更への対策等の理由からコメントは重要視していた.特にresourceに対するコメントは必須らしい
- 全体設計レビュー
感想
Terraformで迷いそうなディレクトリの構成や開発の仕方など全体に渡って実用例を解説していただけてとても参考になった. 運用の話においては,誰が見てもわかるようにコメントを残すことを徹底されているところに共感した.
World Cafe
ここからはWorld Cafeというディスカッションを各テーブルで行う時間. 簡単に言うとWorld Cafeとは,あるトークテーマについてみんなで話し合う場である.詳しくは以下の資料を参考にしていただければと思う.
自分は初めてのWorld Cafeだったが,控えめに言ってとてもすばらしいイベントだった. 勉強会に集まったみんなと情報共有することで新たな知見を得ることができるし,悩み相談もできる. World Cafeでは,その場にいる参加者同士でコミュニケーションを取ることの良さを改めて感じた. 勉強会によりけりかもしれないが,どの勉強会もWorld Cafeを取り入れてくれると嬉しい.
Terraform WorkSpace機能を活用してきたノウハウを一挙公開
Terraform WorkSpace機能の紹介.Terraform WorkSpace機能はThe Twelve-Factor App (日本語訳)を考える上でも役に立つとお話しされていた.
- The Twelve-Factor Appの1つである
開発/本番環境の一致
をTerraform WorkSpaceで実現できる- resource_countを使って不要な環境では立ち上げない
- インフラ用dev環境がWorkspaceで作れる
- アプリケーションの構成をインフラでも再現したい時,Workspaceを作成してTerraformで記述されたリソースがどのように立ち上がっていくのか確認できる
- Workspaceを使ってて辛かったこと
- 使っている人が少ないので情報量が少ない
- Workspaceやめましたみたいなブログがあって悲しくなる
感想
自分が初心者なのでTerraform WorkSpaceについての情報量が少ないのは心もとないがメリットはありそうなので検討してみたい.
www.slideshare.net
TerraformとAzure Pipelinesを用いたプロビジョニングの自動化
TerraformとAzureの組み合わせで実現できたことできなかったこと,こけそうなポイント,今後の課題などをお話しされた.
- 実現できなかったこと
- Event Hubsのイベントサブスクリプションの構成
- 技術的に可能そうだが,実現できなかった
- Key Valutのアクセスポリシー
- ポータルから手動で構成したほうが運用しやすい
- Event Hubsのイベントサブスクリプションの構成
- こけそうなポイント
- App ServiceにApplication Insightsを構成する際,APPINSIGHTS_INSTRUMENTATIONKEYを記載しただけでは有効化されない
- SQL ServerのセキュリティはTerraformで構成不可
- Traffic Managerのステータスコードの範囲はTerraformで構成不可
- 今後の課題
- Azure Pipelinesのymlファイルを含めたときのフォルダ構成のベストプラクティス
感想
Azureは普段から触っていないが,社内のサービスで利用しているところはあるのでそのサービスでTerraformを使うことがあれば参考になりそう.
Terraform-provider-awsのコントリビュータになろう!
Terraform-provider-awsコントリビュータになるまでをお話しをされた.
- コントリビュートへの道
- コードを書かないコントリビュートもある
- 一番大変なのは「課題を見つけること」
- とりあえずやってみよう
- コードを書かないコントリビュートもある
- ドキュメントの修正
- typo
- ドキュメントが追従してない etc…
- 不具合の報告
- ドキュメントの修正
一番大変なのは「課題を見つけること」
- GitHubのIssueを眺める
- 「Refactor」「technical-debt」などで検索
- GitHubのIssueを眺める
とりあえずやってみよう
感想
Terraform Providerに限らず他のOSSでも使えそうで参考になる.コードほぼかかなくていいのはお手軽!
まとめ
Terraformを今後使っていこうとしている身としては参考になる情報満載でとても有意義な時間だった! 特に,World Cafeでたくさん運用Tipsを聞くことができて,また参加しようという気持ちになった! 次の機会までに,自分も使ってみたtipsや感想を共有できるようになっていたいと思う.