我正在开发数十个跨平台兼容的Ansible角色,其中一些角色需要了解远程用户的主目录。
现在,我正在使用一个预任务来查找远程用户的主目录,并设置一个包含该目录的事实,以便可以在不同角色中使用它。
是否有更好的方法?我应该改写一个设置事实的角色吗?
ansible/windows_development.yml
:
---
- hosts: all
pre_tasks:
- name: lookup home directory via $HOME (Windows)
win_shell: echo $HOME
register: home
become: no
when: ansible_os_family == 'Windows'
- set_fact:
home: "{{ home.stdout | trim }}"
roles:
- debug
- common
- development
- pycharm
- sublime-text
become: yes
become_user: Administrator
become_method: runas
ansible/roles/debug/tasks/main.yml
:
---
- debug:
msg: "{{ home }}"
输出:
...
TASK [debug : debug] ***********************************************************
Thursday 10 October 2019 14:46:46 -0400 (0:00:00.033) 0:00:04.516 ******
ok: [default] => {
"msg": "C:\\Users\\vagrant"
}
...