Ansible批量安装zabbix_agent
一、相关环境
centos 7
zabbix 4.0 LTS
二、安装相关依赖和ansible
yum install gcc* pcre* -y
yum install epel-release -y
yum install ansible –y
三、配置ssh免密通信
1、ssh-keygen -t rsa #生成秘钥
2、scp /root/.ssh/id_rsa.pub root@Remote_Ip:/root/.ssh/ #拷贝公钥信息到需要登录的服务器上
3、cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys #添加公钥信息到需要登录的服务器上
四、配置ansible
- 编辑hosts定义组
vim /etc/ansible/hosts
- ping客户端是否通讯
ping成功则配置成功
五、安装zabbix_agent
源:
CentOS/RHEL 7:
#rpm -Uvh http://repo.zabbix.com/zabbix/4.1/rhel/7/x86_64/zabbix-release-4.1-1.el7.noarch.rpm
使用ansible安装:
ansible zabbix -a "sudo rpm -Uvh http://repo.zabbix.com/zabbix/4.1/rhel/7/x86_64/zabbix-release-4.1-1.el7.noarch.rpm"
ansible zabbix -a "sudo yum -y install zabbix-agent"
接着修改配置文件操作:
在ansible主机的/etc/ansible 目录中新建文件zabbix_agentd.conf
内容为:
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.128.1
ListenPort=10050
ServerActive=192.168.128.1
Include=/etc/zabbix/zabbix_agentd.d/*.conf
EnableRemoteCommands= 1
出于安全角度考虑,部分公司不希望直接以root的高级管理员权限直接部署应用,往往会开放普通用户权限并给予sudo的权限,该部分配置主要针对sudo用户提权的配置 。
所以需要修改ansible的配置文件:
vim /etc/ansible/ansible.cfg
become = True #是否sudo
become_method=sudo #sudo 方式
become_user=root #sudo后变为root用户
become_ask_pass=False #sudo后是否验证密码
把文件复制到各个终端去:
ansible zabbix -m copy -a "src=/etc/ansible/zabbix_agentd.conf dest=/etc/zabbix/zabbix_agentd.conf backup=yes"
启动agent服务:
ansible zabbix -a "service zabbix-agent start"
ansible zabbix -a "service zabbix-agent status"
加入自启动:
ansible zabbix -a "chkconfig zabbix-agent on"
Linux SSH交互式脚本,去除yes/no的提示。
修改/etc/ssh/ssh_config文件(或$HOME/.ssh/config)中的配置,添加如下两行配置:
一般为:StrictHostKeyChecking ask
改为:StrictHostKeyChecking no
UserKnownHostsFile /dev/null
修改好配置后,重新启动sshd服务即可
/etc/init.d/sshd restart (或 service sshd restart )
给zabbix管理员权限,方便在zabbix管理端执行运维脚本。
创建一个shell脚本
vim /etc/ansible/pz-visudo.sh
#!/bin/bash
echo "zabbix ALL=NOPASSWD: ALL">>/etc/sudoers
tail -1 /etc/sudoers
然后把该脚本分发到各个机器上,并赋755权限
ansible zabbix -m copy -a "src=/etc/ansible/pz-visudo.sh dest=/tmp/pz-visudo.sh mode=0755"
最后批量执行该shell脚本
ansible zabbix -m shell -a "/tmp/pz-visudo.sh"