私が思い付く最もエレガントな解決策は、「外部データソース」プロバイダを使用することです。 https://www.terraform.io/docs/providers/external/data_source.html
これは、人々がlocal-exec、null-resourceおよびvarsを組み合わせてローカルに何かを注入する目的で作成されたものです。
とにかく、小さなスクリプトを書くことなくこれを行うことができます。これは、JSONの読み込みを想定している「外部データソース」です。だから私の例では、私はちょうどプログラムのJSON文字列を構築し、そのプログラムを呼び出します。
:
data "external" "example" {
program = ["sh", "test.sh" ]
}
output "commandout" {
value = "${data.external.example.result}"
}
ここに私のシェルスクリプト(test.sh)である:私はここに私のmain.tfファイルがされて...
これはエコーやJQを使用して1つのライナーで行うことができると確信しています技術的には
#!/bin/bash
echo {\"ip\":\""`hostname -I`"\"}
あなたが使用することができます。このような状況たら:あなたのvar入力として
${data.external.example.result}
を。
ここでは、terraformの出力を使った私の動作例です。あなたが唯一のNICを持っている場合hostname -I
は、そうでない場合は、代替コマンドを使用するか、ご希望の結果の出力をカット:) OKであることを
data.external.example: Refreshing state...
Apply complete! Resources: 0 added, 0 changed, 0 destroyed.
Outputs:
commandout = {
ip = 10.0.2.15
}
注意。
awesome !! main.tfに関する質問があります main.tfはterraformで初めて実行されますか? main.tfで定義された設定をどこでも使用できますか? – sukho
テラフォームは* .tfをワークスペースにロードするため、現在のワークスペースで値を入手するか、リモートデータでインポートする必要があります。 –
@AnshuPrateek私の新しい質問が見えますか?私は基本的な問題をまだ解決していない。リンクはこちらですhttps://stackoverflow.com/questions/47311916/how-to-put-in-varable-tf-to-run-script-with-data-external-in-terraform – sukho