前面我们已经学习过zabbix的安装部署步骤,并编写过playbook自动安装脚本,但是playbook将所有部署及服务配置写到了一个文件中,不便于查看于修改。今天,我们来学习zabbix全自动安装之角色编程。
附前篇:编写Playbook实现Zabbix自动安装部署
https://blog.youkuaiyun.com/CapejasmineY/article/details/103218902
实验
实验环境:
主机名 | ip | 服务 |
---|---|---|
server1 | 172.25.1.1 | ansible、web |
server2 | 172.25.1.2 | hosts主机、zabbix-server |
server3 | 172.25.1.3 | hosts主机、mariadb |
思路:编写四个角色,分别用来安装配置后端数据库mariadb、前端web界面、zabbix-agent及zabbix-server,然后通过编写zabbix.yml文件,对于不同主机调用不同的角色。
步骤一:使用init命令初始化四个角色的基本结构
cd /home/devops/ansible/roles
ansible-galaxy init mariadb #使用init命令初始化新角色mariadb的基本结构
ansible-galaxy init web
ansible-galaxy init zabbix-server
ansible-galaxy init zabbix-agent
步骤二:编写数据库mariadb角色
(1)编写tasks/main.yml文件,定义任务。
---
# tasks file for mariadb
- name: install mariadb #安装数据库
yum:
name: mariadb-server,MySQL-python
state: present
- name: config mariadb #配置服务
copy:
src: my.cnf
dest: /etc/my.cnf
notify: restart mariadb
- name: start mariadb #开启服务
service:
name: '{
{ item }}' #调用变量
state: started
enabled: yes
loop: #循环
- mariadb
- firewalld
- name: create database zabbix #创建数据库zabbix
mysql_db:
login_user: root #登陆用户
login_password: westos #登陆密码
name: zabbix #数据库名称
state: present #状态:安装
notify: import create.sql #调用触发器,给数据库zabbix导入表
- name: create user #创建用户
mysql_user:
login_user: root
login_password: westos
name: zabbix
password: zabbix
host: '%' #允许所有主机远程登陆
priv: 'zabbix.*:ALL' #授权
state: present
- name: copy create.sql #复制本地文件到目标主机