我正在尝试构建一个工作流,其中第一个playbook在Windows主机上运行,设置一些变量,其中包含正在执行的所有主机名。第二本playbook应该读取这个变量并在unix中用windows hostname创建一个目录。
在第一个playbook中尝试使用set_stats,但变量与所有主机名连接,并且在Unix上使用大字符串创建了一个目录。
任何解决方法或建议来实现这一目标。
Playbook在Windows上运行 - name:在变量中设置hostname set_stats: 数据: current_hostname:“{{ansible_hostname}}” per_host:没有
Playbook在Unix上运行
无法在Ansible运行之间保留变量。但有一个技巧:您可以将变量保存到yaml / json文件(在localhost中),然后使用include_vars
加载它们。
保存:
- copy:
content: '{{ my_variable|to_json }}'
dest: foo.json
delegate_to: localhost
加载:
- include_vars:
file: foo.json
我能够编写如下脚本并为我工作:
vars:
win_host_names: []
tasks:
- name: prepare list
set_fact:
win_host_names: "{{ win_host_names }} + [ '{{ ansible_facts.hostname }}' ]"
- name: set stats
set_stats:
data:
current_hostname_list: "{{ win_host_names }}"
per_host: no