我正在编写角色,其中包括一些要使用dedicate_to: localhost
语句在本地机器上执行的任务。
在收集事实时,ansible 会注册一些有关远程主机的变量(例如ansible_os_family
等ansible_system
)
我如何检测本地(而非远程)操作系统/操作系统系列?可以通过收集事实来实现吗?或者还有其他合适的方法吗?
答案1
Ansible 可以收集您告诉它的任何主机的事实,无论它是远程服务器还是您执行 ansible/ansible-playbook 的本地主机。
例子
样品清单:
$ cat local_inv
[local]
localhost ansible_connection=local
示例剧本:
$ cat os.yml
- name: OS family
hosts: all
tasks:
- name: print OS Family
debug: var=ansible_os_family
示例运行:
$ ansible-playbook -i local_inv os.yml
PLAY [OS family] *********************************************************************************************************************************************************************************************************************************
TASK [Gathering Facts] ***************************************************************************************************************************************************************************************************************************
ok: [localhost]
TASK [print OS Family] ***************************************************************************************************************************************************************************************************************************
ok: [localhost] => {
"ansible_os_family": "Darwin"
}
PLAY RECAP ***************************************************************************************************************************************************************************************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0