OpenTofu コミュニティの皆様、こんにちは!ここ数ヶ月、状態暗号化や削除済みブロックなどの新機能、そして互換性の向上に力を入れてきました。数日前に、これらの改良の最初のプレビュー版であるOpenTofu 1.7.0-alpha1をリリースしました。
新しいアルファ版で問題が発生しないように最善を尽くしましたが、このリリースのテストには皆様の助けが必要です。本番環境以外の環境で新機能のテストにご協力いただける場合は、テストしていただき、GitHub の Issue を使用してフィードバックをお寄せください。すべてがうまくいったというご報告だけでも結構です。
このブログ記事では、新しいプレビューリリースのダウンロード方法と、各新機能の動作について説明します。
本番プロジェクトではこのリリースをテストしないでください!安定版ではありません!
アルファ版のダウンロード
アルファ版は、GitHub リリースページからのみ入手できます。ご利用のプラットフォームに適したファイルを選択してください。いくつかのクイックリンクを以下に示します。
プラットフォーム/デバイス | ダウンロードリンク |
---|---|
デスクトップ Windows コンピューター (64ビット) | tofu_1.7.0-alpha1_windows_amd64.zip |
MacOS (Macbook M1以降; ARM64) | tofu_1.7.0-alpha1_darwin_arm64.tar.gz |
MacOS (Macbook M1以前; AMD64) | tofu_1.7.0-alpha1_darwin_amd64.tar.gz |
Intel/AMD Linux コンピューターまたはサーバー (AMD64) | tofu_1.7.0-alpha1_linux_amd64.tar.gz |
ARMベースのLinuxコンピューター または Raspberry Pi 3以降 (ARM64) | tofu_1.7.0-alpha1_linux_arm64.tar.gz |
上記のリリースについては、アーカイブを解凍すると、`tofu`バイナリが見つかるはずです。スタンドアロンインストーラーを使用して、署名検証付きでリリースをダウンロードすることもできます。
状態暗号化
状態暗号化は、このリリースの主要機能の1つです。この機能については、完全なドキュメントを用意しています。
この機能をテストするには、状態ファイルのバックアップを作成してから、次の設定を追加してください。
terraform {
encryption {
key_provider "pbkdf2" "my_passphrase" {
passphrase = "" # Enter a passphrase here
}
method "aes_gcm" "my_method" {
keys = key_provider.pbkdf2.my_passphrase
}
state {
method = method.aes_gcm.my_method
fallback{} # Remove after the migration is complete.
}
}
}
暗号化された状態ファイルから暗号化されていない状態ファイルへの移行は、このように行います。
terraform {
encryption {
key_provider "pbkdf2" "my_passphrase" {
passphrase = "" # Enter a passphrase here
}
method "aes_gcm" "my_method" {
keys = key_provider.pbkdf2.my_passphrase
}
state {
# Leave this block empty apart from the fallback block.
fallback{
method = method.aes_gcm.my_method
}
}
}
}
AWSアカウントにアクセスできる場合は、AWS Key Management Serviceキープロバイダーもテストできます。(AWS KMS の価格にご注意ください。)
OpenTofu コア開発チームは、この機能への多大な貢献に対して、Stephan Bartels (Interhyp) 氏と Alex Scheel 氏に感謝いたします。
削除済みブロック
削除済みブロックを使用すると、状態ファイルからリソースを削除できますが、インフラストラクチャ上にはリソースが残ります。この機能については、完全なドキュメントを用意しています。まずリソースを作成してテストできます。
resource "local_file" "test" {
content = "Hello world!"
filename = "test.txt"
}
適用後、リソースを削除済みブロックに置き換えることができます。
removed {
from = local_file.test
}
次の適用後、`local_file.test`リソースは状態ファイルに存在しなくなりますが、`test.txt`ファイルはディスク上に存在するはずです。これで、`removed`ブロックを安全に削除できます。
組み込み関数の変更
このリリースには、いくつかの新しい関数と、既存の関数の変更も含まれています。
- 新関数:templatestring
- 新関数:base64gunzip
- 新関数:cidrcontains
- 新関数:urldecode
- 新関数:issensitive
- nonsensitive は、適用された値が機密情報ではない場合、エラーを返さなくなりました。
- templatefile は、最大深度 1024 の再帰をサポートするようになりました。
CLI の変更
CLI にもいくつかの変更があります。
- `tofu plan` には、プラン出力を短縮するための `-concise` フラグが追加されました。
- `tofu console` は、Solaris と AIX で動作するようになりました。
- CLI は、XDG ディレクトリ仕様をサポートするようになりました。
- `state list` → `state ls`、`state mv` → `state move`、`state rm` → `state remove` のエイリアスが追加されました。
フィードバックの提供
このプレビューリリースのテストにご協力いただきありがとうございます。フィードバックがある場合は、GitHub の Issue を使用するか、OpenTofu Slack でチャットしてください。