Ansibleで非特権ユーザーに切り替えて実行する
Ansible でのセットアップで非特権ユーザーで行いたい箇所があった。 次のようにタスクファイルを書いて、特定のタスクだけ非特権ユーザーになって作業してもらう。
code:task.yaml
- name: Install something
becomge: true
become_user: someone
ansible.builtin.command: echo hello
changed_when: false
しかし次のようなエラーが発生する。
Ansible の作る一時ファイルについて、非特権ユーザーは権限不足で書き込めないということらしい
参考
なぜ発生するか
Ansible はタスク実行に必要なパラメータをリモートにファイルで保存し、それをリモートで実行する
パラメータにはしばしば機微情報が含まれるため、パラメータを書き込んだファイルの権限が非常に重要になる
解決策
pipeline を有効化する
一時ファイルをリモートに作らず、直接実行するようになる
ただしこれを有効化すると copy とかのモジュールが使用できなくなる