2017-01-20 59 views
0

我试图创建简单的报告:网站报告在ansible:如何register_var每台主机或set_facts每台主机?

- name: collect info about servers 
    hosts: webservers 
    tasks: 
    - name: template list 
     template: 
     src="servers_report.j2" 
     dest="~/ansible/reports/webservers_report.csv" 
     connection: local 

与简单的CSV模板:

hostname;provider; 
{% for item in play_hosts %} 
{{ item }};{{ hostvars[item].provider }}; 
{% endfor %} 

工作正常。然后,我需要与网站列表(/www文件夹列表),像这样添加colums:

- name: folder list 
    shell: "find /www -maxdepth 1 -type d -printf '%f,'" 
    register: folderlist 
- name: debug list 
    debug: "msg={{ folderlist.stdout }}" 

(示例输出:

TASK [debug list] ************************************************************** 
ok: [host1] => { 
    "msg": "www,site1.com,site2.org," 
} 
ok: [host2] => { 
    "msg": "www,site3.co.uk,site123.com," 
} 

folderlist.stdout包含逗号分隔的站点,用于插入列表报告)

如何将这个变量放到我的模板文件中?

回答

3

set_fact指定了可以通过hostvars稍后访问的主机事实。

- name: folder list 
    shell: "find /www -maxdepth 1 -type d -printf '%f,'" 
    register: folderlist 
- name: assign fact 
    set_fact: 
    www_list: "{{ folderlist.stdout }}" 

而且在你的模板:

{{ item }};{{ hostvars[item].provider }};{{ hostvars[item].www_list }}; 
+0

辉煌!谢谢! –

相关问题