[解決済み] Terraform - ローカルexecで複数のコマンドを実行できない
質問
Terraformの世界に入ったばかりです。Terraformを使ってシェルスクリプトを実行しようとしています。
以下は、main.tf ファイルです。
#Executing shell script via Null Resource
resource "null_resource" "install_istio" {
provisioner "local-exec" {
command = <<EOT
"chmod +x install-istio.sh"
"./install-istio.sh"
EOT
interpreter = ["/bin/bash", "-c"]
working_dir = "${path.module}"
}
}
以下は、install-istio.shを実行するために必要なファイルです。
#!/bin/sh
# Download and install the Istio istioctl client binary
# Specify the Istio version that will be leveraged throughout these instructions
ISTIO_VERSION=1.7.3
curl -sL "https://github.com/istio/istio/releases/download/$ISTIO_VERSION/istioctl-$ISTIO_VERSION-linux-amd64.tar.gz" | tar xz
sudo mv ./istioctl /usr/local/bin/istioctl
sudo chmod +x /usr/local/bin/istioctl
# Install the Istio Operator on EKS
istioctl operator init
# The Istio Operator is installed into the istio-operator namespace. Query the namespace.
kubectl get all -n istio-operator
# Install Istio components
istioctl profile dump default
# Create the istio-system namespace and deploy the Istio Operator Spec to that namespace.
kubectl create ns istio-system
kubectl apply -f istio-eks.yaml
# Validate the Istio installation
kubectl get all -n istio-system
以下のような警告が表示されるのですが。
Warning: Interpolation-only expressions are deprecated
on .terraform/modules/istio_module/Istio-Operator/main.tf line 10, in resource "null_resource" "install_istio":
10: working_dir = "${path.module}"
Terraform 0.11 and earlier required all non-constant expressions to be
provided via interpolation syntax, but this pattern is now deprecated. To
silence this warning, remove the "${ sequence from the start and the }"
sequence from the end of this expression, leaving just the inner expression.
Template interpolation syntax is still used to construct strings from
expressions when the template includes multiple interpolation sequences or a
mixture of literal strings and interpolations. This deprecation applies only
to templates that consist entirely of a single interpolation sequence.
main.tfにある上記のスクリプトは、バックグラウンドでコマンドを実行します。
どなたか、足りない部分を教えてください。また、どうすれば警告メッセージを消すことができますか?
あなたの助けに感謝します、ありがとうございます
解決方法は?
実は関係ない2つのことが起きていると思うのですが。
ここでの主な問題点は
local-exec
スクリプトを作成します。
command = <<EOT
"chmod +x install-istio.sh"
"./install-istio.sh"
EOT
これが以下のようなシェルスクリプトになって実行されます。
"chmod +x install-istio.sh"
"./install-istio.sh"
最初のコマンドラインを引用符で囲むことで、あなたはシェルに対して、次のようなプログラムを実行しようとするよう指示しています。
chmod +x install-istio.sh
引数なしで。つまり、シェルは実行ファイルをあなたの
PATH
と呼ばれる
chmod +x install-istio.sh
という名前のコマンドを実行しようとするのではなく
chmod
を引数として指定することができます。
コマンドラインを囲む引用符を削除すると、このようになります。どちらのコマンドも引用符で囲む必要があるような特殊な文字を含んでいないため、引用符は必要ではありません。
command = <<-EOT
chmod +x install-istio.sh
./install-istio.sh
EOT
補間のみの式に関する警告メッセージは、これらのコマンドの実行の問題とは無関係です。これは、後方互換性のためにまだサポートされているが、もはや推奨されないレガシー構文を使用したことを告げているのです。
この記事を書いている時点で Terraform の最新版 (v0.15 以降) を使っているなら、このモジュールディレクトリに移動して、このような警告を解決できるかもしれません。
terraform fmt
これは、設定を更新して期待されるスタイル規約に一致させるためのコマンドです。
あるいは、このコマンドで自動的に更新される内容を手動で変更することもできます。
path.module
:
working_dir = path.module
関連
-
[解決済み】環境変数TERMが設定されていない件
-
[解決済み】スラッシュとrsyncコマンド
-
[解決済み] Ubuntuにchkconfigをインストールするにはどうしたらいいですか?
-
[解決済み] glibc: elfファイルのOS ABIが無効です。
-
[解決済み] Bashスクリプトでスクリプトファイル名を知るには?
-
[解決済み] FIN_WAIT1とはどのような意味ですか?
-
[解決済み] モスキートクライアントの取得が接続を拒否
-
[解決済み] ユーザーデータスクリプトは私のカスタムAMIでは動作しませんが、標準のAmazon linuxでは動作しています。
-
[解決済み] php] <defunct>のプロセスを削除することはできますか?
-
[解決済み] ls: 読み込みディレクトリ .: 入出力エラー [閉じた].
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Linuxのdocker-composeでパーミッションが拒否されました【終了】。
-
[解決済み】PytorchがCUDAは利用できないと言う件
-
[解決済み] chmod: 'my_script.sh' のパーミッションを変更しました。操作が許可されていない
-
[解決済み] MongoDBへの接続が拒否された errno 111
-
[解決済み] Linuxです。WGET -i オプションを使用したスキームが見つからない
-
[解決済み] awk や sed を使って特定の文字を削除する
-
[解決済み] ftp: 名前またはサービスが不明
-
[解決済み] Tarエラーです。アーカイブ内の予期しないEOF
-
[解決済み] sudoとnohupを連動させる
-
[解決済み] Solaris では lsof -i が相当します。