Hi Team,
I need a playbook to update the sudoer file based on os distribution. I have written below code but it is failing.
- name: Copy sudoers files
copy:
src: files/{{ file_name }}
dest: /etc/sudoers
validate: /usr/sbin/visudo -csf %s
{% if ansible_distribution == “amazon” %}
file_name: ‘sudoers.aspera’
{% elif ansible_distribution == “Debian” %}
file_name: ‘sudoers.debian’
{% else %}
file_name: ‘sudoers.general’
{% end %}
The offending line appears to be:
validate: /usr/sbin/visudo -csf %s
{% if ansible_distribution == “amazon” %}
^ here
Regards
Akasurde
(Abhijeet Kasurde)
2
Do as the following, which will make playbook readable
file_name: sudoers.general
tasks:
-
name: Set file name when Amazon
set_fact:
file_name: “sudoers.aspera”
when: ansible_distribution == ‘amazon’
-
name: Set file name when Debian
set_fact:
file_name: “sudoers.debian”
when: ansible_distribution == ‘Debian’
-
debug:
msg: “{{ file_name }}”
Akasurde
(Abhijeet Kasurde)
3
This is also possible
vars:
file_name_mapping:
amazon: “sudoers.general”
debian: “sudoers.debian”
tasks:
- debug:
msg: “{{ file_name_mapping[ansible_distribution] | default(‘sudoers.general’)}}”