2017-03-24 5 views
2

terraformでの可変補間に問題があります。私のテラフォームの構成は次のようになります。組み込み関数の内部すなわち変数Terraformでの可変補間

variable "key" {} 

    ssh_keys { 
     path  = "/home/${var.provider["user"]}/.ssh/authorized_keys" 
     key_data = "${file(${var.key})}" 
    } 

コマンド:テラフォームが適用されます。-var「キー=の〜/ .ssh/id_rsa.pub」

それは、コマンドライン引数から「キー」の値を読んでいませんか、 env変数から。しかし、私が.tfファイルの値をハードコアすると、動作します。以下のように。

key_data = "${file("~/.ssh/id_rsa.pub")}" 
+0

コードの空になるようにハードコーディングして、変数のコマンドラインまたはenv入力を上書きしていますか? –

答えて

3

引用符で囲まれた文字列に式を埋め込む場合${ ... }構文のみが使用されます。あなたのvar.key変数だけですでに${ ... }シーケンス内の関数への引数として渡されている。この場合では、あなただけのように直接変数名を参照することができます。

key_data = "${file(var.key)}" 

ネストされたシーケンス${ ... }が時々渡すために使用されています補間された文字列を関数に渡します。その場合、最初に文字列コンテキストに戻るためのネストされた一組の引用符があります。例えば:このより複雑な場合には

key_data = "${file("${path.module}/${var.key_filename}")}" 

、最も内側の文字列式は、最初ついにとして返される結果と、その文字列全体がfile関数に渡され/、一緒に2つの変数を結合するために評価され、 key_dataの値。

0

ssh_keys - (オプション)仮想マシン上に配置するためのパスとkey_dataのコレクションを指定します。

Note: Please note that the only allowed path is /home/<username>/.ssh/authorized_keys due to a limitation of Azure. 

は参照:AZURERM_VIRTUAL_MACHINE

-1

上記のシナリオで間違ったフラグを使用していたため、動作しません。

あなたは次のように「-var-ファイル」フラグを使用したファイルへのパスを指定する場合:

terraform apply -var-file=~/.ssh/id_rsa.pub 

あなたが「-var」フラグを使用する必要がある場合、あなたはの内容を指定する必要があります。

+0

これは疑問に答えるものではなく、さらに、与えられた-var-fileと-varの両方の使用法も間違っています。 -var-fileは、(terraform.tfvarsの代わりに)変数値を含む代替ファイルを提供するために使用されます。 -varは変数に値を渡すために使用されますが(上で正しく述べられています)、問題のコードでは機能しません。 –

関連する問題