Monday, October 7, 2024

[Ansible] Cài đặt Zabbix bằng Ansible

-

1. Sử dụng role của người khác.

Để cài đặt Zabbix sử dụng Ansible, ta cần chuẩn bị các bước sau:

  • Cài đặt các gói yêu cầu
  • Thiết lập cấu hình cho Zabbix server và database
  • Cài đặt Zabbix server và agent
  • Cấu hình Zabbix server và agent

Sau đây là một ví dụ Ansible playbook để cài đặt Zabbix và cấu hình nó.

inventory.ini:

[zabbix_server]
zabbix ansible_host=192.168.0.10

[zabbix_agent]
zabbix-01 ansible_host=192.168.0.11
zabbix-02 ansible_host=192.168.0.12

playbook.yml:

- name: Install Zabbix server and agents
  hosts: zabbix_server,zabbix_agent
  become: true
  vars_files:
    - vars/main.yml
  roles:
    - zabbix

vars/main.yml:

zabbix_server_version: "5.0"
zabbix_agent_version: "5.0"
zabbix_mysql_root_password: "password123"

roles/zabbix/tasks/main.yml:

---
- name: Install Zabbix server and agents
  hosts: zabbix_server,zabbix_agent
  become: true

  vars:
    zabbix_server_version: "{{ zabbix_server_version }}"
    zabbix_agent_version: "{{ zabbix_agent_version }}"
    zabbix_mysql_root_password: "{{ zabbix_mysql_root_password }}"
    zabbix_server_port: 10051

  roles:
    - role: geerlingguy.repo-epel
    - role: geerlingguy.mysql
      mysql_root_password: "{{ zabbix_mysql_root_password }}"
      mysql_databases:
        - name: zabbix
          encoding: utf8mb4
          collation: utf8mb4_unicode_ci
      mysql_users:
        - name: zabbix
          password: "{{ zabbix_mysql_root_password }}"
          priv: "zabbix.*:ALL"
    - role: geerlingguy.apache
    - role: geerlingguy.php
    - role: geerlingguy.zabbix
      zabbix_web_hostname: "{{ inventory_hostname }}"
      zabbix_server_version: "{{ zabbix_server_version }}"
      zabbix_agent_version: "{{ zabbix_agent_version }}"
      zabbix_server_database_password: "{{ zabbix_mysql_root_password }}"
      zabbix_server_install_agent: true
      zabbix_server_port: "{{ zabbix_server_port }}"

Cụ thể, playbook này sử dụng roles của Geerlingguy để cài đặt các thành phần như: Apache, MySQL, PHP và Zabbix. Biến được định nghĩa trong vars/main.yml, và được sử dụng trong file roles/zabbix/tasks/main.yml. Chúng ta có thể tùy chỉnh các biến này tùy theo nhu cầu cài đặt Zabbix của mình.

2. Tự viết role của mình.

Để cài đặt Zabbix bằng Ansible mà không sử dụng role của người khác, bạn có thể thực hiện các bước sau:

Tạo một playbook mới để cài đặt Zabbix. Trong playbook, sử dụng module yum hoặc apt để cài đặt các gói cần thiết cho Zabbix. Ví dụ:

- name: Install required packages
  yum:
    name:
      - epel-release
      - https://repo.zabbix.com/zabbix/5.4/rhel/7/x86_64/zabbix-release-5.4-1.el7.noarch.rpm
      - zabbix-server-mysql
      - zabbix-web-mysql
      - zabbix-agent
    state: present

Trong đó, epel-release là gói phụ thuộc cần thiết để cài đặt Zabbix trên một số hệ điều hành. Bạn cũng cần thay đổi URL đến gói zabbix-release phù hợp với phiên bản Zabbix bạn muốn cài đặt.

Cấu hình các file cấu hình của Zabbix. Ví dụ, bạn có thể sử dụng module copy để sao chép các file cấu hình từ máy cài đặt Ansible đến máy Zabbix:

- name: Copy Zabbix server configuration file
  copy:
    src: /path/to/zabbix_server.conf
    dest: /etc/zabbix/zabbix_server.conf
    owner: zabbix
    group: zabbix
    mode: '0640'

- name: Copy Zabbix web configuration file
  copy:
    src: /path/to/zabbix_web.conf.php
    dest: /etc/zabbix/web/zabbix.conf.php
    owner: apache
    group: apache
    mode: '0644'

Khởi động dịch vụ MySQL:

- name: Start MySQL service
  service:
    name: mysqld
    state: started

- name: Enable MySQL at boot time
  service:
    name: mysqld
    enabled: yes

Cấu hình cơ sở dữ liệu. Bạn có thể sử dụng module mysql_db hoặc postgresql_db để tạo cơ sở dữ liệu Zabbix, module mysql_user hoặc postgresql_user để tạo người dùng cho cơ sở dữ liệu và module mysql_query hoặc postgresql_query để chạy các câu lệnh SQL để tạo bảng và đổ dữ liệu:

- name: Create Zabbix database
  mysql_db:
    name: zabbix
    state: present
    login_user: root
    login_password: your_root_password

- name: Create Zabbix database user
  mysql_user:
    name: zabbix
    password: your_zabbix_password
    priv: "zabbix.*:ALL"
    host: localhost
    state: present
    login_user: root
    login_password: your_root_password

- name: Create Zabbix database schema
  mysql_query:
    db: zabbix
    login_user: root
    login_password: your_root_password
    sql: "/usr/share/doc/zabbix-server-mysql*/create.sql.gz | gunzip | mysql zabbix"

Khởi động dịch vụ Zabbix server và Zabbix agent:

- name: Start Zabbix server
  service:
    name: zabbix-server
    state: started

- name: Enable Zabbix server at boot time
  service:
    name: zabbix-server
    enabled: yes

- name: Start Zabbix agent
  service:
    name: zabbix-agent
    state: started

- name: Enable Zabbix agent at boot time
  service:
    name: zabbix-agent
    enabled: yes

Cấu hình firewall để cho phép kết nối đến các cổng Zabbix server và Zabbix agent:

- name: Allow Zabbix server and agent ports in firewall
  firewalld:
    service: "{{ item }}"
    permanent: yes
    state: enabled
    immediate: yes
  loop:
    - zabbix-server
    - zabbix-agent

Cấu hình Zabbix web interface. Bạn có thể sử dụng module lineinfile để sửa file cấu hình httpd.conf để cho phép truy cập vào Zabbix web interface từ xa:

- name: Allow remote access to Zabbix web interface
  lineinfile:
    path: /etc/httpd/conf/httpd.conf
    regexp: '^#.*Listen.*80$'
    line: 'Listen 80'
    state: present

- name: Allow remote access to Zabbix web interface
  lineinfile:
    path: /etc/httpd/conf/httpd.conf
    regexp: '^<Directory /usr/share/zabbix>'
    line: '    Require all granted'
    state: present

Cuối cùng, khởi động dịch vụ httpd để sử dụng Zabbix web interface:

- name: Start Apache httpd
  service:
    name: httpd
    state: started

- name: Enable Apache httpd at boot time
  service:
    name: httpd
    enabled: yes

Sau khi hoàn thành các bước trên, bạn đã cài đặt thành công Zabbix bằng Ansible mà không sử dụng role của người khác. Bạn có thể chạy playbook bằng lệnh sau:

ansible-playbook zabbix-install.yml

Với zabbix-install.yml là tên playbook của bạn.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories