コマンド: output
tofu output
コマンドは、状態ファイルから出力変数の値を取り出すために使用されます。
使用方法
使用方法: tofu output [オプション] [NAME]
追加の引数がない場合、output
はルートモジュールのすべての出力を表示します。出力NAME
が指定されている場合、その出力の値のみが出力されます。
バックエンド設定または暗号化ブロックでの変数の使用には、tofu output
の実行時にルートモジュール変数への値の割り当てが必要です。
コマンドラインフラグはすべてオプションです。使用可能なフラグは以下のとおりです。
-
-json
- 指定した場合、出力はJSONオブジェクトとしてフォーマットされ、出力ごとにキーが付けられます。NAME
が指定されている場合、指定された出力のみが返されます。これは、jq
などのツールにパイプして、さらに処理することができます。 -
-raw
- 指定した場合、OpenTofuは指定された出力値を文字列に変換し、特別なフォーマットなしにその文字列を出力に直接出力します。これはシェルスクリプトを使用する場合に便利ですが、文字列、数値、ブール値のみをサポートします。複雑なデータ型を処理するには、代わりに-json
を使用してください。 -
-no-color
- 指定した場合、出力に色は含まれません。 -
-state=path
- 状態ファイルへのパス。デフォルトは"terraform.tfstate"です。リモート状態が使用されている場合は無視されます。 -
-var 'NAME=VALUE'
- 設定のルートモジュールの入力変数の値を設定します。複数の変数を設定するには、このオプションを複数回使用します。詳細についてはコマンドラインでの入力変数を参照してください。 -
-var-file=FILENAME
- "tfvars"ファイルの定義を使用して、設定のルートモジュールの複数の入力変数の値を設定します。複数のファイルを含めるには、このオプションを複数回使用します。
-var
および-var-file
オプション以外にも、ルートモジュールの入力変数の値を設定する方法はいくつかあります。詳細についてはルートモジュール変数への値の割り当てを参照してください。
-json
または-raw
コマンドラインフラグを使用する場合、OpenTofu状態の機密値はプレーンテキストで表示されます。詳細については、状態の機密データを参照してください。
例
これらの例は、次のOpenTofu出力スニペットを前提としています。
output "instance_ips" {
value = aws_instance.web.*.public_ip
}
output "lb_address" {
value = aws_alb.web.public_dns
}
output "password" {
sensitive = true
value = var.secret_password
}
すべての出力をリストする
$ tofu output
instance_ips = [
"54.43.114.12",
"52.122.13.4",
"52.4.116.53"
]
lb_address = "my-app-alb-1657023003.us-east-1.elb.amazonaws.com"
password = <sensitive>
sensitive
属性を持つ出力は、改ざんされることに注意してください。
$ tofu output password
password = <sensitive>
ロードバランサのDNSアドレスを照会する
$ tofu output lb_address
"my-app-alb-1657023003.us-east-1.elb.amazonaws.com"
すべてのインスタンスのIPアドレスを照会する
$ tofu output instance_ips
instance_ips = [
"54.43.114.12",
"52.122.13.4",
"52.4.116.53"
]
自動化での使用
tofu output
コマンドは、デフォルトでは人間が読みやすい形式で表示されますが、これは時間の経過とともに明確性を向上させるために変更される可能性があります。
スクリプトと自動化のために、安定したJSON形式を出力するには-json
を使用します。jqなどのJSONコマンドラインパーサーを使用して出力を解析できます。
$ tofu output -json instance_ips | jq -r '.[0]'
54.43.114.12
シェルスクリプトで文字列値を直接使用する場合、余分なエスケープや空白文字なしに文字列を直接出力する-raw
を使用できます。
$ tofu output -raw lb_address
my-app-alb-1657023003.us-east-1.elb.amazonaws.com
-raw
オプションは、OpenTofuが自動的に文字列に変換できる値でのみ機能します。オブジェクトなどの複雑な型値を処理するには、jq
と組み合わせて-json
を使用してください。
OpenTofuの文字列は、生のバイトではなくUnicode文字のシーケンスであるため、非ASCII文字を含む場合、-raw
出力はUTF-8でエンコードされます。別の文字エンコーディングが必要な場合は、iconv
などの別のコマンドを使用して、OpenTofuの生の出力を変換してください。