0
我正在嘗試編寫一個在數據庫刷新後將rsync文件夾從源文件夾同步到目標文件夾的playbook。我們的Peoplesoft HR應用程序還需要與數據庫一起刷新文件系統。我是新手,而不是Python的專家。我寫過這個,但如果任何with_items不存在,我的playbook將會失敗。我想爲所有應用程序使用此Playbook,並且這些文件夾可能因應用程序而異。如何跳過源代碼中不存在的文件夾。我在命令行通過{{ target }}
。謝謝!Ansible Playbook - Synchonize模塊 - 寄存器變量和with_items
---
- hosts: '<hostname>'
remote_user: <user>
tasks:
- shell: ls -l /opt/custhome/prod/
register: folders
- name: "Copy PROD filesystem to target"
synchronize:
src: "/opt/custhome/prod/{{ item }}"
dest: "/opt/custhome/dev/"
delete: yes
when: "{{ folders == item }}"
with_items:
- 'src/cbl/'
- 'sqr/'
- 'bin/'
- 'NVISION/'
在這種情況下,NVISION不在HR應用程序中存在,但它在FIN應用程序中。但是劇本失敗了,該文件夾不存在於源文件中。
謝謝你的回覆,安德魯。其實我找到了一種方式,但是你的方式好多了。我最終做的是: - shell:ls -l/opt/ppscust/{{target [:3]}}/{{target [:3]}} prd/| grep -e「src」-e「sqr」-e「bin」-e「NVISION」| awk'{print $ 9}' register:folders 並在with_items中傳遞folders.stdout_lines。我會試試你的方式,因爲我更喜歡它。謝謝!!! – Mayank