非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\n", ""]}

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

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自动化运维技术与最佳实践》整理

Func系列4:其他功能的更多相关文章

  1. Winform开发框架之客户关系管理系统(CRM)的开发总结系列1-界面功能展示

    一直以来,都希望整合一个以客户为中心的平台,有两个方面的考虑:一是实现客户数据.客户关系.客户管理等方面的整合,以便更好利用好客户的相关资源,发挥最大的营销效益:二是整合目前我的开发框架的所有模块和技 ...

  2. Func系列3:自定义模块

    简介 Func自带的模块已经非常丰富,但在日常系统运维当中,尤其是面对大规模的服务器集群.不同类别的业务平台,次是Func自带的模块或许已经不能满足我们的需求,所以有必要通过自定义模块来填补这块的不足 ...

  3. Func系列2:常用模块及API

    简介 Func提供了非常丰富的功能模块,包括CommandModule(执行命令).CopyFileModule(拷贝文件).CPUModule(CPU信息).DiskModule(磁盘信息).Fil ...

  4. Func系列1:安装配置

    简介 Func是由红帽子公司以Fedora平台构建的统一网络控制器,是为解决集群管理.监控问题而设计开发的系统管理框架.它是一个能有效简化多服务多服务器系统管理工作的工具,它易于学习.使用和扩展,功能 ...

  5. 【转】iOS开发工具系列(按功能分)

    http://www.cocoachina.com/newbie/basic/2014/0417/8187.html 这是我们多篇iOS开发工具系列篇中的一篇,此前的文章比如:那些不能错过的Xcode ...

  6. Nginx之旅系列 - Nginx日志功能 PK Linux内核printk

    题记:Nginx之旅系列是用来记录Nginx从使用到源码学习的点点滴滴,分享学习Nginx的快乐 Nginx 首页: http://nginx.org/ Nginx日志功能 PK Linux内核pri ...

  7. Web API系列之三 基本功能实现

    Web API系列之二讲解了如何搭建一个WebApi的基架,本文主要在其基础之上实现基本的功能.下面开始逐步操作: 一.配置WebApi的路由-用于配置外部如何访问内部资源的url的规则 1.添加Gl ...

  8. [Unity3D插件]2dToolKit系列三 碰撞检测功能的实现以及障碍物的随机摆放

    貌似有一段时间没更新2dtoolkit系列了,这段时间一直在忙着其他事情,今天开始继续这个插件系列的教程,网上搜索,貌似关于这个插件的教程无非还是跟官方的教程很类似,有的甚至都没有自己照着亲手实践一遍 ...

  9. PHPCMS快速建站系列之搜索功能

    默认模板的搜索功能代码 <div class="bd"> <form action="{APP_PATH}index.php" method= ...

随机推荐

  1. 【转】eclipse 安装插件

    eclipse安装插件或许没有什么多的可讲,但对于刚刚接触eclipse这款IDE的新手来说,可能还是会有点棘手! eclipse安装插件大致三种方法: 方法一:自身安装器 使用eclipse的Sof ...

  2. js 实现复制到剪切板 复制按钮兼容各大浏览器

    zeroclipboard官网:https://github.com/zeroclipboard/ZeroClipboard 下载压缩包,得到两个“ZeroClipboard.js”和“ZeroCli ...

  3. iOS学习笔记---C语言第三天

    循环结构 : while循环   do...while循环(几乎不用)     for循环(使用最多) 特点:在给定的条件成立时,反复执行某程序段,直到条件不成立为止. 给定的条件为循环条件,反复执行 ...

  4. centos6.4搭建knowlededgeroot-1.0.4知识库平台

    知识库平台选择 http://www.oschina.net/project/tag/320/pkm 最近接到一个任务,要求搭建一个用于部门内部业务知识规范管理和共享的平台,目的是把部门内的FAQ知识 ...

  5. ion-tap选项卡及路由结合ion-tap

    ion-tabs简介 <!DOCTYPE html> <html ng-app="ionic"> <head> <meta name=&q ...

  6. ResponsiveSlides.js最轻量级的幻灯片插件

    摘要:ResponsiveSlides.js是一个展示同一容器内图片的轻量级响应式jQuery幻灯片插件它支持包括IE6在内的几乎所有的浏览器,在IE6中还支持最大宽度属性,但在其它浏览器中并不原生支 ...

  7. jquery中prop()方法和attr()方法的区别

    最近在用jquery的时候遇到一个问题,那就是attr()方法,发现这个方法有时候使用会有一些说不出原因的问题.翻翻自己之前笔记发现,还有个函数prop(). 这两个函数都可以用来获取属性. jque ...

  8. SimPholders2 模拟器 App 文件路径查看工具

    SimPholder2.app 官网下载地址:http://www.simpholders.com ​当使用 Xcode beta 版本切换到 Xcode 正式版本时,点击 SimPholders2. ...

  9. Java—面向对象—权限修饰符及思维导图

    课上老师所讲实例整理: package org.hanqi.pn0120; //汽车 public class Car { //颜色 private String yanse; //品牌 privat ...

  10. cron 配置计划任务的书写格式(quartz 时间配置)

    一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素. 按顺序依次为 1.秒(0~59) 2.分钟(0~59) 3.小时(0~23)  4.天(月)(0~31,但是你需要考虑你月的天数) 5 ...