我有一个愚蠢的剧本,它只是运行一个命令,以获得在每个主机上的网络服务器组的vhost列表。由于所有vhost都位于/var/www中,因此很容易获得webs列表。
问题是Ansible返回信息的方式。例如:
ok: [host1] => {
"var": {
"out.stdout_lines": [
"",
"host1.com"
]
}
}
ok: [host2] => {
"var": {
"out.stdout_lines": [
"",
"host2.com"
]
}
}你知道一种简单的方法可以直接得到vhost的名字吗?使用grep awk或类似的东西?
发布于 2016-08-19 18:54:05
肮脏的方式:在打印之前,在stdout_lines中的每一行都加上一些标记(例如ANSBLMRK_),这样你就有了一个列表,如果是"ANSBLMRK_host2.com",那么就是grep和cut。
好方法:设置ANSIBLE_STDOUT_CALLBACK=json并通过管道将其发送到jq。
发布于 2016-08-20 00:28:05
也许只需要在你的剧本中写一个包含主机名称的文件,然后在以后使用它:
tasks:
- name: make output file
file: name=./list_of_hosts state=touch
- name: show my hostname
lineinfile: dest=./list_of_hosts line="{{ item }}"
with_items:
"{{ out.stdout_lines[1] }}"https://stackoverflow.com/questions/39037046
复制相似问题