-
-
Save jerm/fc7f33f6a6d6534f6fde to your computer and use it in GitHub Desktop.
--- | |
- name: Group by Distribution | |
hosts: all | |
tasks: | |
- group_by: key={{ansible_distribution}} | |
- name: Set Time Zone | |
hosts: Ubuntu | |
gather_facts: False | |
vars: | |
- my_zone: 'America/New_York' | |
tasks: | |
- name: check current timezone | |
shell: cat /etc/timezone | |
register: current_zone | |
- name: Set timezone variables | |
copy: content={{my_zone}} | |
dest=/etc/timezone | |
owner=root | |
group=root | |
mode=0644 | |
backup=yes | |
when: current_zone.stdout != my_zone | |
notify: | |
- update timezone | |
handlers: | |
- name: update timezone | |
command: dpkg-reconfigure --frontend noninteractive tzdata |
You could also use the template function which already takes care of the idempotency for you. Also, you might consider to define a handler to restart syslog, some intrusion detection systems like fail2ban are relying on this.
Thanks for those two comments. I've found them useful for my setup.
"check current timezone" needs
changed_when: current_zone.stdout != "{{my_zone}}"
to stop nagging user about changed status!
When running ansible with --check
it will cause this error:
fatal: [test] => error while evaluating conditional: current_zone.stdout != timezone
Any idea to solve this problem?
I found the solution: always_run: yes
Doesn't work. The ansible part works, but "dpkg-reconfigure --frontend noninteractive tzdata" will reset it to what it was before.
I added this task here
- name: ensure correct timezone link is set
file:
src: '/usr/share/zoneinfo/{{my_zone}}'
dest: /etc/localtime
owner: root
group: root
state: link
After that, the handler will do the right thing.
here is my solution
-
name: Check current timezone
shell: cat /etc/timezone
register: current_timezone
changed_when: false -
name: Set Timezone
timezone:
name: America/Chicago
when: current_timezone.stdout != "America/Chicago"
Nice, thanks. You may want to add "changed_when: False" to the check task so it doesn't report back a changed status