使用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/

广告
将在 10 秒后关闭
bannerAds