Use echo output of registered variable in other ro

2019-08-19 06:44发布

问题:

Hello guys I have a Problem.

The Problem I am having at the moment, is that the role to copy the files will skip all the files no matter if the file with the filenames is empty or not.

In Role1 I want to save the output of cat for each file. In Role2 in the when conditional, I want the task to skip if the registered output is == "".

Role1:

---
- name: copy files
  shell: "cat path{{ item }}files"
  register: checkempty
  loop:
    - test1
    - test2
    - test3
    - test4

Role2:

---
- name: Copy Files
  copy:
    src: "{{ var1 }}{{ var2 }}{{ var3 }}{{ var4 }}{{ item }}/"
    dest: "{{ copy_dest_sys }}" #destination path
  loop: "{{ lookup('file', 'pathtofile/file').split('\n')}}"
  when: hostvars['localhost'].checkempty.results == ""


Playbook:

- name: check emptiness
  hosts: localhost
  become: yes
  vars_files:
    - ../variables/varsfile
  roles:
    - ../variables/role1

- name: Copy Files to prod/stag
  hosts: "{{hosts_exec}}"
  become: yes
  vars_files:
   - ../vars/recommendation-delta.yml
  roles:
   - ../roles/role2

How can I set a registered variable with with_items and compare the output of it to ""(nothing)? Can somebody help me with this issue?

标签: ansible