ansible-学习总结(zabbix部署)

本文总结了使用Ansible部署Zabbix的过程,包括部署条件、步骤和注意事项。重点介绍了预任务和后任务的设置,以及如何利用模板和触发器管理配置文件。还强调了密码管理和触发器逻辑的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

部署条件

  1. zabbix安装组件:zabbix-server,zabbix-agent,zabbix-web,mysql(只做简单部署,代理和其他组件未涉及)
  2. 安装方式:使用rpm包方式安装
  3. 配置部分:server的config文件,数据库配置

部署步骤

  1. 初始化项目
####################### 初始化项目 #######################
[ans@node1 zabbix]$ pwd
/home/ans/ansible/zabbix

[ans@node1 zabbix]$ ansible-galaxy init zabbix_roles
- Role zabbix_roles was created successfully

[ans@node1 zabbix]$ cat ansible.cfg 
[defaults]
inventory= ./inventory
roles_path= ./zabbix_roles
[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False
[ans@node1 zabbix]$ cat inventory 
[server]
node1

#另:根据使用用户设置相应sudo权限,及节点主机ssh免密登录
  1. task的main文件
####################### 设置安装repo #######################
---
# tasks file for zabbix_roles
- name: zabbix yum repo
  yum_repository:                                                                                                                   
    name: zabbix
    description: zabbix-4.4
    baseurl: http://192.168.27.7/zabbix/4.4
    gpgcheck: no 
- name: create zabbix databases
  mysql_db:
    name: zabbix 
    state: present
  notify: init zabbix db
####################### 安装服务和代理 #######################   
- name: install zabbix-server zabbix-agent 
  yum:
    name:
      - zabbix-server
      - zabbix-agent
    state: present
####################### 创建数据库 #######################      
- name: create zabbix databases
  mysql_db:
    name: zabbix 
    state: present
  notify: init zabbix db
#数据库只有在第一次安装的时候才会初始化,所以此处设置触发器   
- name: create zabbix user
  mysql_user:
    name: zabbix
    host: localhost          
    password: "{{dbpasswd}}"							#直接使用密码不好,此处写在vars中变量dbpasswd
    priv: 'zabbix.*:ALL'
    state: present
#设置数据库用户及权限   
[ans@node1 zabbix]$ vim zabbix_roles/vars/main.yml
---
# vars file for zabbix_roles
dbpasswd: redhat  
#设置密码变量

####################### 开启服务 #######################      
- name: start zabbix-server zabbix-agent
  service:
    name: "{{ item }}"
    state: started
  loop:
    - zabbix-server
    - zabbix-agent
####################### server服务进行配置 #######################   
- name: config zabbix-server
  template:
    src: zabbix_server.conf.j2							#模板文件,初始模板基础上,添加数据库密码
    dest: /etc/zabbix/zabbix_server.conf
  notify: restart zabbix server     
         
  1. roles中的触发器设置
[ans@node1 zabbix]$ cat zabbix_roles/handlers/main.yml 
---
# handlers file for zabbix_roles
- name: init zabbix db   
  mysql_db:              
    name: zabbix         
    state: import        
    target: /usr/share/doc/zabbix-server-mysql-4.4.1/create.sql.gz

- name: restart zabbix server
  service: 
    name: zabbix-server
    state: restarted
  1. 为了使用roles的post_tasks和pre_tasks功能,将部署分化为前期,正常,和后期
    1. pre_tasks:前期,在安装服务之前的工作,将数据库安装和配置放置此处
    2. post_tasks:后期,将安装web服务和配置放在了后面处理
####################### 启动服务yml ####################### 
[ans@node1 zabbix]$ cat zabbix_roles_start.yml
- hosts: server
  roles:
    - role: zabbix_roles
####################### 前期 ####################### 
  pre_tasks:
    - name: install mysql
      yum:
        name:
          - mariadb-server
          - MySQL-python
        state: present
#安装数据库    
    - name: config mysql_server
      lineinfile:
        path: /etc/my.cnf.d/server.cnf
        insertafter: '^\[mysqld\]'
        line: character-set-server=utf8				#添加utf8
      notify: restart mysql server
#重启数据库
    - name: start mysql-server
      service:
        name: mariadb
        state: started
#启动服务
####################### 后期 ####################### 
  post_tasks:
    - name: install zabbix web
      yum:
        name:
          - zabbix-web-mysql
          - httpd
        state: present
#安装web和httpd
    - name: start httpd
      service:
        name: httpd
        state: started
#启动httpd
    - name: config zabbix web
      lineinfile:
        path: /etc/httpd/conf.d/zabbix.conf
        insertafter: '# php_value'
        line: 'php_value date.timezone Asia/Shanghai'
      notify: restart httpd
#设置时区,重启服务
####################### 触发器 ####################### 
  handlers:
    - name: restart httpd
      service: 
        name: httpd
        state: restarted
    - name: restart mysql server
      service:
        name: maridb
        state: restarted
  1. 运行结果
    在这里插入图片描述

总结

  1. 服务类行的部署,都会有修改配置文件,这就涉及到了模板和触发器,模板用来替换配置文件,触发器用来将配置文件生效
  2. 设置密码类变量,放置密码外显,也可以设置统一变量,方便书写查看修改
  3. 注意触发器设置逻辑,有些属于配置文件修改,就要触发处理,而有些类似数据的初始化,仅在第一次触发处理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值