Not only I have an puppet module which can be freely used from the forge, I also have some Ansible roles for Zabbix. This page will describe installing the zabbix-server with the dj-wasabi.zabbix-server role. If you want to know how you install the zabbix-agent, please check this page.
You can find the role and some information on this page: https://galaxy.ansible.com/list#/roles/2070
This role works on the 3 main Linux operating systems:
- RedHat
- Debian
- Ubuntu
So, if your server has one of these operating system, you can continue. If you have however an other operating system and have some Ansible knowledge, please add some improvements and create an Pull Request on Github. I always accept Pull Requests related to the Ansible roles.
When you want to install this role, you only have to execute the following command:
ansible-galaxy install dj-wasabi.zabbix-server
Now we need to setup everything, but before we do anything we need to know what kind of database server is going to be used. Zabbix Server can work with several different databases as backend. This Ansible role only works with the following databases:
- PostgreSQL
- MySQL
Before we see the examples, there is one main parameter which is always needed: zabbix_url
This is the url on which the zabbix interface is available and should be an fqdn. Default it will create an Apache Virtual Host configuration file with this FQDN as ServerName. If you set this parameter as this:
zabbix_url: zabbix.example.com
the web interface will be available at: http://zabbix.example.com
PostgreSQL
Default the PostgreSQL is used as backend and before we can use this role, we need to find and download an Ansible role for PostgreSQL which can be used on your operating system. In this example we are using the following role: ‘galaxyprojectdotorg.postgresql’
The following is an example of an playbook for installing the ‘zabbix-server’ with an PostgreSQL database:
--- - hosts: zabbix-server roles: - role: galaxyprojectdotorg.postgresql postgresql_pg_hba_conf: - "host all all 127.0.0.1/32 trust" - "host all all ::1/128 trust" postgresql_pg_hba_local_ipv4: false postgresql_pg_hba_local_ipv6: false - role: dj-wasabi.zabbix-server zabbix_url: zabbix.example.com zabbix_version: 2.4 server_dbuser: zabbix-server server_dbpassword: zabbix-server
This is the minimum configuration to use for this role with an PostgreSQL as database. What might help to secure everything is to use an more difficult to guess password for the ‘server_dbuser’ 😉
MySQL
Lets use MySQL as backend now. The following example is used with the following role: ‘geerlingguy.mysql’:
--- - hosts: localhost roles: - role: geerlingguy.mysql - role: ansible-zabbix-server zabbix_url: zabbix.example.com zabbix_version: 2.4 database_type: mysql database_type_long: mysql server_dbuser: zabbix-server server_dbpassword: zabbix-server
Same as for the example with PostgreSQL, use an different value for the server_dbpassword.
Other configurations
Don’t think that what you just saw with configuring this role is everything. There are a lot of other configuration parameters that can be set. Keep in mind, that all configuration options you’ll normally find in the ‘zabbix_server.conf’ configuration file, can also be set with this role.
Lets give an example:
When we need to set the StartPollers to value 10, we can update the MySQL playbook to look like this:
--- - hosts: localhost roles: - role: geerlingguy.mysql - role: ansible-zabbix-server zabbix_url: zabbix.example.com zabbix_version: 2.4 database_type: mysql database_type_long: mysql server_dbuser: zabbix-server server_dbpassword: zabbix-server server_startpollers: 10
When the role is executed on the ‘zabbix-server’, we see the following in the configuration file:
### option: startpollers # number of pre-forked instances of pollers. # StartPollers=10
Keep in mind to lower the property setting and prefix it with ‘server_’ and you’ll have the property for this Ansible role.
As this Ansible role isn’t perfect, please let me know if you encounter any issues by creating an issue. Pull Request for bugs or new features are always welcome!