我想使用ansible来获取服务器上git-repositories的所有遥控器。在服务器上,可能在特殊文件夹/ home / vhosts / cms /中有很多git-repos,并且在每个repo中可能有多个git-repo的遥控器。所以我想循环遍历所有主机,然后循环遍历所有git存储库,并获得所有当前远程控制器的列表。
我的问题是使用ansible中的变量和循环。我可以访问repos并从' git remote -v'中检索所有信息。输出看起来像
TASK: [debug var=gitremotes] **************************************************
ok: [<host>] => {
"var": {
"gitremotes": {
"changed": true,
"msg": "All items completed",
"results": [
{
"changed": true,
"cmd": "cd /home/vhosts/cms/customer/html && nice -n 25 git remote -v",
"delta": "0:00:00.005960",
"end": "2016-01-08 15:10:34.044679",
"invocation": {
"module_args": "cd /home/vhosts/cms/customer/htm && nice -n 25 git remote -v",
"module_complex_args": {},
"module_name": "shell"
},
"item": "customer",
"rc": 0,
"start": "2016-01-08 15:10:34.038719",
"stderr": "",
"stdout": "origin\tssh://git.gitserver/customer.git(fetch)\norigin\tssh://git.gitserver/customer.git (push)",
"stdout_lines": [
"origin\tssh://git.gitserver/customer.git (fetch)",
"origin\tssh://git.gitserver/customer.git (push)"
],
"warnings": []
}
]
}
}
}
我可以访问这一个stdout_lines,但我需要从所有服务器上的所有git-repos中检索所有gitremotes。如何做到这一点?
目前有效的方法是检索所有虚拟主机并迭代它们。
---
- name: get a list of all remotes
hosts: webservers
tasks:
- include: ../roles/webservers/tasks/get_cms_instances.yml
- name: loop over instances and get git remotes
shell: cd /home/vhosts/cms/{{ item }}/html && nice -n 25 git remote -v
with_items: vhosts.stdout_lines
when: vhosts.rc == 0
register: gitremotes
- debug: var=gitremotes
- debug: var="{{ gitremotes.results[0].stdout_lines[0] }}"
您将以何种方式检索信息?
提前致谢,
蒂莫