ansible で sudo: yes
を利用すると {{ ansible_env.HOME }}
が root のものになってしまう。これでは開発環境の構築など実行ユーザのホームディレクトリ配下にファイルを配置したいときなどに困る。
ansible では実行ユーザ名が {{ ansible_ssh_user }}
に設定されているためこれを利用して実行ユーザの HOME 環境変数を取得して利用することができる。
pre_tasks:
- name: Get ansible_user home directory
shell: 'getent passwd "{{ansible_ssh_user}}" | cut -d: -f6'
register: ansible_home_result
- name: Set the fact for the other scripts to use
set_fact: ansible_home='{{ansible_home_result.stdout}}'
上記のタスクを pre_task
で実行することで {{ ansible_home }}
に実行ユーザの HOME 環境変数が設定されるのでそれを他のタスクから利用すればよい。
ちなみに {{ ansible_ssh_user }}
は connection: local
時でも設定されているので問題なく利用できる。