playbook 之间的 Ansible 变量

Rev*_*nth 1 unix windows statistics set ansible

我正在尝试构建一个工作流程,其中第一个剧本在 Windows 主机上运行,​​设置一些变量,其中包含正在执行的所有主机名\xe2\x80\x99s。第二个剧本应该读取这个变量并在 Unix 中使用 Windows 主机名创建一个目录。

\n

尝试set_stats在第一个剧本中使用,但变量与所有主机名连接在一起,并且在 Unix 上使用大字符串创建了一个目录。

\n

任何解决方法或建议来实现这一目标。

\n

Playbook 在 Windows 上运行

\n
- name: set hostname in a variable  \n  set_stats:  \n      data:  \n        current_hostname: "{{ ansible_hostname }}"  \n      per_host: no  \n
Run Code Online (Sandbox Code Playgroud)\n

Playbook 在 Unix 上运行:

\n
- name: Creates UNIX directory  \n  file:  \n    path: "{{ ARCH_DIR_LOC + current_hostname + \'/\'}}"  \n    state: directory  \n    mode: 0777  \n
Run Code Online (Sandbox Code Playgroud)\n

Geo*_*lin 6

无法在 Ansible 运行之间保留变量。但有一个技巧:您可以将变量保存到 yaml/json 文件(位于本地主机)中,然后用于include_vars加载它们。

保存:

- copy:
    content: '{{ my_variable|to_json }}'
    dest: foo.json
  delegate_to: localhost
Run Code Online (Sandbox Code Playgroud)

加载中:

- include_vars:
    file: foo.json
Run Code Online (Sandbox Code Playgroud)