快速问题,我正在尝试使用BaseFactCollector添加一些特定于aix的事实。由于某些原因,事实未显示在设置输出中。要完成这项工作必须要做什么样的向导?
我还将新脚本添加到了以下文件。
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
]
测试代码(facts / 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
答案 0 :(得分:0)
oslevel解析应使用get_distribution_AIX
中的现有oslevel输出: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,您可以在增强现有事实收集类或创建新的事实收集类方面获得帮助。