全部博文(2065)
分类: LINUX
2010-11-23 23:08:44
func学习笔记
时间:2010-11-23
1、 前言
研究了一段时间puppet,发现有些东西用puppet来解决似乎效果不太理想。再结合以前的一些经验,学习下func这个FC的管理工具。发现结合puppet与func用起来效果会比较理想。应该能够解决目前所遇到的问题。
2、安装
直接使用yum安装
#yum install func
3、配置func
#master端的配置 #/etc/certmaster/certmaster.conf 这个是certmaster-daemon的配置文件 [main] autosign = yes 如果设置为yes则默认就接受请求 listen_addr = PS:在puppet里面如果要监听listen=true的话得指定IP listen_port = 51235 cadir = /etc/pki/certmaster/ca cert_dir = /etc/pki/certmaster certroot = /var/lib/certmaster/certmaster/certs csrroot = /var/lib/certmaster/certmaster/csrs cert_extension = cert #/etc/certmaster/minion.conf 是被func minions使用的 [main] certmaster = certmaster #填写M机的hostname值 certmaster_port = 51235 #主控机监听的端口号 log_level = DEBUG #日志级别 cert_dir = /etc/pki/certmaster #被控机寻找ssl的目录 puppet里面也有这个值! #slave端配置 #/etc/func/minion.conf 给func与funcd-daemon用的这个配置文件 # configuration for minions [main] log_level = DEBUG acl_dir = /etc/func/minion-acl.d 包含ACL目录位置 listen_addr = 这个值是否需要配置呢? listen_port = 51234 客户机的监听端口值 PS:个人感觉这个配置文件更加是适合于funcd-daemon用的。因为其要监听端口 反而那个/etc/certmaster/minion.conf 是为了解决客户端与服务器通讯成立的 客户端只需要修改这个文件即可。指定其master就行了~ |
配置结论:
1.Master端只需要配置一下/etc/certmaster/certmaster.conf 即可将其中的auto-signing配置一下。然后再
#/sbin/chkconfig --level 345 certmaster on
#/sbin/service certmaster start
与funcd无关。Funcd是一个监听进程应当是在客户端启。
2.Slave端配置只需要配置一下/etc/certmaster/minion.conf指定里面的certmaster即可
再运行:
#/sbin/chkconfig --level 345 funcd on
#/sbin/service funcd start
就行~
总结KS安装funcd的步骤
1. 修改hosts值
2. 安装func。并配置/etc/certmaster/minion.conf
3. chkconfig服务并将funcd启动。
如果我将/etc/func/minion.conf里面的listen_addr = 192.168.83.131 把地址写到其IP的话那ss –ln看到就是
Local Address:Port Peer Address:Port
192.168.83.131:51234 *:*
PS:在python里面如果监听全部网卡的方法是监听*。所以默认不填写的话是会监听全部物理网卡的!
四、感受一下常用的一些操作命令
#func "client.puppet.com" call system list_modules
查看支持哪些模块。
Func全部的模块位于:
/usr/lib/python2.3/site-packages/func/minion/modules/ 你可以编写自己的模块
#func "client.puppet.com" call certmastermod list_methods
查看这个模块支持哪些方法
PS:这两个非常用帮助。比如我们刚使用某个模块的时候不太熟悉就可以使用这个来帮助快速查询一下到底有哪些模块与哪些方法可用!
# func "client.puppet.com" call command list_methods 来看下command这个模块
# func "client.puppet.com" call command run "date"
('client.puppet.com', [0, 'Sat Nov 6 14:56:21 EDT 2010\n', ''])
# func "client.puppet.com" call test list_methods 这个模块里面的一些方法会经常用
# func "client.puppet.com" call test ping
#func "client.puppet.com" call test echo "e"
调用格式:func 主机名(“主机名1;主机名2;”) call 模块名 方法名 参数名 参数名
五、使用func-transmit
不再需要使用命令行进行操作直接使用这个命令一次导入一个配置文件进来
func-transmit --json < data 这个配置文件里面的内容
* '''clients''': (Required) list of client you want to call. Could be list,single string or special character ("*").
* '''aysnc''': (Optional-Default False) boolean that say if you want to call func in async mode (True) or in synch mode (False)
* '''nforks''': (Optional-Default 1) Number of forks you want to use to execute the calls to your clients. For example, if you have to execute a command on 10 different minions, you can use nforks=2 and each one call and get results on 5 minions.
* '''module''': (Required**) name of the module you want to call
* '''method''': (Required) method inside that module to invoke
* '''parameters''': (Optional-Default None) some additional parameters
得到这么一个返回结果值
[1, {host1:response, host2:response}]
说明其中的数字的含义
Possible process statuses are:
'''0''': your job is still running
'''1''': finished
'''2''': "lost in space". We cannot find job associated to provided pid
'''3''': partial (executing but hasn't finished yet)
'''4''': remote error
PS:怪不得今天总出现这个值了。原来是出现了0给截断的原故?
如果是远程PHP过来调用的话就会有这种情况~结果值可能会为0这种情况!
思考:能否考虑使用php来调用呢?将rpc-json这一层去掉得了~