Ubuntu
僅在發生更改時執行複制和設置
對於 Ansible,我的角色是設置時區並填充(Ubuntu)基本系統的設置,
- name: set timezone copy: content='Europe/Berlin' dest=/etc/timezone owner=root group=root mode=0644 backup=yes - name: update timezone command: dpkg-reconfigure --frontend noninteractive tzdata
這兩個命令無論如何都會執行。這意味著當 Ansible 為同一個目標執行兩次時,仍然會
changed=2
在結果摘要中得到一個,default : ok=41 changed=2 unreachable=0 failed=0
理想情況下,一切都應該
ok
在第二次執行。雖然我猜測
update timezone
應該對 有某種依賴set timezone
,但我不太確定如何最好地實現這一點。
您可以使用
register
and來做到這一點when changed
。通過使用register命令的結果
copy
被保存到一個變數中。然後可以使用此變數在更新時區任務中創建when
條件。另外,請確保
\n
在時區內容的末尾添加換行符,否則 Ansible 將始終執行 copy。- name: set timezone copy: content='Europe/Berlin\n' dest=/etc/timezone owner=root group=root mode=0644 backup=yes register: timezone - name: update timezone command: dpkg-reconfigure --frontend noninteractive tzdata when: timezone.changed
handler
但是您也可以通過為dpkg-reconfigure
命令創建一個如下所述來解決此問題:tasks: - name: Set timezone variables copy: content='Europe/Berlin\n' dest=/etc/timezone owner=root group=root mode=0644 backup=yes notify: - update timezone handlers: - name: update timezone command: dpkg-reconfigure --frontend noninteractive tzdata