J'essaie de créer un fichier sudoers avec un modèle ansible. Le fichier sudoers devrait ressembler à ci-dessous:
Cmnd_Alias LS = /bin/ls
Cmnd_Alias LESS = /usr/bin/less
Cmnd_Alias DU = /usr/bin/du
%support1 ALL=(ALL) NOPASSWD: LS, LESS, DU
Ce que j'ai réussi jusqu'à présent est ci-dessous:
Cmnd_Alias LS = ls
Cmnd_Alias LESS = less
Cmnd_Alias DU = du
%support1 ALL=(ALL) NOPASSWD: LS, LESS, DU
Le modèle ressemble à ci-dessous:
{% 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
Pour autant que je sache, le module de modèle ansible n'a rien qui puisse exécuter la commande dans le serveur distant et imprimer la sortie, sinon je pensais à changer le fichier de modèle pour ressembler à ci-dessous:
{% 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 %}
et la sortie sera comme ce que je voulais.
Existe-t-il une autre méthode qui peut simplifier les choses?
BTW j'ai déjà vérifié ce post