【发布时间】:2019-05-23 18:10:40
【问题描述】:
我们最近构建了一个 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
【问题讨论】:
-
我认为这与您的动态库存脚本无关。
sudo是否安装在您的系统上? -
是的,当我使用静态清单运行它时,我的剧本没有问题。
-
您在动态清单中使用
ansible_connection: local,这将导致一切都在您的本地主机上执行。这是故意的吗? -
不,我无意中粘贴了一些旧代码,我已将其编辑为正确。这就是导致 sudo 问题的原因,但我仍然没有任何运气。如果我删除 $SERVER1 并将服务器名称放在它的位置,它可以正常工作。
-
您是否在手动运行脚本时验证了它的输出?您可以在问题中包含该输出吗?此外,如果您不再遇到
sudo问题,您可能需要更新您的问题。您能否还提供一个示例,说明您如何运行 ansible 来测试您的库存脚本?
标签: ansible ansible-inventory inventory-management