Ansible: сбор фактов - PullRequest
       13

Ansible: сбор фактов

1 голос
/ 02 октября 2019

быстрый вопрос, я пытаюсь добавить некоторые конкретные факты AIX, используя BaseFactCollector. по какой-то причине факты не отображаются в выходных данных установки. Какого рода волшебство нужно сделать, чтобы сделать эту работу?

Я также добавил новый скрипт в следующий файл.

facts/default_collectors.py:

from ansible.module_utils.facts.system.aix import AIXFactCollector

# general info, not required but probably useful for other facts
_general = [
    ...
    AIXFactCollector
]

тестовый код (fact / system / aix.py)

from __future__ import (absolute_import, division, print_function)
__metaclass__ = type


import sys
import shlex
import os
import platform
import re
import itertools
import commands
import subprocess
try:
    import json
except ImportError:
    import simplejson as json


from ansible.module_utils.facts.utils import get_file_content


from ansible.module_utils.facts.collector import BaseFactCollector


class AIXFactCollector(BaseFactCollector):
    """
    Some handy AIX facts, more or less nice to haves
    """
    name = 'aix_goodies'
    _fact_ids = set()
    _platform = 'AIX'

    def get_oslevel(self):
        oslevel = {}
        rc, out, err = self.module.run_command(["/usr/bin/oslevel", "-s"])
        data = out.split('-')
        oslevel['OS_VER'] = data[0].strip('0')
        oslevel['TL'] = data[1].strip('0')
        oslevel['SP'] = data[2].strip('0')
        oslevel['BUILD_DATE'] = data[3].strip()

        return oslevel


Ответная командная строка

ansible all -i 'AIXBUILDHOSTNG,' -m setup -a 'gather_subset=aix_goodies' --tree /tmp/facts

1 Ответ

0 голосов
/ 02 октября 2019

синтаксический анализ oslevel должен использовать существующий выход oslevel, в get_distribution_AIX: https://github.com/ansible/ansible/blob/stable-2.9/lib/ansible/module_utils/facts/system/distribution.py#L530


В общем, система фактов представляет собой смесь кода независимой от платформы платформы, которая делает подобные вещи для многихОС (DistributionFactCollector) и очень специфичные для платформы вещи, которые существуют только на одной (SelinuxFactCollector).

Я не знаю всех механизмов загрузки фактов. Вероятно, лучше всего начать с конкретных случаев использования команд, которые вы хотите запустить, с примерами вывода, которые вы хотите использовать в качестве фактов. Отправьте их как проблемы для улучшения и отправьте в список рассылки -devel или IRC: https://www.ansible.com/community Там вы сможете получить помощь в улучшении существующих классов сбора фактов или создании новых.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...