Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
CI/CD環境のTerraform versionを最新に保つと幸せになれる
Search
yhamano
July 26, 2021
Technology
2.3k
9
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
CI/CD環境のTerraform versionを最新に保つと幸せになれる
yhamano
July 26, 2021
More Decks by yhamano
See All by yhamano
MIXI での HCP Terraform 活用事例 / Use Case of HCP Terraform at MIXI
yhamano
2
1.2k
Self-Service Implementation of AWS IAM Identity Center Permissions
yhamano
1
1.2k
TIPSTAR におけるデータ分析基盤信頼性向上の取り組み
yhamano
1
2.3k
複数プロダクトを管理する AWS Organizations における AWS IAM Identity Center を GitHub x Terraform でいい感じに運用したい
yhamano
1
2.5k
Opsしかやってこなかった私が DevOpsが根付いたチームにJoinした話
yhamano
2
2k
IAMの地味なUpdateをご紹介_掲載用.pdf
yhamano
0
890
lightning-talk-toyosu_hamano_20190925_open.pdf
yhamano
0
900
Other Decks in Technology
See All in Technology
ruby.wasmとPicoRuby.wasmに対応した仮想DOMライブラリを作ってる話 #kaigieffect_kaigi
sue445
PRO
0
150
関数型の考えを TypeScript に持ち込んで、テストしやすい純粋関数を増やす / Pure at the Core, Effects at the Edge: Bringing Functional Thinking into TypeScript
kaminashi
2
130
AIと共生する開発者プラットフォーム:バクラクのモノレポ×マイクロサービス基盤
sakajunquality
2
3.9k
AIレビューはどこまで任せられるのか?自動化と人が背負うレビューの境界
sansantech
PRO
3
1.1k
しくみを学んで使いこなそう GitHub Copilot app
torumakabe
2
290
AI、CDK と協働する Full TypeScript アプリケーション開発 / Full TypeScript Application with AI and CDK
geekplus_tech
2
400
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
110k
変更し続けられるシステムをどう保つか — AI時代のSSoTという設計原則
kawauso
0
210
Data + AI Summit 2026 イベントレポート: 「AIがビジネスで意思決定するデータ基盤」へ
nek0128
0
280
ゴールデンパスは敷いただけでは道にならない ─ 企画部門のエンジニアが技術標準を事業価値に変えるまで
mhrtech
1
230
Alphaモジュール使っていいのかい!?いけないのかい!?どっちなんだいっ!?
watany
1
290
CIで使うClaude
iwatatomoya
0
290
Featured
See All Featured
Embracing the Ebb and Flow
colly
88
5.1k
The Curse of the Amulet
leimatthew05
2
13k
Evolving SEO for Evolving Search Engines
ryanjones
0
240
Context Engineering - Making Every Token Count
addyosmani
9
1k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
67
56k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Visualization
eitanlees
152
17k
Scaling GitHub
holman
464
140k
Designing Experiences People Love
moore
143
24k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Transcript
CI/CD環境のTerraform versionを 最新に保つと幸せになれる Ops JAWS Meetup#19 勉強会 2021年7月26日(月)
おしながき • 自己紹介 • Terraform概要 • TerraformのCI/CDプロセス • Terraformバージョンアップの必要性と辛み •
tfupdateの活用 • まとめ
Terraform概要 • HashiCorp社により開発/提供されているIaCサービス ◦ HCLと呼ばれる独自の宣言型言語で記述する ◦ 1000以上のプロバイダに対応している ◦ Terraformのランタイムや各種プロバイダの利用は無料 ▪
実行環境は利用者側で用意する必要がある ◦ Terraform Cloudと呼ばれる実行管理サービスも提供されている
2021/06/08
v1.0.0がリリースされ遂にGA🎉
Terraform実行環境 • ローカルPC ◦ ローカルPCからterraform CLIを実行 ◦ 柔軟性は高い ◦ 実環境とリポジトリの内容がズレる
• CI/CDサービス(CircleCI, Code Build...) ◦ PRの作成/マージでterraform CLIを実行 ◦ 実環境とリポジトリの内容が同一で安心 ◦ 自動化によるコスト削減 ◦ ヒューマンエラーの撲滅 ◦ パイプラインの構築が必要
Terraform実行環境 • ローカルPC ◦ ローカルPCからterraform CLIを実行 ◦ 柔軟性は高い ◦ 実環境とリポジトリの内容がズレる
• CI/CDサービス(CircleCI, Code Build...) ◦ PRの作成/マージでterraform CLIを実行 ◦ 実環境とリポジトリの内容が同一で安心 ◦ 自動化によるコスト削減 ◦ ヒューマンエラーの撲滅 ◦ パイプラインの構築が必要 本番環境に適用していく場合はこちらを選択していきたい
Terraformの一般的なCI/CDプロセス
Terraformの一般的なCI/CDプロセス tfファイルをgit push
Terraformの一般的なCI/CDプロセス PR作成をトリガーに Linterによる静的解析やplan実行を行う
Terraformの一般的なCI/CDプロセス PRマージをトリガーにapply tfstateを外部ストレージで管理
Terraformの一般的なCI/CDプロセス 本日のメインディッシュ CI/CD環境でのTerraform version管理
Terraform version • 結構な頻度でリリースがあるが、手動でのversion up対応は辛い ◦ tfファイルで管理しているrequired_versionの書き換え ◦ CI/CD環境で利用するTerraform本体のversion
up対応 ◦ 既存リソースに影響が無いことをplanで確認 ◦ tfstateを複数管理している場合は各ディレクトリに対して対応する必要がある • 一方、新機能/新サービスをterraform管理したい場合はversion upする必要がある version指定がある コンポーネント 概要 例 Terraform本体 Terraform自体のコアな処理を担当 - provider 各プロバイダに依存した処理を担当 hashicorp/terraform-provider-aws hashicorp/terraform-provider-google module resource定義のテンプレート terraform-aws-modules/terraform-aws-vpc terraform-aws-modules/terraform-aws-iam
自動化したい!!!
tfupdate • 指定したディレクトリ配下もしくはファイルのversion記載部分を、取得したversionで 再帰的に一括更新してくれる ◦ tfupdate terraform -v 1.0.0 main.tf
で実行すればmain.tf内のversion記載部分を 1.0.0に更新してくれる • CI/CD等のスケジュールジョブ内で利用することで、最新版のリリースがあれば version up用のPRを自動作成することが可能 ◦ CircleCIであればexampleのconfig.ymlやOrbが公開されている ▪ https://github.com/minamijoyo/tfupdate-circleci-example ▪ https://circleci.com/developer/orbs/orb/masutaka/tfupdate ◦ exampleはPR作成までだが、plan結果に差分が無ければ自動マージとかもで きちゃう! • 詳細はQiitaに公開されています https://github.com/minamijoyo/tfupdate
tfupdate
朝起きたら最新versionになってる幸せ😍
数ヶ月運用してみて • 新機能/新サービスをリードタイム無しに積極的に活用できる ようになった • version upによるplan結果差分発生は1ヶ月に1回程度 ◦ Terraform本体とproviderでの利用のみ •
plan結果差分無しの時の標準出力が変更になり、自動マージ されないことがあった ◦ planのoptionに-detailed-exitcodeを付与することでplan結果差分 のありなしで終了コードが変わる
まとめ • Terraform(IaC全般)を活用する場合は極力CI/CDプロセスを導 入したい • CI/CD環境のTerraform version管理から開放されて幸せにな れた
Thank you.