目前我的playbook只允許centos或redhat 6系列系統(tǒng)來安裝zabbix客戶端,并且客戶端的版本是2.0.6.
下面是playbook的結(jié)構(gòu)
14:29:30?#?pwd
/etc/ansible/roles
root@ip-10-10-10-10:/etc/ansible/roles
14:29:37?#?tree?zabbix_client_*
zabbix_client_delete???刪除已經(jīng)安裝的zabbix客戶端
├──?files????????????存放文件的
├──?handlers????????重啟的東東
├──?meta????????????galaxy_info的信息
│???└──?main.yml????
├──?tasks???????????操作的任務(wù)流程
│???├──?delete.yml??
│???└──?main.yml
├──?templates???????模板
└──?vars????????????變量
????└──?main.yml
zabbix_client_install
├──?files
│???└──?zabbix-2.0.6.tar.gz
├──?handlers
├──?meta
│???└──?main.yml
├──?tasks
│???├──?copy.yml
│???├──?delete.yml
│???├──?install.yml
│???└──?main.yml
├──?templates
│???├──?zabbix_agentd
│???└──?zabbix_agentd.conf
└──?vars
????└──?main.yml
12?directories,?13?files
下面是先介紹一下安裝方面zabbix_client_install的內(nèi)容
1、galaxy_info的信息
14:32:15?#?cat?/etc/ansible/roles/zabbix_client_install/meta/main.yml?
galaxy_info:
??author:?Deng?Lei
??description:?Install?Zabbix?Client?
??license:?MIT
??min_ansible_version:?1.6
??platforms:
??-?name:?CentOS
????versions:
????-?6
??categories:
??-?Monitor
dependencies:?[]
2、task里的copy.xml信息
14:33:35?#?cat?/etc/ansible/roles/zabbix_client_install/tasks/copy.yml?
??-?name:?Stop?Exist?Zabbix?Client?Service?In?Redhat?Client
????shell:?ps-ef|grepzabbix|grep-vgrep|awk'{print?$2}'|xargskill-9?>>/dev/null2>&1
????ignore_errors:?yes
????when:?ansible_os_family?==?"RedHat"and?ansible_lsb.major_release|int?==?6
??-?name:?Delete?Exist?Zabbix?Client?Dir?In?Redhat?Client
????shell:?rm-rf?{{?zabbix_dir?}}/zabbix
????ignore_errors:?yes
????when:?ansible_os_family?==?"RedHat"and?ansible_lsb.major_release|int?==?6
??-?name:?Install?Base?Require?Software?In?Redhat?Client
????yum:?name={{?item?}}?state=latest
????with_items:
??????-?telnet
??????-?dmidecode
??????-?tar
??-?name:?Create?Zabbix?User?In?Redhat?Client
????user:?name={{?zabbix_user?}}?state=present?createhome=no?shell=/sbin/nologin
????when:?ansible_os_family?==?"RedHat"and?ansible_lsb.major_release|int?==?6
??-?name:?Copy?Zabbix?Client?Software?To?Redhat?Client
????copy:?src=zabbix-{{?zabbix_version?}}.tar.gz?dest=/tmp/zabbix-{{?zabbix_version?}}.tar.gz?owner=root?group=root
????when:?ansible_os_family?==?"RedHat"and?ansible_lsb.major_release|int?==?6
??-?name:?Uncompression?Zabbix?Client?Software?To?Redhat?Client
????shell:?tarzxf?/tmp/zabbix-{{?zabbix_version?}}.tar.gz?-C?{{?zabbix_dir?}}/
????when:?ansible_os_family?==?"RedHat"and?ansible_lsb.major_release|int?==?6
??-?name:?Copy?Zabbix?Start?Script?To?Redhat?Client
????template:?src=zabbix_agentd?dest=/etc/init.d/zabbix_agentdowner=root?group=root?mode=0755
????when:?ansible_os_family?==?"RedHat"and?ansible_lsb.major_release|int?==?6
??-?name:?Copy?Zabbix?Config?To?Redhat?Client
????template:?src=zabbix_agentd.conf?dest={{?zabbix_dir?}}/zabbix/conf/zabbix_agentd.conf?owner={{?zabbix_user?}}?group={{?zabbix_user?}}?mode=0644
????when:?ansible_os_family?==?"RedHat"and?ansible_lsb.major_release|int?==?6
此文件是復(fù)制對應(yīng)的文件到客戶端
3、task的install.yml信息
14:34:26?#?cat?/etc/ansible/roles/zabbix_client_install/tasks/install.yml?
??-?name:?Modify?Zabbix?Dir?Permission?In?Redhat?Client
????file:?path={{?zabbix_dir?}}/zabbixowner={{?zabbix_user?}}?group={{?zabbix_user?}}?mode=0755
????when:?ansible_os_family?==?"RedHat"and?ansible_lsb.major_release|int?==?6
??-?name:?Check?Zabbix?User?Sudo?Permission?In?Redhat?Client
????shell:?grep"{{?zabbix_user?}}"/etc/sudoers|wc-l
????register:?zabbix_sudoer
????ignore_errors:?True
????when:?ansible_os_family?==?"RedHat"and?ansible_lsb.major_release|int?==?6
??-?name:?Give?Sudo?Permission?To?Zabbix?User?In?Redhat?Client
????shell:??echo"{{?zabbix_user?}}?ALL=(root)?NOPASSWD:/bin/netstat,?/usr/bin/omreport">>?/etc/sudoers
????when:??ansible_os_family?==?"RedHat"and?ansible_lsb.major_release|int?==?6?and?zabbix_sudoer|int?==0
??-?name:?Start?Zabbix?Service?In?Redhat?Client
????shell:?/etc/init.d/zabbix_agentdstart
????when:?ansible_os_family?==?"RedHat"and?ansible_lsb.major_release|int?==?6
??-?name:?Add?Boot?Start?Zabbix?Service?In?Redhat?Client
????shell:?chkconfig?--level?345?zabbix_agentd?on
????when:?ansible_os_family?==?"RedHat"and?ansible_lsb.major_release|int?==?6
此文件主要是安裝
4、tasks的delete.yml信息
14:35:08?#?cat?/etc/ansible/roles/zabbix_client_install/tasks/delete.yml?
??-?name:?Delete?Zabbix?compression?Software?In?Redhat?Client
????shell:?rm-rf?/tmp/zabbix-{{?zabbix_version?}}.tar.gz
????when:?ansible_os_family?==?"RedHat"and?ansible_lsb.major_release|int?==?6
此文件是安裝完成后,刪除安裝前的文件
5、tasks的mail.yml
14:35:37?#?cat?/etc/ansible/roles/zabbix_client_install/tasks/main.yml?
-?include:?copy.yml
-?include:?install.yml
-?include:?delete.yml
此文件是允許運(yùn)行哪個(gè)文件
6、templates的zabbix_agentd
15:15:45?#?cat?/etc/ansible/roles/zabbix_client_install/templates/zabbix_agentd
#!/bin/bash
#
#?chkconfig:?-?85?15
#?description:?Zabbix?client?script.
#?processname:?Zabbix
.?/etc/profile
SERVICE="Zabbix?agent"
DAEMON={{?zabbix_dir?}}/zabbix/sbin/zabbix_agentd
PIDFILE=/tmp/zabbix_agentd.pid
CONFIG={{?zabbix_dir?}}/zabbix/conf/zabbix_agentd.conf
zabbix_agent_status=`psaux|grepzabbix_agentd.conf|grep-vgrep|wc-l`
zabbix_agent_pid=`psaux|grepzabbix_agentd|grep-vgrep|awk'NR==1{print?$2}'`
#?Source?function?library.
.?/etc/rc.d/init.d/functions
#?Source?networking?configuration.
.?/etc/sysconfig/network
functioncheck()
{
if[?$??-eq0?];then
????action?$"Operating?is:"/bin/true
else
????action?$"Operating?is:"/bin/false
fi
}
case$1?in
??'start')
????if[?-x?${DAEMON}?]
????then
??????$DAEMON?-c?$CONFIG
??????#?Error?checking?here?would?be?good...
??????echo"${SERVICE}?started."
????else
??????echo"Can't?find?file?${DAEMON}."
??????echo"${SERVICE}?NOT?started."
????fi
????check
??;;
??'stop')
????if[?-s?${PIDFILE}?]
????then
??????ifkill`cat${PIDFILE}`?>/dev/null2>&1
??????then
????????echo"${SERVICE}?terminated."
????????rm-f?${PIDFILE}
??????fi
????fi
????check
??;;
??'restart')
???/bin/bash$0?stop
????sleep5
????/bin/bash$0?start
??;;
??'status')
????if[?$zabbix_agent_status?-ne0?];then
????????echo"Zabbix?Agentd?is?running?($zabbix_agent_pid)"
????else
????????echo"Zabbix?Agentd?is?not?running!"
????fi
????;;
*)
????echo"Usage:?$0?{start|stop|status|restart}"
;;
esac
exit0
這個(gè)文件是啟動(dòng)客戶端的腳本
7、templates的zabbix_agentd.conf
15:16:36?#?cat?/etc/ansible/roles/zabbix_client_install/templates/zabbix_agentd.conf?
#?This?is?a?config?file?for?the?Zabbix?agent?daemon?(Unix)
#?To?get?more?information?about?Zabbix,?visit?http://www.zabbix.com
############?GENERAL?PARAMETERS?#################
###?Option:?PidFile
#?? Name?of?PID?file.
#
#?Mandatory:?no
#?Default:
#?PidFile=/tmp/zabbix_agentd.pid
###?Option:?LogFile
#?? Name?of?log?file.
#?? If?not?set,?syslog?is?used.
#
#?Mandatory:?no
#?Default:
#?LogFile=
LogFile=/tmp/zabbix_agentd.log
###?Option:?LogFileSize
#?? Maximum?size?of?log?file?in?MB.
#?? 0?-?disable?automatic?log?rotation.
#
#?Mandatory:?no
#?Range:?0-1024
#?Default:
#?LogFileSize=1
###?Option:?DebugLevel
#?? Specifies?debug?level
#?? 0?-?no?debug
#?? 1?-?critical?information
#?? 2?-?error?information
#?? 3?-?warnings
#?? 4?-?for?debugging?(produces?lots?of?information)
#
#?Mandatory:?no
#?Range:?0-4
#?Default:
#?DebugLevel=3
###?Option:?SourceIP
#?? Source?IP?address?for?outgoing?connections.
#
#?Mandatory:?no
#?Default:
#?SourceIP=
###?Option:?EnableRemoteCommands
#?? Whether?remote?commands?from?Zabbix?server?are?allowed.
#?? 0?-?not?allowed
#?? 1?-?allowed
#
#?Mandatory:?no
#?Default:
#?EnableRemoteCommands=0
###?Option:?LogRemoteCommands
#?? Enable?logging?of?executed?shell?commands?as?warnings.
#?? 0?-?disabled
#?? 1?-?enabled
#
#?Mandatory:?no
#?Default:
#?LogRemoteCommands=0
#####?Passive?checks?related
###?Option:?Server
#?? List?of?comma?delimited?IP?addresses?(or?hostnames)?of?Zabbix?servers.
#?? Incoming?connections?will?be?accepted?only?from?the?hosts?listed?here.
#?? No?spaces?allowed.
#?? If?IPv6?support?is?enabled?then?'127.0.0.1',?'::127.0.0.1',?'::ffff:127.0.0.1'?are?treated?equally.
#
#?Mandatory:?no
#?Default:
#?Server=zabbix-server-external.autoclouds.net
Server={{?zabbix_server_ip?}}
###?Option:?ListenPort
#?? Agent?will?listen?on?this?port?for?connections?from?the?server.
#
#?Mandatory:?no
#?Range:?1024-32767
#?Default:
ListenPort={{?zabbix_port?}}
###?Option:?ListenIP
#?? List?of?comma?delimited?IP?addresses?that?the?agent?should?listen?on.
#?? First?IP?address?is?sent?to?Zabbix?server?if?connecting?to?it?to?retrieve?list?of?active?checks.
#
#?Mandatory:?no
#?Default:
#?ListenIP=0.0.0.0
###?Option:?StartAgents
#?? Number?of?pre-forked?instances?of?zabbix_agentd?that?process?passive?checks.
#?? If?set?to?0,?disables?passive?checks?and?the?agent?will?not?listen?on?any?TCP?port.
#
#?Mandatory:?no
#?Range:?0-100
#?Default:
#?StartAgents=3
#####?Active?checks?related
###?Option:?ServerActive
#?? List?of?comma?delimited?IP:port?(or?hostname:port)?pairs?of?Zabbix?servers?for?active?checks.
#?? If?port?is?not?specified,?default?port?is?used.
#?? IPv6?addresses?must?be?enclosed?in?square?brackets?if?port?for?that?host?is?specified.
#?? If?port?is?not?specified,?square?brackets?for?IPv6?addresses?are?optional.
#?? If?this?parameter?is?not?specified,?active?checks?are?disabled.
#?? Example:?ServerActive=127.0.0.1:20051,zabbix.domain,[::1]:30051,::1,[12fc::1]
#
#?Mandatory:?no
#?Default:
#?ServerActive=
###?Option:?Hostname
#?? Unique,?case?sensitive?hostname.
#?? Required?for?active?checks?and?must?match?hostname?as?configured?on?the?server.
#?? Value?is?acquired?from?HostnameItem?if?undefined.
#
#?Mandatory:?no
#?Default:
#?Hostname=
Hostname={{?ansible_hostname?}}
###?Option:?HostnameItem
#?? Item?used?for?generating?Hostname?if?it?is?undefined.
#?? Ignored?if?Hostname?is?defined.
#
#?Mandatory:?no
#?Default:
#?HostnameItem=system.hostname
###?Option:?RefreshActiveChecks
#?? How?often?list?of?active?checks?is?refreshed,?in?seconds.
#
#?Mandatory:?no
#?Range:?60-3600
#?Default:
#?RefreshActiveChecks=120
###?Option:?BufferSend
#?? Do?not?keep?data?longer?than?N?seconds?in?buffer.
#
#?Mandatory:?no
#?Range:?1-3600
#?Default:
#?BufferSend=5
###?Option:?BufferSize
#?? Maximum?number?of?values?in?a?memory?buffer.?The?agent?will?send
#?? all?collected?data?to?Zabbix?Server?or?Proxy?if?the?buffer?is?full.
#
#?Mandatory:?no
#?Range:?2-65535
#?Default:
#?BufferSize=100
###?Option:?MaxLinesPerSecond
#?? Maximum?number?of?new?lines?the?agent?will?send?per?second?to?Zabbix?Server
#?? or?Proxy?processing?'log'?and?'logrt'?active?checks.
#?? The?provided?value?will?be?overridden?by?the?parameter?'maxlines',
#?? provided?in?'log'?or?'logrt'?item?keys.
#
#?Mandatory:?no
#?Range:?1-1000
#?Default:
#?MaxLinesPerSecond=100
###?Option:?AllowRoot
#?? Allow?the?agent?to?run?as?'root'.?If?disabled?and?the?agent?is?started?by?'root',?the?agent
#???????will?try?to?switch?to?user?'zabbix'?instead.?Has?no?effect?if?started?under?a?regular?user.
#?? 0?-?do?not?allow
#?? 1?-?allow
#
#?Mandatory:?no
#?Default:
#?AllowRoot=0
############?ADVANCED?PARAMETERS?#################
###?Option:?Alias
#?? Sets?an?alias?for?parameter.?It?can?be?useful?to?substitute?long?and?complex?parameter?name?with?a?smaller?and?simpler?one.
#
#?Mandatory:?no
#?Range:
#?Default:
###?Option:?Timeout
#?? Spend?no?more?than?Timeout?seconds?on?processing
#
#?Mandatory:?no
#?Range:?1-30
#?Default:
Timeout=20
###?Option:?Include
#?? You?may?include?individual?files?or?all?files?in?a?directory?in?the?configuration?file.
#?? Installing?Zabbix?will?create?include?directory?in?/usr/local/etc,?unless?modified?during?the?compile?time.
#
#?Mandatory:?no
#?Default:
#?Include=
#?Include=/usr/local/etc/zabbix_agentd.userparams.conf
#?Include=/usr/local/etc/zabbix_agentd.conf.d/
#######?USER-DEFINED?MONITORED?PARAMETERS?#######
###?Option:?UnsafeUserParameters
#?? Allow?all?characters?to?be?passed?in?arguments?to?user-defined?parameters.
#?? 0?-?do?not?allow
#?? 1?-?allow
#
#?Mandatory:?no
#?Range:?0-1
#?Default:
#?UnsafeUserParameters=0
###?Option:?UserParameter
#?? User-defined?parameter?to?monitor.?There?can?be?several?user-defined?parameters.
#?? Format:?UserParameter=,
#?? See?'zabbix_agentd'?directory?for?examples.
#
#?Mandatory:?no
#?Default:
#?UserParameter=
UserParameter=memcached_stats[*],(echostats;?sleep1)?|?telnet?{{?ansible_default_ipv4.address?}}?$1?2>&1?|?awk'/STAT?$2?/?{print?$NF}'
UserParameter=mysql[*],mysql?-h?{{?ansible_default_ipv4.address?}}?-P?3306?-uzabbix?-pzabbix?-e?"show?global?status"|grep"\<$1\>"|cut-f2
UserParameter=redis_stats[*],(echoinfo;?sleep1)?|?telnet?{{?ansible_default_ipv4.address?}}?$1?2>&1?|grep$2|cut-d?:?-f2
UserParameter=custom.vfs.dev.read.ops[*],cat/proc/diskstats|?grep$1?|?head-1?|?awk'{print?$$4}'
UserParameter=custom.vfs.dev.read.ms[*],cat/proc/diskstats|?grep$1?|?head-1?|?awk'{print?$$7}'
UserParameter=custom.vfs.dev.write.ops[*],cat/proc/diskstats|?grep$1?|?head-1?|?awk'{print?$$8}'
UserParameter=custom.vfs.dev.write.ms[*],cat/proc/diskstats|?grep$1?|?head-1?|?awk'{print?$$11}'
UserParameter=custom.vfs.dev.io.active[*],cat/proc/diskstats|?grep$1?|?head-1?|?awk'{print?$$12}'
UserParameter=custom.vfs.dev.io.ms[*],cat/proc/diskstats|?grep$1?|?head-1?|?awk'{print?$$13}'
UserParameter=custom.vfs.dev.read.sectors[*],cat/proc/diskstats|?grep$1?|?head-1?|?awk'{print?$$6}'
UserParameter=custom.vfs.dev.write.sectors[*],cat/proc/diskstats|?grep$1?|?head-1?|?awk'{print?$$10}'
UserParameter=MongoDB.Status[*],/bin/echo"db.serverStatus().$1"|?/usr/bin/mongoadmin?|?grep"$2"|awk-F:?'{print?$$2}'|awk-F,?'{print?$$1}'
UserParameter=check_lvm[*],/usr/bin/sudo/usr/local/zabbix/bin/check_lvm.sh?$1
UserParameter=TCP_ESTABLISHED,ss?-s|awk'NR==2{print?$4}'|cut-d?,?-f1
UserParameter=TCP_CLOSED,ss?-s|awk'NR==2{print?$6}'|cut-d?,?-f1
UserParameter=TCP_TIMEWAIT,ss?-s|awk'NR==2{print?$12}'|cut-d?/?-f1
UserParameter=zabbix_low_discovery[*],/bin/bash/usr/local/zabbix/bin/zabbix_low_discovery.sh?$1
UserParameter=mysql_stats[*],mysql?-h?{{?ansible_default_ipv4.address?}}?-P?$1?-uzabbix?-pzabbix?-e?"show?global?status"|grep"\<$2\>"|cut-f2
UserParameter=mysql_stats_slave[*],mysql?-h?{{?ansible_default_ipv4.address?}}?-P?$1?-uzabbix?-pzabbix??-e?"show?slave?status\G"|grep"\<$2\>"|awk'{if($NF=="Yes")?{print?1}?else?{print?0}}'
UserParameter=check_platform,dmidecode?|grepVendor|awk-F?'?''{if($2=="Dell")?{print?1}?else?{print?0}}'
#follow?is?hardware?monitor
UserParameter=hardware_battery,omreport?chassis?batteries|awk'/^Status/{if($NF=="Ok")?{print?1}?else?{print?0}}'
UserParameter=hardware_cpu_model,awk-vhardware_cpu_crontol=`sudoomreport?chassis?biossetup|awk'/C?State/{if($NF=="Enabled")?{print?0}?else?{print?1}}'`?-vhardware_cpu_c1=`sudoomreport?chassis?biossetup|awk'/C1[-|E]/{if($NF=="Enabled")?{print?0}?else?{print?1}}'`?'BEGIN{if(hardware_cpu_crontol==0?&&?hardware_cpu_c1==0)?{print?0}?else?{print?1}}'
UserParameter=hardware_fan_health,awk-vhardware_fan_number=`omreport?chassis?fans|grep-c?"^Index"`?-vhardware_fan=`omreport?chassis?fans|awk'/^Status/{if($NF=="Ok")?count+=1}END{print?count}'`?'BEGIN{if(hardware_fan_number==hardware_fan)?{print?1}?else?{print?0}}'
UserParameter=hardware_memory_health,awk-vhardware_memory=`omreport?chassis?memory|awk'/^Health/{print?$NF}'`?'BEGIN{if(hardware_memory=="Ok")?{print?1}?else?{print?0}}'
UserParameter=hardware_nic_health,awk-vhardware_nic_number=`omreport?chassis?nics?|grep-c?"Interface?Name"`?-vhardware_nic=`omreport?chassis?nics?|awk'/^Connection?Status/{print?$NF}'|wc-l`?'BEGIN{if(hardware_nic_number==hardware_nic)?{print?1}?else?{print?0}}'
UserParameter=hardware_cpu,omreport?chassis?processors|awk'/^Health/{if($NF=="Ok")?{print?1}?else?{print?0}}'
UserParameter=hardware_power_health,awk-vhardware_power_number=`omreport?chassis?pwrsupplies|grep-c?"Index"`?-vhardware_power=`omreport?chassis?pwrsupplies|awk'/^Status/{if($NF=="Ok")?count+=1}END{print?count}'`?'BEGIN{if(hardware_power_number==hardware_power)?{print?1}?else?{print?0}}'
UserParameter=hardware_temp,omreport?chassis?temps|awk'/^Status/{if($NF=="Ok")?{print?1}?else?{print?0}}'|head-n?1
UserParameter=hardware_physics_health,awk-vhardware_physics_disk_number=`omreport?storage?pdisk?controller=0|grep-c?"^ID"`?-vhardware_physics_disk=`omreport?storage?pdisk?controller=0|awk'/^State/{if($NF=="Online")?count+=1}END{print?count}'`?'BEGIN{if(hardware_physics_disk_number==hardware_physics_disk)?{print?1}?else?{print?0}}'
UserParameter=hardware_virtual_health,awk-vhardware_virtual_disk_number=`omreport?storage?vdisk?controller=0|grep-c?"^ID"`?-vhardware_virtual_disk=`omreport?storage?vdisk?controller=0|awk'/^State/{if($NF=="Ready")?count+=1}END{print?count}'`?'BEGIN{if(hardware_virtual_disk_number==hardware_virtual_disk)?{print?1}?else?{print?0}}'
UserParameter=pyora[*],/usr/local/zabbix/bin/pyora.py?--username?$1?--password?$2?--address?$3?--database?$4?$5?$6?$7?$8
此文件是客戶端的配置文件
8、vars的main.yml
15:17:06?#?cat?/etc/ansible/roles/zabbix_client_install/vars/main.yml?
zabbix_dir:?/usr/local客戶端安全目錄
zabbix_version:?2.0.6????????????客戶端軟件版本
zabbix_user:?zabbix??????????????客戶端用戶
zabbix_port:?10050???????????????客戶端的端口
zabbix_server_ip:?192.168.1.10???zabbix_server的ip
此文件是配置變量的
9、ansible安裝zabbix客戶端的playbook配置文件zabbix_client_install.yml
15:20:02?#?cat?/etc/ansible/zabbix_client_install.yml?
---
-?hosts:?"`host`"
??remote_user:?"`user`"
??gather_facts:?True
??roles:
????-?zabbix_client_install
10、使用playbook安裝zabbix客戶端
我的測試客戶端環(huán)境是centos 6.3,ip是192.168.240.17,使用key登陸
15:22:01?#?cd?/etc/ansible/
root@ip-10-10-10-10:/etc/ansible
15:22:04?#?time?ansible-playbook?zabbix_client_install.yml?--extra-vars?"host=192.168.240.17?user=root"?--private-key=/root/test.pem?
PLAY?[192.168.240.17]?*********************************************************?
GATHERING?FACTS?***************************************************************?
ok:?[192.168.240.17]
TASK:?[zabbix_client_install?|?Stop?Exist?Zabbix?Client?Service?In?Redhat?Client]?***?
failed:?[192.168.240.17]?=>?{"changed":?true,?"cmd":?"ps?-ef|grep?zabbix|grep?-v?grep|awk?'{print?$2}'|xargs?kill?-9?>>/dev/null?2>&1?",?"delta":?"0:00:00.018213",?"end":?"2014-07-10?07:22:34.793910",?"item":?"",?"rc":?123,?"start":?"2014-07-10?07:22:34.775697"}
...ignoring
TASK:?[zabbix_client_install?|?Delete?Exist?Zabbix?Client?Dir?In?Redhat?Client]?***?
changed:?[192.168.240.17]
TASK:?[zabbix_client_install?|?Install?Base?Require?Software?In?Redhat?Client]?***?
ok:?[192.168.240.17]?=>?(item=telnet,dmidecode,tar)
TASK:?[zabbix_client_install?|?Create?Zabbix?User?In?Redhat?Client]?***********?
changed:?[192.168.240.17]
TASK:?[zabbix_client_install?|?Copy?Zabbix?Client?Software?To?Redhat?Client]?***?
changed:?[192.168.240.17]
TASK:?[zabbix_client_install?|?Uncompression?Zabbix?Client?Software?To?Redhat?Client]?***?
changed:?[192.168.240.17]
TASK:?[zabbix_client_install?|?Copy?Zabbix?Start?Script?To?Redhat?Client]?*****?
changed:?[192.168.240.17]
TASK:?[zabbix_client_install?|?Copy?Zabbix?Config?To?Redhat?Client]?***********?
changed:?[192.168.240.17]
TASK:?[zabbix_client_install?|?Modify?Zabbix?Dir?Permission?In?Redhat?Client]?***?
ok:?[192.168.240.17]
TASK:?[zabbix_client_install?|?Check?Zabbix?User?Sudo?Permission?In?Redhat?Client]?***?
changed:?[192.168.240.17]
TASK:?[zabbix_client_install?|?Give?Sudo?Permission?To?Zabbix?User?In?Redhat?Client]?***?
changed:?[192.168.240.17]
TASK:?[zabbix_client_install?|?Start?Zabbix?Service?In?Redhat?Client]?*********?
changed:?[192.168.240.17]
TASK:?[zabbix_client_install?|?Add?Boot?Start?Zabbix?Service?In?Redhat?Client]?***?
changed:?[192.168.240.17]
TASK:?[zabbix_client_install?|?Delete?Zabbix?compression?Software?In?Redhat?Client]?***?
changed:?[192.168.240.17]
PLAY?RECAP?********************************************************************?
192.168.240.17?????????????:?ok=15???changed=12???unreachable=0????failed=0? ?
real??? 0m39.888s
user??? 0m1.547s
sys 0m0.197s
可以看到39秒就安裝完成,主要花費(fèi)時(shí)間比較長的地方是fact收集、yum安裝、文件傳輸。
11、測試安裝情況
[root@ip-10-10-240-21?tmp]#?ifconfig
eth0??????Link?encap:Ethernet??HWaddr?FA:16:3E:34:62:D0??
??????????inet?addr:10.10.240.21??Bcast:10.10.240.255??Mask:255.255.255.0
??????????inet6?addr:?fe80::f816:3eff:fe34:62d0/64Scope:Link
??????????UP?BROADCAST?RUNNING?MULTICAST??MTU:1500??Metric:1
??????????RX?packets:542391?errors:0?dropped:0?overruns:0?frame:0
??????????TX?packets:77391?errors:0?dropped:0?overruns:0?carrier:0
??????????collisions:0?txqueuelen:1000?
??????????RX?bytes:142341119?(135.7?MiB)??TX?bytes:6451154?(6.1?MiB)
lo????????Link?encap:Local?Loopback??
??????????inet?addr:127.0.0.1??Mask:255.0.0.0
??????????inet6?addr:?::1/128Scope:Host
??????????UP?LOOPBACK?RUNNING??MTU:16436??Metric:1
??????????RX?packets:10?errors:0?dropped:0?overruns:0?frame:0
??????????TX?packets:10?errors:0?dropped:0?overruns:0?carrier:0
??????????collisions:0?txqueuelen:0?
??????????RX?bytes:700?(700.0?b)??TX?bytes:700?(700.0?b)
[root@ip-10-10-240-21?tmp]#?ps?-ef|grep?zabbix
zabbix???26991?????1??0?07:22??????????00:00:00?/usr/local/zabbix/sbin/zabbix_agentd-c?/usr/local/zabbix/conf/zabbix_agentd.conf
zabbix???26993?26991??0?07:22??????????00:00:00?/usr/local/zabbix/sbin/zabbix_agentd-c?/usr/local/zabbix/conf/zabbix_agentd.conf
zabbix???26994?26991??0?07:22??????????00:00:00?/usr/local/zabbix/sbin/zabbix_agentd-c?/usr/local/zabbix/conf/zabbix_agentd.conf
zabbix???26995?26991??0?07:22??????????00:00:00?/usr/local/zabbix/sbin/zabbix_agentd-c?/usr/local/zabbix/conf/zabbix_agentd.conf
zabbix???26996?26991??0?07:22??????????00:00:00?/usr/local/zabbix/sbin/zabbix_agentd-c?/usr/local/zabbix/conf/zabbix_agentd.conf
root?????27102?13773??0?07:24?pts/000:00:00?grepzabbix
[root@ip-10-10-240-21?tmp]#?grep?-Ev?'^$|^#'?/usr/local/zabbix/conf/zabbix_agentd.conf?
LogFile=/tmp/zabbix_agentd.log
Server=192.168.1.10
ListenPort=10050
Hostname=ip-10-10-240-21
Timeout=20
UserParameter=memcached_stats[*],(echostats;?sleep1)?|?telnet?10.10.240.21?$1?2>&1?|?awk'/STAT?$2?/?{print?$NF}'
UserParameter=mysql[*],mysql?-h?10.10.240.21?-P?3306?-uzabbix?-pzabbix?-e?"show?global?status"|grep"\<$1\>"|cut-f2
UserParameter=redis_stats[*],(echoinfo;?sleep1)?|?telnet?10.10.240.21?$1?2>&1?|grep$2|cut-d?:?-f2
UserParameter=custom.vfs.dev.read.ops[*],cat/proc/diskstats|?grep$1?|?head-1?|?awk'{print?$$4}'
UserParameter=custom.vfs.dev.read.ms[*],cat/proc/diskstats|?grep$1?|?head-1?|?awk'{print?$$7}'
UserParameter=custom.vfs.dev.write.ops[*],cat/proc/diskstats|?grep$1?|?head-1?|?awk'{print?$$8}'
UserParameter=custom.vfs.dev.write.ms[*],cat/proc/diskstats|?grep$1?|?head-1?|?awk'{print?$$11}'
UserParameter=custom.vfs.dev.io.active[*],cat/proc/diskstats|?grep$1?|?head-1?|?awk'{print?$$12}'
UserParameter=custom.vfs.dev.io.ms[*],cat/proc/diskstats|?grep$1?|?head-1?|?awk'{print?$$13}'
UserParameter=custom.vfs.dev.read.sectors[*],cat/proc/diskstats|?grep$1?|?head-1?|?awk'{print?$$6}'
UserParameter=custom.vfs.dev.write.sectors[*],cat/proc/diskstats|?grep$1?|?head-1?|?awk'{print?$$10}'
UserParameter=MongoDB.Status[*],/bin/echo"db.serverStatus().$1"|?/usr/bin/mongoadmin?|?grep"$2"|awk-F:?'{print?$$2}'|awk-F,?'{print?$$1}'
UserParameter=check_lvm[*],/usr/bin/sudo/usr/local/zabbix/bin/check_lvm.sh?$1
UserParameter=TCP_ESTABLISHED,ss?-s|awk'NR==2{print?$4}'|cut-d?,?-f1
UserParameter=TCP_CLOSED,ss?-s|awk'NR==2{print?$6}'|cut-d?,?-f1
UserParameter=TCP_TIMEWAIT,ss?-s|awk'NR==2{print?$12}'|cut-d?/?-f1
UserParameter=zabbix_low_discovery[*],/bin/bash/usr/local/zabbix/bin/zabbix_low_discovery.sh?$1
UserParameter=mysql_stats[*],mysql?-h?10.10.240.21?-P?$1?-uzabbix?-pzabbix?-e?"show?global?status"|grep"\<$2\>"|cut-f2
UserParameter=mysql_stats_slave[*],mysql?-h?10.10.240.21?-P?$1?-uzabbix?-pzabbix??-e?"show?slave?status\G"|grep"\<$2\>"|awk'{if($NF=="Yes")?{print?1}?else?{print?0}}'
UserParameter=check_platform,dmidecode?|grepVendor|awk-F?'?''{if($2=="Dell")?{print?1}?else?{print?0}}'
UserParameter=hardware_battery,omreport?chassis?batteries|awk'/^Status/{if($NF=="Ok")?{print?1}?else?{print?0}}'
UserParameter=hardware_cpu_model,awk-vhardware_cpu_crontol=`sudoomreport?chassis?biossetup|awk'/C?State/{if($NF=="Enabled")?{print?0}?else?{print?1}}'`?-vhardware_cpu_c1=`sudoomreport?chassis?biossetup|awk'/C1[-|E]/{if($NF=="Enabled")?{print?0}?else?{print?1}}'`?'BEGIN{if(hardware_cpu_crontol==0?&&?hardware_cpu_c1==0)?{print?0}?else?{print?1}}'
UserParameter=hardware_fan_health,awk-vhardware_fan_number=`omreport?chassis?fans|grep-c?"^Index"`?-vhardware_fan=`omreport?chassis?fans|awk'/^Status/{if($NF=="Ok")?count+=1}END{print?count}'`?'BEGIN{if(hardware_fan_number==hardware_fan)?{print?1}?else?{print?0}}'
UserParameter=hardware_memory_health,awk-vhardware_memory=`omreport?chassis?memory|awk'/^Health/{print?$NF}'`?'BEGIN{if(hardware_memory=="Ok")?{print?1}?else?{print?0}}'
UserParameter=hardware_nic_health,awk-vhardware_nic_number=`omreport?chassis?nics?|grep-c?"Interface?Name"`?-vhardware_nic=`omreport?chassis?nics?|awk'/^Connection?Status/{print?$NF}'|wc-l`?'BEGIN{if(hardware_nic_number==hardware_nic)?{print?1}?else?{print?0}}'
UserParameter=hardware_cpu,omreport?chassis?processors|awk'/^Health/{if($NF=="Ok")?{print?1}?else?{print?0}}'
UserParameter=hardware_power_health,awk-vhardware_power_number=`omreport?chassis?pwrsupplies|grep-c?"Index"`?-vhardware_power=`omreport?chassis?pwrsupplies|awk'/^Status/{if($NF=="Ok")?count+=1}END{print?count}'`?'BEGIN{if(hardware_power_number==hardware_power)?{print?1}?else?{print?0}}'
UserParameter=hardware_temp,omreport?chassis?temps|awk'/^Status/{if($NF=="Ok")?{print?1}?else?{print?0}}'|head-n?1
UserParameter=hardware_physics_health,awk-vhardware_physics_disk_number=`omreport?storage?pdisk?controller=0|grep-c?"^ID"`?-vhardware_physics_disk=`omreport?storage?pdisk?controller=0|awk'/^State/{if($NF=="Online")?count+=1}END{print?count}'`?'BEGIN{if(hardware_physics_disk_number==hardware_physics_disk)?{print?1}?else?{print?0}}'
UserParameter=hardware_virtual_health,awk-vhardware_virtual_disk_number=`omreport?storage?vdisk?controller=0|grep-c?"^ID"`?-vhardware_virtual_disk=`omreport?storage?vdisk?controller=0|awk'/^State/{if($NF=="Ready")?count+=1}END{print?count}'`?'BEGIN{if(hardware_virtual_disk_number==hardware_virtual_disk)?{print?1}?else?{print?0}}'
UserParameter=pyora[*],/usr/local/zabbix/bin/pyora.py?--username?$1?--password?$2?--address?$3?--database?$4?$5?$6?$7?$8
[root@ip-10-10-240-21?tmp]#?ll?/tmp/
total?12
-rw-------?1?root???root???197?Jul??9?09:35?yum_save_tx-2014-07-09-09-35ibcBiO.yumtx
-rw-rw-r--?1?zabbix?zabbix?320?Jul?10?07:22?zabbix_agentd.log
-rw-rw-r--?1?zabbix?zabbix???5?Jul?10?07:22?zabbix_agentd.pid
[root@ip-10-10-240-21?tmp]#?chkconfig?--list|grep?zabbix_agentd
zabbix_agentd???? 0:off?? 1:off?? 2:off?? 3:on??? 4:on??? 5:on??? 6:off
[root@ip-10-10-240-21?tmp]#?grep?zabbix?/etc/sudoers
zabbix?ALL=(root)?NOPASSWD:/bin/netstat,?/usr/bin/omreport
[root@ip-10-10-240-21?tmp]#?ll?/etc/init.d/zabbix_agentd?
-rwxr-xr-x?1?root?root?1444?Jul?10?07:22?/etc/init.d/zabbix_agentd
可以看到安裝后的客戶端,完全是按照我的要求來做的。
12、刪除已經(jīng)安裝的客戶端
15:22:54?#?time?ansible-playbook?zabbix_client_delete.yml?--extra-vars?"host=192.168.240.17?user=root"?--private-key=/root/test.pem?
PLAY?[192.168.240.17]?*********************************************************?
GATHERING?FACTS?***************************************************************?
ok:?[192.168.240.17]
TASK:?[zabbix_client_delete?|?Stop?Zabbix?Service?In?RedHat?Client]?***********?
changed:?[192.168.240.17]
TASK:?[zabbix_client_delete?|?Delete?Boot?Start?Zabbix?Service?In?Redhat?Client]?***?
changed:?[192.168.240.17]
TASK:?[zabbix_client_delete?|?Delete?Zabbix?User?In?Redhat?Client]?************?
changed:?[192.168.240.17]
TASK:?[zabbix_client_delete?|?Delete?Zabbix?Dir?In?Redhat?Client]?*************?
changed:?[192.168.240.17]
TASK:?[zabbix_client_delete?|?Delete?Zabbix?Start?Script?In?Redhat?Client]?****?
changed:?[192.168.240.17]
TASK:?[zabbix_client_delete?|?Check?Zabbix?User?Sudo?Permission?In?Redhat?Client]?***?
changed:?[192.168.240.17]
TASK:?[zabbix_client_delete?|?Delete?Sudo?Permission?To?Zabbix?User?In?Redhat?Client]?***?
changed:?[192.168.240.17]
PLAY?RECAP?********************************************************************?
192.168.240.17?????????????:?ok=8????changed=7????unreachable=0????failed=0???
real??? 0m25.497s
user??? 0m0.847s
sys 0m0.159s
13、測試刪除情況
[root@ip-10-10-240-21?tmp]#?ll?/tmp/
total?4
-rw-------?1?root?root?197?Jul??9?09:35?yum_save_tx-2014-07-09-09-35ibcBiO.yumtx
[root@ip-10-10-240-21?tmp]#?ps?-ef|grep?zabbix
root?????27665?13773??0?07:27?pts/000:00:00?grepzabbix
[root@ip-10-10-240-21?tmp]#?ll?/usr/local/
total?40
drwxr-xr-x.?2?root?root?4096?Sep?23??2011?bin
drwxr-xr-x.?2?root?root?4096?Sep?23??2011?etc
drwxr-xr-x.?2?root?root?4096?Sep?23??2011?games
drwxr-xr-x.?2?root?root?4096?Sep?23??2011?include
drwxr-xr-x.?2?root?root?4096?Sep?23??2011?lib
drwxr-xr-x.?2?root?root?4096?Sep?23??2011?lib64
drwxr-xr-x.?2?root?root?4096?Sep?23??2011?libexec
drwxr-xr-x.?2?root?root?4096?Sep?23??2011?sbin
drwxr-xr-x.?5?root?root?4096?May?12??2013?share
drwxr-xr-x.?3?root?root?4096?May?13??2013?src
[root@ip-10-10-240-21?tmp]#?grep?zabbix?/etc/sudoers
[root@ip-10-10-240-21?tmp]#?ll?/etc/init.d/zabbix_agentd
ls:?cannot?access?/etc/init.d/zabbix_agentd:?No?such?fileor?directory
[root@ip-10-10-240-21?tmp]#?chkconfig?--list|grep?zabbix_agentd
[root@ip-10-10-240-21?tmp]#
可以看到已經(jīng)完全刪除。
如果大家想使用我的例子,可以從附件里下載,然后放到/etc/ansible目錄里,下面是壓縮包里的內(nèi)容
-rw-r--r--?root/root108?2014-07-10?15:20?zabbix_client_install.yml
-rw-r--r--?root/root121?2014-07-09?18:09?zabbix_client_delete.yml
drwxr-xr-x?root/root0?2014-07-01?16:38?roles/zabbix_client_install/
drwxr-xr-x?root/root0?2014-07-08?14:30?roles/zabbix_client_install/meta/
-rw-r--r--?root/root207?2014-07-08?14:30?roles/zabbix_client_install/meta/main.yml
drwxr-xr-x?root/root0?2014-07-10?14:07?roles/zabbix_client_install/tasks/
-rw-r--r--?root/root199?2014-07-10?14:02?roles/zabbix_client_install/tasks/delete.yml
-rw-r--r--?root/root65?2014-07-10?14:02?roles/zabbix_client_install/tasks/main.yml
-rw-r--r--?root/root1789?2014-07-10?14:02?roles/zabbix_client_install/tasks/copy.yml
-rw-r--r--?root/root1110?2014-07-10?14:07?roles/zabbix_client_install/tasks/install.yml
drwxr-xr-x?root/root0?2014-06-19?13:30?roles/zabbix_client_install/handlers/
drwxr-xr-x?root/root0?2014-07-09?17:54?roles/zabbix_client_install/vars/
-rw-r--r--?root/root115?2014-07-09?17:54?roles/zabbix_client_install/vars/main.yml
drwxr-xr-x?root/root0?2014-07-09?17:53?roles/zabbix_client_install/templates/
-rw-r--r--?zabbix/zabbix10465?2014-07-09?17:53?roles/zabbix_client_install/templates/zabbix_agentd.conf
-rwxr-xr-x?root/root1456?2014-07-08?15:20?roles/zabbix_client_install/templates/zabbix_agentd
drwxr-xr-x?root/root0?2014-07-09?17:13?roles/zabbix_client_install/files/
-rw-r--r--?root/root292293?2014-07-09?17:13?roles/zabbix_client_install/files/zabbix-2.0.6.tar.gz
drwxr-xr-x?root/root0?2014-06-23?14:03?roles/zabbix_client_delete/
drwxr-xr-x?root/root0?2014-07-09?18:08?roles/zabbix_client_delete/meta/
-rw-r--r--?root/root205?2014-07-09?18:08?roles/zabbix_client_delete/meta/main.yml
drwxr-xr-x?root/root0?2014-07-10?14:28?roles/zabbix_client_delete/tasks/
-rw-r--r--?root/root1518?2014-07-10?14:08?roles/zabbix_client_delete/tasks/delete.yml
-rw-r--r--?root/root22?2014-07-10?14:08?roles/zabbix_client_delete/tasks/main.yml
drwxr-xr-x?root/root0?2014-06-24?14:14?roles/zabbix_client_delete/handlers/
drwxr-xr-x?root/root0?2014-07-03?13:16?roles/zabbix_client_delete/vars/
-rw-r--r--?root/root115?2014-07-09?17:55?roles/zabbix_client_delete/vars/main.yml
drwxr-xr-x?root/root0?2014-07-09?18:08?roles/zabbix_client_delete/templates/
drwxr-xr-x?root/root0?2014-06-24?13:53?roles/zabbix_client_delete/files/
轉(zhuǎn)載自:http://blog.51cto.com/dl528888/1436745