Slide 1

Slide 1 text

OpenTofuについてそろそろ調べてみるか SRETT #11 Copyright © 3-shake, Inc. All Rights Reserved. 株式会社スリーシェイクSreake事業部 鈴木勝史

Slide 2

Slide 2 text

Copyright © 3-shake, Inc. All Rights Reserved. おまえだれよ 2 ● すずきまさし/masasuzu/@masasuz ● 株式会社スリーシェイク Sreake事業部所属 ● クラウドインフラなんでも屋さんしてます ○ 設計、運用、構築等の支援をやってます。 ○ 支援だけでなく実作業もなんでもやります。 ● AWSちょっとわかる ○ AWS Community Builder 2024 Cloud Operation ● Google Cloudほんのちょっとわかる ● Terraformちょっとわかる ● OpenTofuなにもわからない

Slide 3

Slide 3 text

● KubeCon + CloudNativeCon NA North America 2024に先日行ってきてました。 ● その中で共同開催されていた OpenTofu Dayを見て興味を得ました。 ○ 参考: OpenTofu Day ● 普段Terraform使ってますが、この機会に OpenTofuに深堀りしてみたいというのが動機です。 ● 技術検証活動のテーマにも沿ってるのでちょうどいいなと思い調査してます。 ○ 私のテーマはTerraformを中心にIaC周りの技術調査となってます。 Copyright © 3-shake, Inc. All Rights Reserved. 動機 3

Slide 4

Slide 4 text

● 普段Terraformを使ってます。 ● OpenTofuは業務では使ってません。豆腐職人ではありません。 ● 時間の制約上、説明を端折っているところがあります。 ○ Terraformをある程度知っている前提で話してしまいます。 ● 継続的に流れを追ってきたわけではないので、不正確な箇所がある可能性があります。 ● 資料自体はConnpassの資料ページにすでにアップロード済みです。 ● 後日もう少しまとめてブログに書きます。 Copyright © 3-shake, Inc. All Rights Reserved. 前提、おことわり、言い訳 4

Slide 5

Slide 5 text

Copyright © 3-shake, Inc. All Rights Reserved. 目次 5 1. OpenTofuとは 2. ライセンスの課題 3. OpenTofuとTerraformの違い 4. まとめ

Slide 6

Slide 6 text

Copyright © 3-shake, Inc. All Rights Reserved. OpenTofuとは 01 6

Slide 7

Slide 7 text

● 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

Slide 8

Slide 8 text

Copyright © 3-shake, Inc. All Rights Reserved. ライセンスの課題 02 8

Slide 9

Slide 9 text

● 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

Slide 10

Slide 10 text

● 従来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

Slide 11

Slide 11 text

● HashiCorp社が説明したBSLと追加使用許可はあいまいである。 ○ そのため、自身の行動が許諾範囲内か判断が困難である。 ● 「競合製品」の定義やライセンス自体が今後変更されるか不確実である。 ● TerraformはOSSの恩恵を受けて成長してきてため、これからもオープンソースソフトウェアであるべき。 ● 参考: OpenTofu FAQ ● OpenTofuのスポンサー ○ Harness ○ Gruntwork ○ Spacelift ○ env0 ○ Scalr Copyright © 3-shake, Inc. All Rights Reserved. コミュニティの懸念 11

Slide 12

Slide 12 text

Copyright © 3-shake, Inc. All Rights Reserved. OpenTofuとTerraformの違い 03 12

Slide 13

Slide 13 text

● 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

Slide 14

Slide 14 text

● 基本的には terraform を tofuに置き換えていただければよいです。サブコマンドは一緒です。 Copyright © 3-shake, Inc. All Rights Reserved. コマンド 14

Slide 15

Slide 15 text

● 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

Slide 16

Slide 16 text

● 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

Slide 17

Slide 17 text

● 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

Slide 18

Slide 18 text

● 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

Slide 19

Slide 19 text

● 複数プロジェクトで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

Slide 20

Slide 20 text

● 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

Slide 21

Slide 21 text

● HCP Terraform(旧Terraform Cloud)に相当するSaaSとしては、OpenTofuスポンサーのSpacelift、env0、Scalrな どがあります。 ● tfactions、atlantis、diggerもOpenTofuに対応している模様です。 Copyright © 3-shake, Inc. All Rights Reserved. CI/CD 21

Slide 22

Slide 22 text

Copyright © 3-shake, Inc. All Rights Reserved. まとめ 05 22

Slide 23

Slide 23 text

● 現時点で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