剧本之间的可靠变量

问题描述 投票:0回答:2

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

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

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

Playbook在Windows上运行 - name:在变量中设置hostname set_stats: 数据: current_hostname:“{{ansible_hostname}}” per_host:没有

Playbook在Unix上运行

  • name:创建UNIX目录 文件: 路径:“{{ARCH_DIR_LOC + current_hostname +'/'}}” state:目录 模式:0777
windows unix statistics ansible set
2个回答
1
投票

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

保存:

- copy:
    content: '{{ my_variable|to_json }}'
    dest: foo.json
  delegate_to: localhost

加载:

- include_vars:
    file: foo.json

0
投票

我能够编写如下脚本并为我工作:

  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  
© www.soinside.com 2019 - 2024. All rights reserved.