码迷,mamicode.com
首页 > 其他好文 > 详细

Func系列4:其他功能

时间:2016-08-18 12:50:25      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:

非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:其他功能

标签:

原文地址:http://www.cnblogs.com/MacoLee/p/5783326.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!