Zabbix Deployment with Ansible
Automate the installation of Zabbix server, agents and plugins:
- Zabbix server
- Zabbix proxy
- Zabbix agent
- JMX gateway
- Install Ansible (instructions)
- Get the playbook from the GitHub repository
- Create inventory file from this template and add the Zabbix hosts
> cat hosts
...
[zabbix-server]
zabbix-server.example.com
[zabbix-client:children]
[zabbiz-client-only]
zabbix-client-1.example.com
zabbix-client-2.example.com
zabbix-client-3.example.com
The procedure consists of 3 steps of which the 2nd one is manual and executes by you:
- Install server software packages
- Connect to server with browser and complete the configuration
- Install agent on the server host
The deployment is split into 2 phases because you have to connect to the server with browser and input some config parameters, as per server installation instruction. If there is a way to get around it please share it.
$ ansible-playbook -v -i hosts site.yml --limit zabbix-server -t server
...
# now switch to your browser and connect to the server
# and complete the configuration, then come back here
$ ansible-playbook -v -i hosts site.yml --limit zabbix-server -t agent
Options can be set at runtime to change the playbook actions:
- zabbix_remove_stale_version -- uninstall packages, drop database, remove files (default=false)
The playbook will register the remote hosts with the Zabbix server at the end of the installation.
$ ansible-playbook -v -i hosts site.yml -t agent --limit zabbix-client
...
Options can be set at runtime to change the playbook actions:
- zabbix_remove_stale_version -- uninstall packages and remove remove files (default=false)
- zabbix_register_with_server -- register hosts with Zabbix server (default=yes)
- zabbix_api_connection_method -- make Zabbix server REST api calls from your laptop (default=local)
- If passwordless login is not enabled on the target hosts, use the "-k" option
- If your user account on the target hosts requires password to execute sudo, then "-K" option is needed
- Creating MySQL schema will fail due to bug in the mysql_db Ansible module. The workaround is to extract the sql file from the compressed gz file, place it in the home directory and change this [roles/zabbix-server/vars/main.yml](var file) and point it to the extracted file.
- LDAP authenticaiton setup on the server
- Add support to run the playbook on RedHat, Fedora amd Ubuntu 16
- Deployment of Zabbix proxy server
- Fix the bug that breaks the MySQL schema creation and submit PR to Ansible
- Create host screen after registering an agent host with Zabbix server
Deployment of JMX Gateway