我有一个愚蠢的剧本,它只运行一个命令来获取webserver组中每个主机的vhost列表.由于所有vhost都位于/ var/www中,因此很容易获得网站列表.
问题是Ansible返回信息的方式.例如:
ok: [host1] => {
"var": {
"out.stdout_lines": [
"",
"host1.com"
]
}
}
ok: [host2] => {
"var": {
"out.stdout_lines": [
"",
"host2.com"
]
}
}
Run Code Online (Sandbox Code Playgroud)
你知道一个简单的方法来获取虚拟主机的名称吗?使用grep awk或类似的东西?
肮脏的方式:在打印之前stdout_lines用一些标记(例如ANSBLMRK_)添加每一行,所以你有一个列表,如果是"ANSBLMRK_host2.com",那么grep和cut.
好方法:设置ANSIBLE_STDOUT_CALLBACK=json和管道jq.