zoukankan      html  css  js  c++  java
  • 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自动化运维技术与最佳实践》整理

  • 相关阅读:
    智能移动机器人背后蕴含的技术——激光雷达
    Kalman Filters
    Fiddler抓HttpClient的包
    VSCode开发WebApi EFCore的坑
    WPF之小米Logo超圆角的实现
    windows react打包发布
    jenkins in docker踩坑汇总
    Using ML.NET in Jupyter notebooks 在jupyter notebook中使用ML.NET ——No design time or full build available
    【Linux知识点】CentOS7 更换阿里云源
    【Golang 报错】exec gcc executable file not found in %PATH%
  • 原文地址:https://www.cnblogs.com/MacoLee/p/5783326.html
Copyright © 2011-2022 走看看