文章目录
环境
1)hosts文件中的主机已经能使用ansible批量管理;
2)被管理机器都是centos7;
1、创建项目目录并准备zabbix-agent软件包
mkdir -p /data/ansible/ansible-palybook/deploy_zabbix-agent
mkdir -p /data/ansible/ansible-palybook/deploy_zabbix-agent/group_vars
#下载zabbix-agent文件
cd /data/ansible/ansible-palybook/deploy_zabbix-agent
wget https://cdn.zabbix.com/zabbix/binaries/stable/6.0/6.0.10/zabbix_agent-6.0.10-linux-3.0-amd64-static.tar.gz
2、准备主机文件
cat >> hosts << EOF
[uat_k8s]
192.168.5.103
192.168.5.104
192.168.5.106
EOF
3、准备组变量
cd ./group_vars
cat >> uat_k8s <<EOF
ansible_client_agent_path: /zabbix/zabbix-agent
zabbix_agent_file_path: /data/ansible/ansible-palybook/deploy_zabbix-agent
zabbix_agent_name: zabbix_agent-6.0.10-linux-3.0-amd64-static.tar.gz
service_file_path: /data/ansible/ansible-palybook/deploy_zabbix-agent
service_file_name: zabbix-agent.service
zabbix_server_ip: 192.168.5.120
zabbix_agent_dest_path: /zabbix/zabbix-agent
EOF
4、准备修改zabbix-agent配置文件的脚本
cat >> modify_zabbix_conf.sh <<EOF
#! /bin/bash
zabbix_conf_file_path=$1
zabbix_server_ip=$2
Hostname=$HOSTNAME
sed -i /Server/s/127.0.0.1/${zabbix_server_ip}/g $zabbix_conf_file_path/zabbix_agentd.conf
sed -i /Hostname/s/"Zabbix server"/${Hostname}/g $zabbix_conf_file_path/zabbix_agentd.conf
EOF
5、准备systemd管理文件
cat >> zabbix-agent.service<<EOF
[Unit]
Description=Zabbix-agent
Wants=network-online.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/zabbix/zabbix-agent/sbin/zabbix_agentd -c /zabbix/zabbix-agent/conf/zabbix_agentd.conf
PIDFile=/usr/lib/systemd/system/zabbix_agentd.pid
ExecStop=/usr/bin/kill $PIDFile
User=zabbix
Group=zabbix
[Install]
WantedBy=multi-user.target
EOF
6、准备playbook
cat deployzabbixagent.yml
- hosts: all
gather_facts: no
tasks:
- name: Create User zabbix
user:
name: zabbix
shell: /bin/nologin
state: present
tags:
- create_user
- name: Create direactory
file:
path: "{{ ansible_client_agent_path }}"
state: directory
mode: '0755'
tags:
- create_dir
- name: 分发zabbix_agent
copy:
src: "{{ zabbix_agent_file_path }}/{{ zabbix_agent_name }}"
dest: "{{ ansible_client_agent_path }}"
owner: zabbix
group: zabbix
tags:
- copy_tar
- name: uncompress zabbix-agent
unarchive:
src: "{{ ansible_client_agent_path }}/{{ zabbix_agent_name }}"
dest: "{{ ansible_client_agent_path }}"
remote_src: yes
tags:
- uncomparess
- name: modify dir&file owner
shell: chown -R zabbix.zabbix {{ ansible_client_agent_path }}
tags:
- owner
- name: 分发service文件
copy:
src: "{{ service_file_path }}/{{ service_file_name }}"
dest: /usr/lib/systemd/system/
owner: root
group: root
mode: '0644'
tags:
- copy_service
- name: 修改zabbix-agent配置文件
script: "{{ zabbix_agent_file_path }}/modify_zabbix_conf.sh {{ ansible_client_agent_path }}/conf {{ zabbix_server_ip }}"
tags:
- modify_config
- name: 启动zabbix-agent
systemd:
state: started
name: zabbix-agent.service
tags:
- start
7、语法测试和执行
#语法测试
ansible-playbook -i hosts --syntax-check deployzabbixagent.yml
#使用tags单步执行,例如只执行第一步“create user”
ansible-playbook -i hosts deployzabbixagent.yml --tags "create_user"
#直接运行playbook
ansible-playbook -i hosts deployzabbixagent.yml