本文へスキップ

OpenTofu 1.7.0-beta1 リリース準備完了

Get ready for OpenTofu 1.7.0-beta1

このバージョンには、プロバイダー定義関数とアルファ版からの大幅な改善が含まれています。

アルファ版と同様に、このバージョンも徹底的にテストしましたが、本番環境以外でのテストにコミュニティの皆様のご協力をお願いいたします。GitHubからコピーを入手し、GitHubのissueを使用してご意見をお聞かせください。

ベータ版のダウンロード

ベータ版は、GitHubリリースページからのみ入手できます。お使いのプラットフォームに適したファイルを選択してください。いくつかのクイックリンクを以下に示します。

プラットフォーム/デバイスダウンロードリンク
デスクトップWindowsコンピューター
(64ビット)
tofu_1.7.0-beta1_windows_amd64.zip
MacOS
(MacBook M1以降; ARM64)
tofu_1.7.0-beta1_darwin_arm64.tar.gz
MacOS
(MacBook M1以前; AMD64)
tofu_1.7.0-beta1_darwin_amd64.tar.gz
Intel/AMD Linuxコンピューターまたはサーバー
(AMD64)
tofu_1.7.0-beta1_linux_amd64.tar.gz
ARMベースのLinuxコンピューター
または
Raspberry Pi 3以降

(ARM64)
tofu_1.7.0-beta1_linux_arm64.tar.gz

上記のリリースについては、アーカイブを解凍すると、中に`tofu`バイナリがあります。スタンドアロンインストーラーを使用して、署名検証付きでリリースをダウンロードすることもできます。

プロバイダー定義関数

新しいTerraform Plugin SDKは、OpenTofuで直接使用できるプロバイダー定義関数のサポートを追加しました。これは、データソースを使用する場合と比較して大幅な改善であり、プロバイダー定義関数は状態ファイルのサイズを増やさず、記述するコードも少なくて済みます。

プロバイダー定義関数をテストするには、corefuncプロバイダー(Ryan Parman氏作成)を使用できます。

コードブロック
terraform {
required_providers {
corefunc = {
source = "northwood-labs/corefunc"
version = "1.4.0"
}
}
}

provider "corefunc" {
}

output "test" {
value = provider::corefunc::str_snake("Hello world!")
# Prints: hello_world
}

ループ可能なインポートブロック

宣言的なインポートブロックにいくつかの改善を加えました。最も顕著なのは、ブロックに`for_each`命令を使用できるようになったことです。この機能に関する完全なドキュメントを用意しました。

以前のOpenTofuバージョンでは、`import`ブロックを使用してリソースを宣言的にインポートできました(例:)

コードブロック
resource "random_id" "test_id" {
byte_length = 8
}

import {
to = random_id.test_id
id = "Y2FpOGV1Mkk"
}

output "id" {
value = random_id.test_id.b64_url
}

この新しいバージョンでは、ループ内でリソースを宣言的にインポートすることもできます。

コードブロック
variable "server_ids" {
type = list(string)
}

resource "random_id" "test_id" {
byte_length = 8
count = 2
}

import {
to = random_id.test_id[tonumber(each.key)]
id = each.value
for_each = {
for idx, item in var.server_ids: idx => item
}
}

output "id" {
value = random_id.test_id.*.b64_url
}

上記の例では、変数からいくつかのランダムなIDを指定し、他のIDは自動的に生成されます。

状態の暗号化

状態の暗号化は、このリリースの主要機能の1つです。この機能に関する完全なドキュメントを用意しました。アルファリリース以降、暗号化されていない状態ファイルから暗号化された状態ファイルへの移行プロセスとロールバックメカニズムを刷新し、構文をより明確にしました。

この機能をテストする前に、状態ファイルの**バックアップを作成してください**。次に、次のブロックを追加して状態の暗号化を有効にすることができます。

コードブロック
terraform {
encryption {
key_provider "pbkdf2" "my_passphrase" {
## Enter a passphrase here:
passphrase = ""
}

method "aes_gcm" "my_method" {
keys = key_provider.pbkdf2.my_passphrase
}

## Remove this after the migration:
method "unencrypted" "migration" {
}

state {
method = method.aes_gcm.my_method

## Remove the fallback block after migration:
fallback{
method = method.unencrypted.migration
}
## Enable this after migration:
#enforced = true
}
}
}

次の構文を使用して移行を元に戻すことができます。

コードブロック
terraform {
encryption {
key_provider "pbkdf2" "my_passphrase" {
## Enter a passphrase here:
passphrase = ""
}

method "aes_gcm" "my_method" {
keys = key_provider.pbkdf2.my_passphrase
}

method "unencrypted" "migration" {
}

state {
method = method.unencrypted.migration
enforced = false
fallback{
method = method.aes_gcm.my_method
}
}
}
}

AWS、GCPアカウント、またはOpenBao/MPLライセンスのHashiCorp Vaultインストールにアクセスできる場合は、これらのキープロバイダーをテストすることもできます

削除ブロック

削除ブロックを使用すると、状態ファイルからリソースを削除できますが、インフラストラクチャには残ります。この機能に関する完全なドキュメントを用意しました。まずリソースを作成してテストできます。

コードブロック
resource "local_file" "test" {
content = "Hello world!"
filename = "test.txt"
}

適用後、リソースを削除ブロックで置き換えることができます。

コードブロック
removed {
from = local_file.test
}

次の適用後、`local_file.test`リソースが状態ファイルに存在しなくなりますが、`test.txt`ファイルはディスク上に存在するはずです。これで、削除ブロックを安全に削除できます。

組み込み関数の変更

このリリースには、いくつかの新しい関数と既存関数の変更も含まれています。

CLIの変更

CLIにもいくつかの変更があります。

  • tofu init は、JSON 出力を得るために -json フラグをサポートするようになりました。
  • tofu plan には、計画出力の短縮を行う -concise フラグが追加されました。
  • tofu console は、Solaris と AIX で動作するようになりました。
  • CLI は、XDG ディレクトリ仕様をサポートするようになりました。
  • エイリアスの変更
    • state liststate ls
    • state mvstate move
    • state rmstate remove

テスト機能の変更

  • Tofu は、テストフォルダから .tfvars ファイルを読み取るようになりました。

フィードバックのご提供

このプレビューリリースのテストにご協力いただきありがとうございます。フィードバックがありましたら、GitHub の issue をご利用いただくか、OpenTofu Slack でご連絡ください。