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
2025-01-24-SRETT11-OpenTofuについてそろそろ調べてみるか
Search
SUZUKI Masashi
January 24, 2025
Technology
0
610
2025-01-24-SRETT11-OpenTofuについてそろそろ調べてみるか
OpenTofuについて調べてみた内容
SRETT #11
https://3-shake.connpass.com/event/339212/
SUZUKI Masashi
January 24, 2025
Tweet
Share
More Decks by SUZUKI Masashi
See All by SUZUKI Masashi
2025-01-31 吉祥寺.pm 37 初めての海外カンファレンス
masasuzu
0
480
2024-03-29 SRETT9 Cloud SQLの可用性について
masasuzu
0
450
2023-12-18 SRETT8 Terraform使いがPulumiに入門する
masasuzu
0
2.3k
2023-12-01 吉祥寺.pm ベストプラクティスと組織とIaC
masasuzu
1
1.6k
SRETT#6_Terraformのtfstateについて考える
masasuzu
2
3.3k
SRETT#4黒い画面をもっと効率的に(使って自動化の時間を捻出)
masasuzu
2
440
2022-04-12 吉祥寺.pm 29
masasuzu
0
1.4k
2015-12-12-chiba.pm7
masasuzu
0
3.5k
2015-09-17_gotanda.pm6
masasuzu
0
3.6k
Other Decks in Technology
See All in Technology
バクラクの認証基盤の成長と現在地 / bakuraku-authn-platform
convto
1
550
AWS Control Towerを 数年運用してきての気づきとこれから/aws-controltower-ops-tips
tadayukinakamura
0
150
4/16/25 - SFJug - Java meets AI: Build LLM-Powered Apps with LangChain4j
edeandrea
PRO
1
110
AIと開発者の共創: エージェント時代におけるAIフレンドリーなDevOpsの実践
bicstone
1
310
食べログが挑む!飲食店ネット予約システムで自動テスト無双して手動テストゼロを実現する戦略
hagevvashi
3
420
3月のAWSアップデートを5分間でざっくりと!
kubomasataka
0
120
AWSで作るセキュアな認証基盤with OAuth mTLS / Secure Authentication Infrastructure with OAuth mTLS on AWS
kaminashi
0
160
JPOUG Tech Talk #12 UNDO Tablespace Reintroduction
nori_shinoda
2
140
Running JavaScript within Ruby
hmsk
3
330
SnowflakeとDatabricks両方でRAGを構築してみた
kameitomohiro
1
370
はてなの開発20年史と DevOpsの歩み / DevOpsDays Tokyo 2025 Keynote
daiksy
6
1.5k
The Tale of Leo: Brave Lion and Curious Little Bug
canalun
1
120
Featured
See All Featured
Designing for Performance
lara
608
69k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.2k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
[RailsConf 2023] Rails as a piece of cake
palkan
54
5.4k
Mobile First: as difficult as doing things right
swwweet
223
9.6k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.2k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.5k
Code Reviewing Like a Champion
maltzj
522
40k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.1k
BBQ
matthewcrist
88
9.6k
Site-Speed That Sticks
csswizardry
5
490
Unsuck your backbone
ammeep
670
57k
Transcript
OpenTofuについてそろそろ調べてみるか SRETT #11 Copyright © 3-shake, Inc. All Rights Reserved.
株式会社スリーシェイクSreake事業部 鈴木勝史
Copyright © 3-shake, Inc. All Rights Reserved. おまえだれよ 2 •
すずきまさし/masasuzu/@masasuz • 株式会社スリーシェイク Sreake事業部所属 • クラウドインフラなんでも屋さんしてます ◦ 設計、運用、構築等の支援をやってます。 ◦ 支援だけでなく実作業もなんでもやります。 • AWSちょっとわかる ◦ AWS Community Builder 2024 Cloud Operation • Google Cloudほんのちょっとわかる • Terraformちょっとわかる • OpenTofuなにもわからない
• KubeCon + CloudNativeCon NA North America 2024に先日行ってきてました。 • その中で共同開催されていた
OpenTofu Dayを見て興味を得ました。 ◦ 参考: OpenTofu Day • 普段Terraform使ってますが、この機会に OpenTofuに深堀りしてみたいというのが動機です。 • 技術検証活動のテーマにも沿ってるのでちょうどいいなと思い調査してます。 ◦ 私のテーマはTerraformを中心にIaC周りの技術調査となってます。 Copyright © 3-shake, Inc. All Rights Reserved. 動機 3
• 普段Terraformを使ってます。 • OpenTofuは業務では使ってません。豆腐職人ではありません。 • 時間の制約上、説明を端折っているところがあります。 ◦ Terraformをある程度知っている前提で話してしまいます。 • 継続的に流れを追ってきたわけではないので、不正確な箇所がある可能性があります。
• 資料自体はConnpassの資料ページにすでにアップロード済みです。 • 後日もう少しまとめてブログに書きます。 Copyright © 3-shake, Inc. All Rights Reserved. 前提、おことわり、言い訳 4
Copyright © 3-shake, Inc. All Rights Reserved. 目次 5 1.
OpenTofuとは 2. ライセンスの課題 3. OpenTofuとTerraformの違い 4. まとめ
Copyright © 3-shake, Inc. All Rights Reserved. OpenTofuとは 01 6
• 2023年8月にTerraformがライセンス変更をしたことにより、これを懸念した企業やコミュニティにより OpenTFとして フォークされます。 • その後OpenTFはHashiCorp社の商標権を侵害しかねないということで OpenTofuに改名されます。 ◦ issueを見ると当時の名前付けに関しての議論を見ることができます。 ◦
参考: https://github.com/opentofu/opentofu/issues/296 • 2023年9月にLinux Foundation傘下となります。 ◦ 参考: Linux Foundation Launches OpenTofu: A New Open Source Alternative to Terraform • コマンドとしては、tofuを使用します。 ◦ サブコマンドは基本的に terraformと同様です。 Copyright © 3-shake, Inc. All Rights Reserved. OpenTofuとは 7
Copyright © 3-shake, Inc. All Rights Reserved. ライセンスの課題 02 8
• HashiCorp社は2023年8月に今後のリリースに関してライセンスを変更する旨を発表しました。 ◦ オープンソースライセンスである Mozilla Public License(MPL) v2.0から商用サービスでの利用を制限する Business Source
License(BUSLあるいはBSL) v1.1に変更。 ◦ 参考: HashiCorp adopts Business Source License • これに対して、利用企業およびコミュニティが懸念を示し、 OpenTofuをフォークしたという流れになります。 Copyright © 3-shake, Inc. All Rights Reserved. ライセンスの課題 9
• 従来BSLは本番使用が制限されます。 ◦ ただし、ライセンスの追加使用許可 (Additional Use Grant)によりTerraformと「競合製品」でなければ本番利 用の制限はないとしてます。 ▪ 参考:
https://github.com/hashicorp/terraform/blob/v1.11/LICENSE • 「競合製品」とは、有料サポート契約を含む第三者に販売される製品で、 HashiCorp のライセンス対象製品の有料版 の機能と大幅に重複する製品を指します。 ◦ TerraformでいうところのHCP Terraform(Terraform Cloud)を想定しているのか? • 組織内でTerraformを利用することは「競合製品」とはみなされない。 • だから、利用者としては基本的には問題なく利用できるとしてます。 • 参考: HashiCorp Licensing FAQ • ここから読み取れるのは、問題となるのは Terraformの機能を有償で提供している SaaSと理解できます。 Copyright © 3-shake, Inc. All Rights Reserved. HashiCorp社の言い分 10
• HashiCorp社が説明したBSLと追加使用許可はあいまいである。 ◦ そのため、自身の行動が許諾範囲内か判断が困難である。 • 「競合製品」の定義やライセンス自体が今後変更されるか不確実である。 • TerraformはOSSの恩恵を受けて成長してきてため、これからもオープンソースソフトウェアであるべき。 • 参考:
OpenTofu FAQ • OpenTofuのスポンサー ◦ Harness ◦ Gruntwork ◦ Spacelift ◦ env0 ◦ Scalr Copyright © 3-shake, Inc. All Rights Reserved. コミュニティの懸念 11
Copyright © 3-shake, Inc. All Rights Reserved. OpenTofuとTerraformの違い 03 12
• OpenTofuはTerraform1.5.6からフォークされているのでそれまでに実装されていたものは互換があります。 ◦ 1.6-alphaから分岐したと書かれている情報もあり、要検証 • Terraform 1.5.6以降に追加された機能に関しても随時取り込まれています。 • そのため、1.5までの機能を使っているのであれば素直に移行できるかとは思います。 ◦
バージョンごとに移行ガイドがあるので細かくはそれを参照すると良いです。 ◦ 参考: https://opentofu.org/docs/intro/migration/ • ただし、別のコードベースで開発がされているので、 OpenTofuのみの独自実装もあります。 • ここではいくつか個人的に気になる違いについてあげていきます。 Copyright © 3-shake, Inc. All Rights Reserved. OpenTofuとTerraformの違い 13
• 基本的には terraform を tofuに置き換えていただければよいです。サブコマンドは一緒です。 Copyright © 3-shake, Inc. All
Rights Reserved. コマンド 14
• Terraform: https://registry.terraform.io/ • OpenTofu: https://registry.opentofu.org • OpenTofu Registryが登場したときに存在した Terraform
Providerは反映されています。 • 反映されていないものに関しても issueを立てれば反映されるようです ◦ https://github.com/opentofu/registry Copyright © 3-shake, Inc. All Rights Reserved. Registry 15
• Terraformではlifecyleブロックでdestroy=falseの記述が必須です。 ◦ 参考: https://developer.hashicorp.com/terraform/language/resources/syntax#removing-resources • OpenTofuではremovedブロックを書くだけで stateから削除されます。 ◦ 参考:
https://opentofu.org/docs/language/resources/syntax/#removing-resources • リソースを削除したいなら対象 resouce 自体を削除すればいいので、 Terraformの記述方法のほうがへんな気がします。 Copyright © 3-shake, Inc. All Rights Reserved. removed ブロック 16
• Terraformでは平文でStateに保存されます。 • これに対してOpenTofuではクライアントサイドで暗号化する機能が追加されてます。 ◦ クラウドプロバイダーの KMSキーなどを利用してStateを暗号化することができます。 • Terraformではたとえsopsプロバイダーで機密情報を暗号化しても、 Stateファイルには平文で保存されているので権
限があれば機密情報が見えてしまう状態にありました。 ◦ Stateが暗号化されることにより機密情報をよりセキュアに扱えるようになります。 • 参考: https://opentofu.org/docs/language/state/encryption/ Copyright © 3-shake, Inc. All Rights Reserved. State Encryption 17
• OpenTofuではbackendブロックで変数参照ができます ◦ 参考: https://opentofu.org/docs/language/settings/backends/configuration/#variables-and-locals • Terraformで同じことをしたい場合、-backend-configを渡さないといけない。 • 同じ環境差分が少ないパターンだとこれがすごく便利 ◦
参考: On Best Practices with OpenTofu Structuring Copyright © 3-shake, Inc. All Rights Reserved. backendブロックの変数参照 18
• 複数プロジェクトでTerraform or OpenTofuを使う場合、プロジェクトごとに使用バージョンを管理する必要がありま す。いくつか選択肢を見ていきます。 • Terraformのバージョン管理ツールとしてよく使われる tfenvはOpenTofuには対応しません。 ◦ https://github.com/tfutils/tfenv/issues/409
• 代わりにTerraformとOpenTofuに対応したtenvができました。 ◦ https://github.com/tofuutils/tenv • 私はTerraformも合わせてプロジェクト内のツールのバージョン管理をまとめて asdfでやってますが、こちらは対応し て います。 ◦ https://github.com/virtualroot/asdf-opentofu • 自分はあまり使わないのですが、 aquaやmiseも両対応しています。 ◦ https://aquaproj.github.io/ ◦ https://github.com/jdx/mise Copyright © 3-shake, Inc. All Rights Reserved. バージョン管理 19
• tflintはOpenTofuをサポートしないようです。 ◦ https://github.com/terraform-linters/tflint/issues/2037 • Linterの議論自体は続いているようです。 ◦ https://github.com/opentofu/opentofu/issues/2213 Copyright ©
3-shake, Inc. All Rights Reserved. Linter 20
• HCP Terraform(旧Terraform Cloud)に相当するSaaSとしては、OpenTofuスポンサーのSpacelift、env0、Scalrな どがあります。 • tfactions、atlantis、diggerもOpenTofuに対応している模様です。 Copyright © 3-shake,
Inc. All Rights Reserved. CI/CD 21
Copyright © 3-shake, Inc. All Rights Reserved. まとめ 05 22
• 現時点でOpenTofuに移行するするべきか? ◦ 利用者側として現状では引き続き様子見 ▪ 概ね揃ってきているが、まだ足りないエコシステムもある。 ◦ IBM社にHashiCorp社の買収による統合完了の様子も追っていきたい。 ▪ >
買収による統合完了予定は、2024年12月から2025年1-3月期への延期とされています。 ▪ 参考: IBM社によるHashiCorp社買収について • とはいえ、1つのツールが使えなくなることで業務が止まるのは避けたいので常に選択肢は複数取っておきたい。 ◦ OpenTofuに限らず、Pulumi、CDK(AWS)なども選択肢として取っておきたい。 • OpenTofuはTerraformとは違う独自進化をしているので、変更を追っていきたい。 ◦ 個人的にはState暗号化とかBackendの変数参照とかTerraformに入ってほしい • それでは良い豆腐ライフを! • minamijoyoさんのTerraform職人のためのOpenTofu再入門2024がものすごく詳しいので、このスライド見るよりこっちのほう が参考になります。 Copyright © 3-shake, Inc. All Rights Reserved. まとめ 23