使用ansible-galaxy以超简便的方式安装Zabbix服务器
以下是用ansible-galaxy安装Zabbix服务器时的笔记。
想要像Zabbix一样需要许多组件(如Apache、php、MySQL)的东西很麻烦安装,并且如果在设置过程中出错,可能无法正常运行,所以现在我想避免手动设置。
我学会了Ansible,所以考虑自己编写Playbook,但重新发明轮子也没什么意义,所以我尝试使用ansible-galaxy 看能达到什么程度。
在GitHub上搜索”ansible zabbix”可以找到以下仓库,以查看是否有Zabbix的Playbook。
-
- ahelal/ansible-zabbix
-
- dj-wasabi/ansible-zabbix-server
- Open-Future-Belgium/Zabbix-Server-Ansible
这次我们选择了dj-wasabi/ansible-zabbix-server来在CentOS 7上进行安装,以便使用最新的更新版本。
作为控制台机器,我们使用了Ubuntu。
请先安装Ansible。
另外,请先停止selinux和firewalld。
使用ansible-galaxy命令获取Playbook。
$ sudo ansible-galaxy install dj-wasabi.zabbix-agent
$ sudo ansible-galaxy install dj-wasabi.zabbix-server
由于有相互依赖关系,geerlingguy.apache也将一同安装。
由于计划使用MySQL(在CentOS 7上采用Mariadb),DB将被设置为MySQL。
$ sudo ansible-galaxy install geerlingguy.mysql
追加一项
与其通过命令进行安装,不如将其写在一个名为requirements.txt的文件中,然后按照以下方法进行。这样做更易于进行git管理,非常方便。
ansible-galaxy install -r requirements.txt
为了将来的管理考虑,在安装时创建目录并用Git进行管理。
$ mkdir install-zabbix
创建用于安装时的特定参数的目录。
$ mkdir install-zabbix/vars
根据查看 https://github.com/dj-wasabi/ansible-zabbix-server#example-playbook 的例子剧本,发现有 hosts: zabbix-server,因此我将其设置如下。
$ cd install-zabbix
cat > hosts
[zabbix-server]
192.0.2.0
^D
创建Playbook
由于使用Galaxy,Playbook可以最小化为OK。
- hosts: zabbix-server
sudo: yes
vars_files:
- vars/main.yml
roles:
- { role: geerlingguy.mysql }
- { role: geerlingguy.apache }
- { role: dj-wasabi.zabbix-server,
zabbix_url: zabbix-server.example.jp,
zabbix_timezone: Asia/Tokyo,
database_type: mysql,
database_type_long: mysql }
zabbix_url 变量代表 VirtualHost 的 URL。
zabbix_timezone 变量设为日本时间。
database_type 和 database_type_log 变量设为 mysql。
这些设置可以写入 vars/main.yml 文件中,也可以直接写在 playbook 中。
# CentOS 7 MariaDB 兼容性
CentOS 7 默认安装的是 MariaDB。geerlingguy.mysql 是专为 MySQL 设计的,直接使用会出现错误。
请按照 https://github.com/geerlingguy/ansible-role-mysql#mariadb-usage 中的指示添加 MariaDB 的配置。
cd vars
mysql_packages:
- mariadb
- mariadb-server
- mariadb-libs
- MySQL-python
- perl-DBD-MySQL
mysql_daemon: mariadb
mysql_log_error: /var/log/mariadb/mariadb.log
mysql_syslog_tag: mariadb
mysql_pid_file: /var/run/mariadb/mariadb.pid
我要运行Ansible。
$ ansible-playbook -i ./hosts ./install-zabbix-server.yml
如果在这个时候发生错误,那意味着设置失败了。请进行修正并重试。
将Apache的配置修正为2.4版本
由于现在的Apache配置是针对2.2版本的,因此在访问控制方面会出现错误。
从2.2升级到2.4 – Apache HTTP服务器版本2.4
根据http://httpd.apache.org/docs/2.4/upgrading.html的指南,
修改Order、Allow和Deny的配置。
出现错误的设置
---中略---
<Directory "/usr/share/zabbix">
AllowOverride None
Order Allow,Deny
Allow from all
</Directory>
---中略---
正确的设置 de
---中略---
<Directory "/usr/share/zabbix">
AllowOverride None
Require all granted
</Directory>
---中略---
我会修改其他订单部分。
然后,检查httpd和zabbix是否正常运行,并通过浏览器访问。
当登录页面出现时,
请使用以下信息进行登录:
ID:admin
PW:zabbix
请务必更改密码。
補充:在 install-zabbix-server.yml 文件中可以设置以下参数,参考路径为 /etc/ansible/roles/dj-wasabi.zabbix-server/defaults/main.yml (也可参考 https://github.com/dj-wasabi/ansible-zabbix-server/blob/master/defaults/main.yml)。
---中略---
server_dbname: zabbix-server
server_dbuser: zabbix-server
server_dbpassword: zabbix-server
---中略---
从安全性的角度来看,我认为在 install-zabbix-server.yml 中设置不同的值会更好。Zabbix的版本应在下方指定。
zabbix_version: 2.4
目录结构如下。
~/src/install-zabbix
$ tree
├── README
├── hosts
├── install-zabbix-server.yml
└── vars
└── main.yml~/src/install-zabbix
$ 树状图
├── 说明
├── 主机
├── 安装-zabbix-server.yml
└── 变量
└── main.yml
如果您有要求,我们可以安装werner dijkerman先生的playbook安装zabbix-agent,并且还可以通过zabbix-api来进行主机注册的发布。
参考网址:
在CentOS 6.5上使用yum安装Zabbix 2.4 | あぱーブログ
https://blog.apar.jp/linux/334/
使用Ansible安装Zabbix代理 – werner-dijkerman.nl
http://werner-dijkerman.nl/2015/03/06/installing-zabbix-agent-with-ansible/
使用Ansible在CentOS 6.6上配置Zabbix服务器 – 的博客
http://jurgenvm.blogspot.jp/2014/12/configure-zabbix-server-on-centos-66.html
使用Ansible安装Zabbix代理 – werner-dijkerman.nl
http://werner-dijkerman.nl/2015/03/06/installing-zabbix-agent-with-ansible/