Mainly to complete the automatically generated by zabbix_server playbook, agent, there is no fully automated, machine here still need to get people filled out by hand, if you are interested want the machine to automatically obtain required deployment can be intercepted by namp scanning tool awk command, but more description here . I did a test with two machines, the old version of the module usage will be different, if not execution can go see https://ansible-tran.readthedocs.io/en/latest/, reference documentation through the official website https: // www .cnblogs.com / LyShark / p / 10886486.html
ansible 2.4.2
zabbix 3.4.15
Installed nmap scanning tool
yum install nmap -y #通过ping探测172.16.9.0网段中存活机器 nmap -sP 172.16.9.0/24
Log in to complete the free secret between machines
Generate a public key pair
ssh-keygen -t rsa
Set ansible hosts configuration
[test] 172.16.9.141 ansible_ssh_user="root" ansible_ssh_pass="root" 172.16.9.142 ansible_ssh_user="root" ansible_ssh_pass="root" [zabbix_server] 172.16.9.141 [zabbix_client] 172.16.9.142
Batch push public key to the cluster nodes
- hosts: test user: root tasks: - name: ssh-copy authorized_key: user=root key="{{ lookup('file', '/root/.ssh/id_rsa.pub') }}" tags: - sshkey
Error:
FAILED! => {"msg": "Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this. Please add this host's fingerprint to your known_hosts file to manage this host."}
solve:
/etc/ansible/ansible.cfg
Modify host_key_checking (the default check)
playbook build zabbix_server (official suggested a play to write a separate task, but more exacting test)
# 初始化,关闭防火墙和SELINUX - hosts: zabbix_server tasks: - name: off selinux shell: setenforce 0 - name: seline modify enforcing lineinfile: dest: /etc/selinux/config regexp: '^SELINUX=' line: 'SELINUX=disabled' - name: seline firealld shell: systemctl stop firewalld && systemctl disable firewalld # 安装部署LAMP环境,通过YUM模块快速安装 - hosts: zabbix_server tasks: - name: install LAMP yum: name={{item}} state=installed with_items: - httpd - httpd-devel - mariadb - mariadb-server - php - php-mysql - name: start httpd shell: systemctl restart httpd - name: start mariadb shell: systemctl restart mariadb # 下载YUM源,更新EOEL源,安装Zabbix - hosts: zabbix_server tasks: - name: clear YUM shell: rm -rf /etc/yum.repos.d/* - name: install YUM EPEL get_url: 'url=http://mirrors.aliyun.com/repo/Centos-7.repo dest=/etc/yum.repos.d/CentOS-Base.repo' - name: yum install EPEL -y yum: name=epel-release state=installed - name: install zabbix.repo shell: rpm -i http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm - name: install zabbix yum: name={{item}} state=installed with_items: - zabbix-server-mysql - zabbix-web-mysql - zabbix-agent - name: start zabbix-server shell: systemctl restart zabbix-server - name: start zabbix-agent shell: systemctl restart zabbix-agent # 安装配置数据库权限,导入zabbix数据库 - hosts: zabbix_server tasks: - name: set mariadb password shell: mysqladmin -u root password 'ansible' - name: create zabbix master databases shell: mysql -uroot -pansible -e 'create database zabbix character set utf8 collate utf8_bin;' - name: set zabbix master databases grant shell: mysql -uroot -pansible -e 'grant all privileges on zabbix.* to zabbix@localhost identified by "zabbix";' - name: import zabbix initial data SQL shell shell: zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -pzabbix zabbix # 修改并拷贝配置文件,给予权限 - hosts: zabbix_server tasks: - name: edit zabbix dbhost lineinfile: dest: /etc/zabbix/zabbix_server.conf regexp: '# DBHost=localhost' line: 'DBHost=localhost' - name: edit zabbix dbpasswd lineinfile: dest: /etc/zabbix/zabbix_server.conf regexp: '# DBPassword=' line: 'DBPassword=zabbix' - name: cp zabbix web shell: cp -a /usr/share/zabbix/* /var/www/html/ - name: chmod web shell: chmod 755 -R /var/www/html/* - name: chown web shell: chown apache.apache -R /var/www/html/* - name: set php shell: echo "date.timezone = Asia/Shanghai" >> /etc/php.ini - name: set php shell: echo "max_execution_time = 300" >> /etc/php.ini - name: set php shell: echo "max_input_time = 300" >> /etc/php.ini - name: set php shell: echo "post_max_size = 32M" >> /etc/php.ini - name: set php shell: echo "memory_limit = 128M" >> /etc/php.ini - name: set php shell: echo "mbstring.func_overload = 0" >> /etc/php.ini - name: start http mysql zabbix shell: systemctl restart httpd ; systemctl restart mariadb - name: start http mysql zabbix shell: systemctl restart zabbix-server ; systemctl restart zabbix-agent - name: enabled http mysql zabbix shell: systemctl enable httpd ; systemctl enable mariadb - name: start http mysql zabbix shell: systemctl enable zabbix-server ; systemctl enable zabbix-agent
- playbook build zabbixclient
--- # 初始化,关闭防火墙和SELINUX - hosts: zabbix_client tasks: - name: off selinux shell: setenforce 0 - name: seline modify enforcing lineinfile: dest: /etc/selinux/config regexp: '^SELINUX=' line: 'SELINUX=disabled' - name: seline firealld shell: systemctl stop firewalld && systemctl disable firewalld # 安装zabbix_client - hosts: zabbix_client vars: zabbix_server_ip: 172.16.9.141 zabbix_agent_ip: 172.16.9.142 tasks: - name: install zabbix_client shell: rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-agent-3.4.15-1.el7.x86_64.rpm - name: Install zabbix agent shell: yum -y install zabbix-agent - name: modify zabbix server ip address shell: sed -i 's#Server=127.0.0.1#Server='{{zabbix_server_ip}}'#g' /etc/zabbix/zabbix_agentd.conf - name: modify zabbix server active ip addr shell: sed -i 's/ServerActive=127.0.0.1/ServerActive='{{zabbix_server_ip}}'/g' /etc/zabbix/zabbix_agentd.conf - name: Enable remote command execution shell: sed -i 's/# EnableRemoteCommands=0/EnableRemoteCommands=1'/g /etc/zabbix/zabbix_agentd.conf - name: Enable remote command logs shell: sed -i 's/# LogRemoteCommands=0/LogRemoteCommands=1'/g /etc/zabbix/zabbix_agentd.conf - name: modify zabbix agent hostname shell: sed -i 's/Hostname=Zabbix server/Hostname='{{zabbix_agent_ip}}'/g' /etc/zabbix/zabbix_agentd.conf - name: enable zabbix-agent shell: systemctl start zabbix-agent ;systemctl enable zabbix-agent
Check again a few grammatical structure, command host is in effect
ansible-playbook install_zabbix_server.yaml --syntax-check
ansible-playbook install_zabbix_server.yaml --list-task
ansible-playbook install_zabbix_server.yaml --list-hosts