selecting file based on hostname

17 views
Skip to first unread message

Krushna Chandra Sahu

unread,
Jul 10, 2020, 5:54:28 AM7/10/20
to Ansible Project
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


Abhijeet Kasurde

unread,
Jul 10, 2020, 6:44:20 AM7/10/20
to ansible...@googlegroups.com
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 }}"



--
You received this message because you are subscribed to the Google Groups "Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ansible-proje...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/5b6297e0-ffb1-4724-8cd9-4bb2975e2dd0o%40googlegroups.com.


--
Thanks,
Abhijeet Kasurde

Abhijeet Kasurde

unread,
Jul 10, 2020, 6:49:57 AM7/10/20
to ansible...@googlegroups.com
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')}}"
--
Thanks,
Abhijeet Kasurde
Reply all
Reply to author
Forward
0 new messages