私はansibleテンプレートでsudoersファイルを作成しようとしています。sudoersファイルは次のようになります。
Cmnd_Alias LS = /bin/ls
Cmnd_Alias LESS = /usr/bin/less
Cmnd_Alias DU = /usr/bin/du
%support1 ALL=(ALL) NOPASSWD: LS, LESS, DU
これまでに管理したことは以下のとおりです。
Cmnd_Alias LS = ls
Cmnd_Alias LESS = less
Cmnd_Alias DU = du
%support1 ALL=(ALL) NOPASSWD: LS, LESS, DU
テンプレートは次のようになります。
{% 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
私の知る限り、ansibleテンプレートモジュールには、リモートサーバーでコマンドを実行して出力を出力するものはありません。それ以外の場合は、テンプレートファイルを次のように変更することを考えていました。
{% 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 %}
そして出力は私が欲しかったもののようになります。
それを簡単にすることができる他の方法はありますか?