在一部剧本中注册主机之间的变量使用情况

时间:2018-07-17 17:31:53

标签: ansible

在一本剧本中,我正在使用两个主机,并且想将一个主机变量用于另一个主机。就像不同主机上目录中文件的数量一样。有没有办法做到这一点

- hosts: abc
  tasks:
- name: Check 
  shell: ls -ltrh /tmp/test1/ | wc -l
  register : something_result


- hosts: cde
  tasks:
- name: True
  shell: ls -ltrh /tmp/test1/ | wc -l
  register: something2_result
  failed_when: something2_result != something_result

2 个答案:

答案 0 :(得分:0)

在为shell模块注册变量时,命令的输出将放入output的子结构中,如documentation所述。

因此对于您的代码,您必须将something_result.stdout关键字的something2_result.stdoutfailed_when进行比较

答案 1 :(得分:0)

请尝试如下操作:

 - hosts: server1.com
   tasks:
 - name: do something
   shell: ls -ltrh /home | wc -l
   register : something_result
 - name: set fact
   set_fact:
     var1: "{{ something_result.stdout }}"
 - hosts: server2.com
   tasks:
 - name: do something
   shell: ls -ltrh /home | wc -l
   register: something2_result
   failed_when: ( something2_result.stdout != hostvars['server1.com']['var1'] )

使用set_fact为主机注册变量。然后使用“ hostvars”调用变量

相关问题