• Func系列4:其他功能


    非Python API接口支持

    Func通过非Python API实现远程调用,目的是为第三方工具提供调用及返回接口。Func使用func-transmit命令来实现,支持YAML、JSON格式,实现了跨应用平台、语言、工具等,比如通过java、C生成JSON格式的接口定义,通过func-transmit命令来进行调用,使用上非常简单,扩展性也非常强。

    定义一个command模块的远程执行,分别采用YAML、JSON格式进行定义

    【run.yml】

    clients: '*' #目标主机
    async: False #是否同步
    nforks: 1 #启用线程数
    module: command #模块名称
    method: run #模块方法名
    parameters: '/bin/echo Hello World' #参数

    【run.json】

    {
    'clients': '*',
    'async': 'False',
    'nforks': 1,
    'module': 'command',
    'method': 'run',
    'parameters': '/bin/echo Hello World',
    }

    通过func-transmit命令调用不同接口配置,将返回不同的格式串

    func-transmit --yaml < run.yaml
    #结果:
    ---
    test:
    - 0
    - |
    Hello World
    - ''
    
    func-transmit --json < run.json
    #结果:
    {"test": [0, "Hello World
    ", ""]}

    返回的两种格式都可以被绝大部分语言解析,方便后续处理。

    Func的Facts支持

    Facts是一个非常有用的组件,其功能类似于Saltstack的grains、Ansible的Facts,实现获取远程主机的系统信息,以便在对目标主机操作时作为条件进行过滤,产生差异。Func的Facts支持通过API来扩展用户自己的属性。Facts由两部分组成:模块(module)、方法(method),可以通过list_fact_modules、list_fact_methods方法来查看当前支持的模块与方法清单。

    例:

    func '*' call fact list_fact_modules
    #结果:
    {'wx': ['hardware', 'fact_module']}
    
    func '*' call fact list_fact_methods
    #结果:
    {'wx': ['hardware.cpu_model',
    'kernel',
    'cpumodel',
    'hardware.kernel_version',
    'cpuvendor',
    'hardware.run_level',
    'hardware.cpu_vendor',
    'hardware.os_name',
    'runlevel',
    'os']}
    
    #func '*' call fact call_fact 'os' #调用os方法,查看主机操作系统信息


    Fact支持and与or作为条件表达式连接操作符

    and表达式:--filter

    语法:

    --filter ‘关键词 操作符 值’
    --filter ‘值 in 关键词’

    例:

    func '*' call --filter 'kernel>=2.6,CentOS in os' command run 'uptime' #所有满足内核版本大于等于2.6,并且操作系统包含CentOS的目标主机运行uptime命令

    or表达式:--filteror
    语法:

    --filteror ‘关键词 操作符 值’
    --filteror ‘值 in 关键词’

    例:

    func '*' call --filteror 'kernel>=2.6,runlevel=5' command run 'df -h' #所有满足内核版本大于等于2.6,或者运行级别等于5的目标主机运行df -h命令

    参考资料:

    根据刘天斯《Python自动化运维技术与最佳实践》整理

  • 相关阅读:
    「PHP」使用 Homestead 作为 thinkphp5 的开发环境
    「PHP」Homestead 安装 swoole
    「PHP」Homestead
    存储过程
    Windows不能用鼠标双击运行jar文件怎么办?
    spring事务管理
    xml页面开头报错Multiple annotations found at this line
    修行
    jsp页面get和post不同导致的乱码问题
    VC执行Cmd命令,并获取结果
  • 原文地址:https://www.cnblogs.com/MacoLee/p/5783326.html
Copyright © 2020-2023  润新知