我正在用Terraform構建AWS基礎設施,需要將一個帶有變數的shell腳本傳遞到啟動模板的用戶資料中。我是這樣參考在一個變數中的腳本的:
**user_data_base64 = filebase64(var.aws_userdata)**
這是我遇到的其中一個錯誤:
這是我遇到的其中一個錯誤。
**錯誤。變數不允許
│
│在variables.tf第345行,in變數"s1_aws_userdata"。
│ 345: source /tmp/${CURL_FILEPATH}。
│
│這里不能使用變數。**。
在Terraform中是否有可能完成這個任務?這里是帶有腳本的變數:
變數 "s1_aws_userdata"/span> {
type = "string"
默認 = <<EOF
#!/usr/bin/env bash
函式 download_and_run_scripts {
echo
# 依賴性檢查
if [ ! -x /usr/bin/curl ]; then
echo -e "Error, curl is not installed."
exit 1
fi
# s1g_install 腳本
local DOWNLOAD_SCRIPTS="toolkit.sh ${AMI_SCRIPTS}"
local CURL_FILEPATH=""
for CURL_FILEPATH in ${DOWNLOAD_SCRIPTS}; do
echo -e "
正在下載。${curl_filepath}
"
case ${CURL_FILEPATH} in
toolkit.sh)
local CURL_REPO="s1_tools"
;;
*)
本地CURL_REPO="s1g_install"
;;
許可證
local CURL_TOKEN="XXXX"
本地CURL_OWNER="xxx"
本地CURL_URL="xxxx"
/usr/bin/curl --header "Authorization: token ${CURL_TOKEN}" --header "Accept: application/vnd.github.v3.raw"
--location ${CURL_URL} -o /tmp/${CURL_FILEPATH} --silent
if [ ! -f /tmp/${CURL_FILEPATH} ]; then
echo -e "錯誤,無法下載${CURL_FILEPATH}檔案。"
退出 1
fi
chmod x /tmp/${CURL_FILEPATH}.
source /tmp/${CURL_FILEPATH}。
完成
}
#------------------------------------------------------------------------------------------
# 在這里定義將在第一次運行時執行的腳本(用1個空格分隔)。
AMI_SCRIPTS="s1_ami_base_lynis.sh"
#------------------------------------------------------------------------------------------
下載和運行腳本
EOF
}
uj5u.com熱心網友回復:
由于你的腳本變數參考看起來就像Terraform的插值語法,Terraform不知道如何處理它。你需要escape shell腳本中的變數使用雙美元符號$$。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/308101.html
標籤:
上一篇:《Kali Linux高級滲透測驗原書第2版》網路滲透測驗技術書 無線網路滲透測驗詳解 黑客攻擊與防范實戰從入門到精通書
