我们最近建立了一个API,该API允许我们查询VM列表而不是使用清单文件。我正在尝试将此与我们的ansible设置结合在一起。我对使用动态清单非常陌生,并且由于对python的使用经验不足,因此尝试使用bash进行了几种不同的更改。
这几乎可行,但是只要剧本还没有成为:true。如果剧本需要sudo,则会出现此错误
FAILED! => {"changed": false, "module_stderr": "/bin/sh: sudo: command not found", "module_stdout": "", "msg": "MODULE FAILURE", "rc": 127}
SERVER1=($(curl -sS --request GET https://foo/bar| awk 'BEGIN {FS="["} {print $1}'))
cat <<EOF
{
"test1": {
"hosts": ["$SERVER1"],
}
}
EOF
我试图找到我想做的事的例子,但是一直很简短。
我需要进行3个小组的比赛(test1,test2,test3),这是我最近完成的一项工作。如果使用python这样做更容易,或者是我可以尝试解决的首选方法,我现在无法告诉我是接近解决方案还是解决之道。任何帮助表示赞赏。
SERVER1=($(curl -sS --request GET https://foo/bar| awk 'BEGIN {FS="["} {print $1}'))
SERVER2=($(curl -sS --request GET https://foo/bar| awk 'BEGIN {FS="["} {print $2}'))
SERVER3=($(curl -sS --request GET https://foo/bar| awk 'BEGIN {FS="["} {print $3}'))
cat <<EOF
{
"test1": {
"hosts": ["$SERVER1"],
},
"test2": {
"hosts": ["$SERVER2"],
},
"test3": {
"hosts": ["$SERVER3"],
}
}
EOF
答案 0 :(得分:0)
我对ansible仍然很陌生,但我相信Ansible Inventory Guide 该脚本必须至少接受两个参数--list和--host。
从我正在做的付费专区教程中,这是bash建议的格式。我只是从视频中抄录,所以无法真正解释。
#! /bin/bash
if [ "$1" == "--list" ]; then
cat<<EOF
{
"bash_hosts": {
"hosts": [
"myhost.domain.com",
"localhost"
],
"vars": {
"host_test": "test-value"
}
},
"_meta": {
"hostvars": {
"myhost.domain.com": {
"host_specific_test_var": "test-value"
}
}
}
}
EOF
elif [ "$1" == "--host" ]; then
echo '{"_meta": {hostvars": {}}}'
else
echo "{ }"
fi