Sto cercando di creare un file sudoers con un modello ansible. Il file sudoers dovrebbe apparire come di seguito:
Cmnd_Alias LS = /bin/ls
Cmnd_Alias LESS = /usr/bin/less
Cmnd_Alias DU = /usr/bin/du
%support1 ALL=(ALL) NOPASSWD: LS, LESS, DU
Quello che ho gestito finora è di seguito:
Cmnd_Alias LS = ls
Cmnd_Alias LESS = less
Cmnd_Alias DU = du
%support1 ALL=(ALL) NOPASSWD: LS, LESS, DU
Il modello è simile al seguente:
{% for item in commands %}
Cmnd_Alias {{ item|upper }} = {{ item }}
{% endfor %}
%{{ group }} ALL=(ALL) NOPASSWD: {% for item in commands %}
{{ item|upper}}{% if not loop.last %}, {% endif %}
{% endfor %}
Vars
commands:
- ls
- less
- du
Per quanto ne so, il modulo modello ansible non ha nulla che eseguirà il comando nel server remoto e stamperà l'output, altrimenti stavo pensando di cambiare il file modello per apparire come di seguito:
{% for item in commands %}
Cmnd_Alias {{ item|upper }} = `which {{ item }}`
{% endfor %}
%{{ group }} ALL=(ALL) NOPASSWD: {% for item in commands %}
{{ item|upper}}{% if not loop.last %}, {% endif %}
{% endfor %}
e l'output sarà come quello che volevo.
C'è qualche altro metodo che può renderlo semplice?
A proposito, ho già controllato questo post