本文へスキップ

コマンド: output

tofu outputコマンドは、状態ファイルから出力変数の値を取り出すために使用されます。

使用方法

使用方法: tofu output [オプション] [NAME]

追加の引数がない場合、outputはルートモジュールのすべての出力を表示します。出力NAMEが指定されている場合、その出力の値のみが出力されます。

コマンドラインフラグはすべてオプションです。使用可能なフラグは以下のとおりです。

  • -json - 指定した場合、出力はJSONオブジェクトとしてフォーマットされ、出力ごとにキーが付けられます。NAMEが指定されている場合、指定された出力のみが返されます。これは、jqなどのツールにパイプして、さらに処理することができます。

  • -raw - 指定した場合、OpenTofuは指定された出力値を文字列に変換し、特別なフォーマットなしにその文字列を出力に直接出力します。これはシェルスクリプトを使用する場合に便利ですが、文字列、数値、ブール値のみをサポートします。複雑なデータ型を処理するには、代わりに-jsonを使用してください。

  • -no-color - 指定した場合、出力に色は含まれません。

  • -state=path - 状態ファイルへのパス。デフォルトは"terraform.tfstate"です。リモート状態が使用されている場合は無視されます。

  • -var 'NAME=VALUE' - 設定のルートモジュールの入力変数の値を設定します。複数の変数を設定するには、このオプションを複数回使用します。詳細についてはコマンドラインでの入力変数を参照してください。

  • -var-file=FILENAME - "tfvars"ファイルの定義を使用して、設定のルートモジュールの複数の入力変数の値を設定します。複数のファイルを含めるには、このオプションを複数回使用します。

-varおよび-var-fileオプション以外にも、ルートモジュールの入力変数の値を設定する方法はいくつかあります。詳細についてはルートモジュール変数への値の割り当てを参照してください。

これらの例は、次の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の生の出力を変換してください。