使用Ansible时获取执行用户的HOME环境变量时
当使用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中执行上述任务,可以将执行用户的HOME环境变量设置到{{ ansible_home }}中,因此可以在其他任务中使用它。
顺便提一下,即使在连接类型为 local 时,ansible_ssh_user 也能够正常设置和使用。
- Re: [ansible-project] Re: Ansible set variable task?