在一本剧本中,我正在使用两个主机,并且想将一个主机变量用于另一个主机。就像不同主机上目录中文件的数量一样。有没有办法做到这一点
- 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
答案 0 :(得分:0)
在为shell
模块注册变量时,命令的输出将放入output
的子结构中,如documentation所述。
因此对于您的代码,您必须将something_result.stdout
关键字的something2_result.stdout
与failed_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”调用变量