Я пытаюсь получить семейство ОС моей хост-машины, используя 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": "НД",
Я тоже пытаюсь запустить это.
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
в библиотека / ansible / module_utils / fact.py.
Если семейство ОС целевой системы не содержится в OS_FAMILY
list, вам нужно будет исправить код 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
правильно.