Ansible プレイブックを書いている Raspberry Pi で Kodi を実行しています。この Playbook には、行が に存在することを確認する 2 つのタスクが含まれ/etc/sudoers
ています。一方は一貫して合格し、もう一方は一貫して失敗しています。その理由を特定できないようです。2 つのタスクの構文はまったく同じで、両方の行が間違いなく/etc/sudoers
ファイルに含まれています。以下に関連するコードを含めました。ご意見をいただければ幸いです。
/etc/sudoers
:
# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
# Host alias specification
# User alias specification
# Cmnd alias specification
Cmnd_Alias SHUTDOWN = /sbin/shutdown, /sbin/reboot, /sbin/halt, /usr/bin/passwd
Cmnd_Alias PERMISSIONS = /bin/chmod, /bin/chown
# User privilege specification
root ALL=(ALL) ALL
pi ALL=(ALL) NOPASSWD: ALL
debian-transmission ALL=(ALL) NOPASSWD: PERMISSIONS
Defaults env_keep += "RPI_UPDATE_UNSUPPORTED"
# Allow members of group sudo to execute any command
# (Note that later entries override this, so you might need to move
# it further down)
%sudo ALL=(ALL) ALL
#
#includedir /etc/sudoers.d
Playbook タスクからの関連スニペット:
- name: set pi permissions in /etc/sudoers
lineinfile: "dest=/etc/sudoers
state=present
line='pi ALL=(ALL) NOPASSWD: ALL'
validate='visudo -cf %s'"
- name: set debian-transmission permissions in /etc/sudoers
lineinfile: "dest=/etc/sudoers
state=present
line='debian-transmission ALL=(ALL) NOPASSWD: PERMISSIONS'
validate='visudo -cf %s'"
(最初のタスクはシステムのデフォルトであるため不要であることは承知していますが、ポイントを証明するためだけに他のタスクが機能しなかった理由を理解しようとして追加しました。)
プレイブックを実行したときの出力は次のとおりです。
TASK: [kodi | start transmission-daemon again once settings.json has been copied] ***
changed: [kodi]
TASK: [kodi | set pi permissions in /etc/sudoers] *****************************
ok: [kodi]
TASK: [kodi | set debian-transmission permissions in /etc/sudoers] ************
failed: [kodi] => {"cmd": "visudo -cf /tmp/tmpZNRBC3", "failed": true, "rc": 2}
msg: [Errno 2] No such file or directory
FATAL: all hosts have already failed -- aborting