Terraformを使用して AWS で VM をスピンアップするために使用するcloud-init構成ファイルがあり、テストとデバッグのためにMultipassを使用してローカルで実行したいと考えています。
cloud-init ファイルには、いくつかのシェル スクリプトが含まれています。Terraform では、変数$$var
を$var
. また、ホスト名のテンプレート変数も使用します。
クラウドとローカルの両方で同じ構成ファイルを使用できるようにするには、次のコマンドを使用してテンプレートを展開し、手動で文字列を置換せずにマルチパス VM を起動できると考えました。
terraform console <<< "templatefile(\"cloud-init.yaml\", {hostname: \"test\"})" | multipass launch -n test --cloud-init -
しかし、templatefile
関数はその出力をヒアドキュメントでラップすることがわかりました。
<<EOT
... contents ...
EOT
もちろん、マルチパスはこの構文を理解せず、(あまり役に立たない) エラー メッセージを出力します。
launch failed: operator[] call on a scalar (key: "users")
理想的には、Terraform コマンドはヒアドキュメント ラッパーなしでファイルをレンダリングできる必要があります。しかし、代わりに、これを機能させるシェルトリックはありますか?