Você pode fazer isso usando register
e when changed
.
Ao usar registrar , o resultado do comando copy
é salvo em uma variável. Esta variável pode então ser utilizada para criar uma when
condicional na tarefa atualizar fuso horário .
Além disso, adicione uma quebra de linha \n
no final do conteúdo do fuso horário, caso contrário, o Ansible sempre executará a cópia .
- 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
Mas você também pode resolver esse problema criando um handler
para o comando dpkg-reconfigure
conforme descrito aqui :
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