Linux的Azure扩展脚本
问题描述:
我试图通过使用'&'使用Linux的Azure自定义扩展脚本分隔每个命令来执行多个shell脚本。Linux的Azure扩展脚本
ARM模板是部署模型。
示例代码段:
"settings": {
"fileUris": "[script1,script2, script3]",
"commandToExecute": "sh script1.sh && sh scrip2.sh && sh script3.sh"
}
但只有第一个脚本执行和其他两个脚本不执行。
注意:脚本日志路径中也没有错误。我也看到了所有在waagent文件夹路径中下载的脚本。
任何帮助将是非常好的。
操作系统:Linux
答
ARM模板片段
cmdToExecute = script1.sh参数1参数2 & & script2.sh param1 param2 & & script3.sh作为字符串传递给包装脚本,如
“commandToExecute”:“[concat('sh script_execut or.sh \“”,参数( 'cmdToExecute') '\”')]“
script_executor.sh - 需要所有的命令作为参数,并执行
答
如果您有多个脚本,您可以编写一个入口点脚本调用相关脚本,然后上传入口点脚本,相关脚本和其他相关的二进制文件的脚本位置(Azure存储块或GitHub)。您可以使用以下格式来确保上传多个文件:“fileUris” : [“ScriptFileUri1”, “ScriptFileUri2”, "ScriptFileUri3"]
更多信息请参阅此link。
如果你想设置script1.sh为切入点脚本,你可以编辑你的脚本,如下面:
##script in scrpit1.sh
echo "hello world"
##call script2.sh
./script2.sh
##call script3.sh
./script3.sh
SCRIPT1,SCRIPT2,script3已经在上传的每个命令Azure块blob。我没有提到每个脚本都需要一些参数[运行时部署值(动态IP等)] 我自己想出了一个不同的解决方案,我将所有命令作为字符串传递给不同的脚本照顾执行 – SaiVikas
@SaiVikas感谢您的分享。使用'入口点脚本'是一个很好的解决方案。 –