原文:https://www.3qos.com/article/101.html
作者:容易 日期:2015-03-17
备注:非本人同意,请勿转载
安装过程
系统需求:以centos6.4为例
选择 base server 安装
然后 安装额外的GCC编译环境即可
yum install gcc gcc-c++
以下是小工具所需的软件包
使用到的软件和包python+pyzmq,系统命令有wget和tail
小工具的安装步骤,纯编译安装,避免破坏现有系统环境。
mkdir /oaos
tar -zxvf Python-2.7.9.tgz
cd Python-2.7.9
./configure --prefix=/oaos/python
make && make install
tar -zxvf setuptools-12.1.tar.gz
cd setuptools-12.1
/oaos/python/bin/python setup.py build
/oaos/python/bin/python setup.py install
unzip pyzmq-2.2.0.1.zip
cd pyzmq-2.2.0.1
/oaos/python/bin/python setup.py build
/oaos/python/bin/python setup.py install
备注:master端需要 os_server.py,和os_add_job.py文件,client端只需要部署os_client.py即可
将master端代码保存文 os_server.py
将add_job工具代码保存为 os_add_job.py
将client端代码保存为 os_client.py
master端启动os_server为守护进程
/oaos/python/bin/python os_server.py start/stop/restart(启动,停止和重启)
client端启动os_client.py为守护进程
启动前请设置好与master端连接的网络接口和master端监听的ip和端口
/oaos/python/bin/python os_client.py start/stop/restart(启动,停止和重启)
部署os_add_job.py
必须部署在master服务器上,并且将os_add_job.py存放于os_server.py相同的路径。
编辑os_add_job命令的配置文件task.ini,将文件存放在os_add_job.py的相同目录,该配置文件就是需要批量发布任务的信息。
配置文件内容如下,直接是vi编辑即可
[master]
sock=tcp://192.168.4.194:7777
[ip_list]
ip=192.168.4.195,192.168.4.196,192.168.4.197,192.168.4.198
[job_info]
type=c
task=ls -rlt
cmdtimeout=8
jobtimeout=10
env=sh
fileserver=http://192.168.0.227/ser/
rundir=/root/
该任务配置文件的的任务描述如下,master地址的接口为tcp://192.168.4.194:7777
需要执行该任务的客户端IP为192.168.4.195,192.168.4.196,192.168.4.197,192.168.4.198
任务的类别为 命令
执行的命令为 ls -rlt
命令的超时时间为8秒
任务的超时时间为10秒
备注:任务超时因该大于单个命令的超时时间,否则可能命令执行成功,但是会被记录为超时失败,后续加个判断改进
执行任务的环境是 sh shell
由于该任务是普通命令所有 脚本下载服务器fileserver并发必须
运行目录为/root/
以下是master端运行后的相关文件和目录,如果不部署为client端os_client.py可以不部署
[root@salt-master-194 oaos]# ls
os_add_job.py job log os_client.py os_server.py run task.ini
执行os_add_job.py 发布批量任务
root@salt-master-194 oaos]# /oaos/python/bin/python os_add_job.py
job add ok,job log job/1425270675.log
----------------------job report start--------------------------
job 1425270675 start
192.168.4.195 code:0
total 114
drwxr-xr-x. 2 root root 4096 Sep 23 2011 srv
drwxr-xr-x. 2 root root 4096 Sep 23 2011 mnt
......................
drwxr-xr-x 2 root root 0 Feb 13 08:53 net
drwxr-xr-x 16 root root 3660 Feb 13 08:53 dev
dr-xr-xr-x. 11 root root 4096 Feb 13 09:11 lib
dr-xr-xr-x. 9 root root 12288 Feb 13 09:21 lib64
dr-xr-x---. 5 root root 4096 Feb 14 07:10 root
drwxr-xr-x 8 root root 4096 Feb 14 10:31 app
drwxr-xr-x 5 root root 4096 Feb 28 01:21 oaos
dr-xr-xr-x. 2 root root 4096 Feb 28 03:06 bin
drwxr-xr-x. 99 root root 12288 Feb 28 03:06 etc
drwxrwxrwt. 4 root root 4096 Mar 1 03:43 tmp
192.168.4.194 code:0
total 5847912
drwxr-xr-x 7 201 201 4096 Nov 17 2012 vmware-tools-distrib
-rw-r--r--. 1 root root 7572 Sep 3 04:24 install.log.syslog
-rw-r--r--. 1 root root 26505 Sep 3 04:25 install.log
...........................
drwxr-xr-x 2 root root 4096 Feb 28 10:19 log
drwxr-xr-x 2 root root 4096 Mar 1 23:28 bak
192.168.0.61 code:0
total 178
drwxrwxr-x 4 oracle dba 4096 Nov 24 2010 oracle
drwxr-xr-x 2 root root 4096 May 11 2011 srv
drwxr-xr-x 2 root root 4096 May 11 2011 mnt
drwx------ 2 root root 16384 Sep 20 2012 lost+found
...................
drwxr-xr-x 2 root root 12288 Sep 20 2012 sbin
drwxr-x--- 16 root root 4096 Nov 22 2012 root
drwxr-xr-x 4 wls bea 4096 Dec 26 2012 bea
dr-xr-xr-x 138 root root 0 Jan 7 2013 proc
............................
drwxr-xr-x 94 root root 12288 Feb 28 04:02 etc
drwxr-xr-x 5 root root 4096 Feb 28 14:20 oaos
drwxrwxrwt 8 root root 4096 Mar 2 04:02 tmp
192.168.4.196 code:0
total 5829828
drwxr-xr-x 7 201 201 4096 Nov 17 2012 vmware-tools-distrib
-rw-r--r--. 1 root root 7572 Sep 3 04:24 install.log.syslog
-rw-r--r--. 1 root root 26505 Sep 3 04:25 install.log
-rw-------. 1 root root 1249 Sep 3 04:25 anaconda-ks.cfg
-r--r--r-- 1 root root 66611473 Sep 3 04:43 VMwareTools-8.6.10-913593.tar.gz
-rwx------ 1 root root 4353378304 Sep 3 04:58 CentOS-6.4-x86_64-bin-DVD1.iso
-rwx------ 1 root root 1452388352 Sep 3 04:59 CentOS-6.4-x86_64-bin-DVD2.iso
-rw-r--r-- 1 root root 32979820 Sep 3 05:17 mysql-5.6.20.tar.gz
-rw-r--r-- 1 root root 34601551 Sep 3 05:17 percona-xtrabackup-2.2.3.tar.gz
-rwxr-xr-x 1 root root 58069 Sep 3 05:17 orzdba.pl
-rw-r--r-- 1 root root 29650115 Feb 13 08:55 salt_stack.tar.gz
-rw-r--r-- 1 root root 116 Feb 13 09:03 setup.cfg
drwxrwxr-x 23 501 501 4096 Feb 13 10:02 stack
job 1425270675 end
----------------------job report end---------------------------
You have new mail in /var/spool/mail/root
以上是批量发布命令,下面这个是批量发布脚本
task.ini的内容如下,任务类别是运行脚本,脚本名为chgpass.sh,作用是变更某个用户的密码
[master]
sock=tcp://192.168.4.194:7777
[ip_list]
ip=192.168.4.195,192.168.4.196,192.168.4.197,192.168.4.198
[job_info]
type=s
task=chgpass.sh
cmdtimeout=8
jobtimeout=10
env=sh
fileserver=http://192.168.0.227/ser/
rundir=/root/
执行和输出如下
[root@salt-master-194 oaos]# /oaos/python/bin/python os_add_job.py
job add ok,job log job/1425270947.log
----------------------job report start--------------------------
job 1425270947 start
192.168.4.195 code:252
passwd: Unknown user name 'oracle'.
192.168.0.61 code:0
Changing password for user oracle.
passwd: all authentication tokens updated successfully.
192.168.4.196 code:252
passwd: Unknown user name 'oracle'.
192.168.4.194 code:252
passwd: Unknown user name 'oracle'.
job 1425270947 end
----------------------job report end---------------------------
小工具的配置和运行过程就这么简单,部署好后,如果需要发布任务和脚本,只需要简单编辑task.ini文件即可,如果发布脚本,将需要发布的脚本上传至http服务器,提供给客户的下载即可,如果喜欢可以留言交易。