Я пытаюсь получить семейство ОС моей хост-машины, используя ansible. Я использую эту команду.
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": "NA",
Я тоже пытаюсь запустить это.
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 для получения значения для ansible_os_family
находится в lib / ansible / module_utils /facts.py[1159448 sizes.
Если семейство ОС целевой системы не содержится в списке OS_FAMILY
, вам необходимо исправить код Ansible, чтобы добавить семейство ОС. В настоящее время список содержит:
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_FAMILY
, вам следует проверить правильность / etc / $ OS-release
.