我正在尝试使用包装在 bash 脚本中的 Salt Cloud 在 VMWare 中配置 Windows 虚拟机,以便我可以对其进行参数化,但我遇到了 map_data 转义的问题。
我的命令是:
#!/bin/bash
salt salt-cloud cloud.map_run map_data='{"PROFILE":[{"HOSTNAME":{"folder":"FOLDER","devices":{"network":{"Network adapter 1":{"ip":"MYIP"}}}}}]}'
这很好用,但是我希望 HOSTNAME、FOLDER 和 MYIP 成为变量($hostname $folder 和 $ip),并且我在转义方面有点挣扎,以便变量被扩展并正确传递给 salt。
我尝试将变量内联在命令中:
salt salt-cloud cloud.map_run map_data='{"PROFILE":[{"$hostname":{"folder":"$folder,"devices":{"network":{"Network adapter 1":{"ip":"$ip"}}}}}]}'
这可以在使用有关可变元素不正确的 vmware 错误轰炸之前复制配置文件中的模板
我还尝试将整个地图数据封装在一个变量中,转义双引号并传递它,例如,
data="'{\"PROFILE\":[{\"$hostname\":{\"folder\":\"$folder\",\"devices\":{\"network\":{\"Network adapter 1\":{\"ip\":\"$ip\"}}}}}]}'"
如果我回显它,这似乎可以正确扩展,但是当我将它添加到我的命令时:
salt salt-cloud cloud.map_run map_data=$data
我收到以下错误:
Passed invalid arguments to cloud.map_run: map_run() takes at most 1 argument (10 given)
我知道这可能不是严格意义上的 Salt 的问题,但我想知道是否有人可以给我一些关于如何进行的指示?