Estoy tratando de crear un archivo sudoers con plantilla ansible. El archivo sudoers debería verse a continuación:
Cmnd_Alias LS = /bin/ls
Cmnd_Alias LESS = /usr/bin/less
Cmnd_Alias DU = /usr/bin/du
%support1 ALL=(ALL) NOPASSWD: LS, LESS, DU
Lo que he logrado hasta ahora está a continuación:
Cmnd_Alias LS = ls
Cmnd_Alias LESS = less
Cmnd_Alias DU = du
%support1 ALL=(ALL) NOPASSWD: LS, LESS, DU
La plantilla se ve a continuación:
{% 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
Hasta donde sé, el módulo de plantilla ansible no tiene nada que ejecute el comando en el servidor remoto e imprima la salida; de lo contrario, estaba pensando en cambiar el archivo de plantilla para que se vea a continuación:
{% 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 %}
y la salida será como lo que quería.
¿Hay algún otro método que pueda simplificarlo?
Por cierto, ya he revisado esta publicación