无法使用ansible_os_family返回os家族

我试图让我的主机使用合理的操作系统。 这是我使用的命令。

ansible my-host -i hosts.ini -m setup | grep ansible_os_family 

这是我的主机文件看起来像。

 [my-host] myhostvm.com ansible_ssh_pass=mypw ansible_ssh_user=root 

然而,我得到这个消息:

“ansible_os_family”:“不适用”,

我也尝试运行这个。

 ansible my-host -i hosts.ini -m setup | grep ansible_distribution 

这是结果:

“ansible_distribution”:“NA”,“ansible_distribution_major_version”:“NA”,“ansible_distribution_release”:“NA”,“ansible_distribution_version”:“NA”,

有人可以向我解释为什么它不返回任何操作系统?

获取ansible_os_family值的Ansible代码位于lib / ansible / module_utils / facts.py中 。

如果目标系统的OS系列不包含在OS_FAMILY列表中,则需要修补Ansible代码以添加OS系列。 目前该列表包含:

 OS_FAMILY = dict( RedHat = 'RedHat', Fedora = 'RedHat', CentOS = 'RedHat', Scientific = 'RedHat', SLC = 'RedHat', Ascendos = 'RedHat', CloudLinux = 'RedHat', PSBM = 'RedHat', OracleLinux = 'RedHat', OVS = 'RedHat', OEL = 'RedHat', Amazon = 'RedHat', XenServer = 'RedHat', Ubuntu = 'Debian', Debian = 'Debian', Raspbian = 'Debian', Slackware = 'Slackware', SLES = 'Suse', SLED = 'Suse', openSUSE = 'Suse', SuSE = 'Suse', SLES_SAP = 'Suse', Gentoo = 'Gentoo', Funtoo = 'Gentoo', Archlinux = 'Archlinux', Manjaro = 'Archlinux', Mandriva = 'Mandrake', Mandrake = 'Mandrake', Altlinux = 'Altlinux', Solaris = 'Solaris', Nexenta = 'Solaris', OmniOS = 'Solaris', OpenIndiana = 'Solaris', SmartOS = 'Solaris', AIX = 'AIX', Alpine = 'Alpine', MacOSX = 'Darwin', FreeBSD = 'FreeBSD', HPUX = 'HP-UX', openSUSE_Leap = 'Suse' 

Ansible检查/etc/$OS-release来确定操作系统。 如果目标系统的OS系列位于OS_FAMILY列表中,则应检查/etc/$OS-release是否正确。