Artikel ini membahas tentang menulis pedoman sederhana yang memungkinkan untuk secara otomatis menginstal agen pada host Linux / Windows dan mendaftarkan host melalui Zabbix API, termasuk host SNMP. Peran dan modul siap pakai Galaxy Zabbix akan digunakan.
Zabbix telah menyiapkan peran dan modulnya sendiri untuk mengkonfigurasi banyak komponen Zabbix melalui Ansible - daftar lengkapnya dapat ditemukan di sini .
Pada artikel ini, kita hanya akan membahas tentang zabbix_agent dan zabbix_host .
* Artikel ini tidak mencakup atau menunjukkan instalasi dan konfigurasi Ansible, ada banyak hal seperti ini di Internet.
zabbix_agent
Ini adalah peran yang mendukung penginstalan agen di sistem operasi berikut:
topi merah
Fedora
Debian
Ubuntu
openuse
Windows (Upaya terbaik)
macOS
Daftar terbaru di github resmi proyek .
zabbix_host
Ini adalah modul untuk menambah / menghapus / mengubah host di server zabbix. Penjelasan lengkap tentang modul ada di sini .
Jadi mari kita lanjutkan ke penyiapan
Langkah pertama adalah menginstal koleksi yang memungkinkan (hanya berfungsi di versi 2.9+ yang memungkinkan):
ansible-galaxy collection install community.zabbix
Setelah menginstal koleksi, buat file dengan pedoman. Playbook ini melakukan dua hal - ini menetapkan peran community.zabbix.zabbix_agent ke host yang ditentukan dan di langkah kedua mendaftarkan host di zabbix melalui modul community.zabbix.zabbix_host.
zabbix-agent-all.yaml :
- hosts: all
tasks:
- name: Install agent
include_role:
name: community.zabbix.zabbix_agent #
tags:
- install #
- name: Create a new host or update an existing host's info # zabbix
local_action:
module: community.zabbix.zabbix_host # zabbix_host
server_url: "{{ zabbix_url }}" # - url API
login_user: "{{ zabbix_api_user }}" # - Admin
login_password: "{{ zabbix_api_pass }}" # -
host_name: "{{ item }}" - #
visible_name: "{{ hostvars[item].zabbix_visible_name | default(item) }}" #
description: "{{ hostvars[item].zabbix_host_description | default('') }} OS: {{ hostvars[item].ansible_distribution | default('') }} {{ hostvars[item].ansible_distribution_version | default('') }}" # ansible
host_groups: "{{ hostvars[item].zabbix_host_groups }}" #
link_templates: "{{ hostvars[item].zabbix_link_templates }}" # template
status: "{{ hostvars[item].zabbix_host_status }}" # - Enabled Disabled
state: present # ansible , absent
inventory_mode: disabled # inventory mode
interfaces: #
- type: "{{ hostvars[item].zabbix_interface_type }}" # - SNMP, Agent, JMX, IPMI
main: 1
useip: "{{ hostvars[item].zabbix_interface_use_ip }}" # ip dns
ip: "{{ hostvars[item].zabbix_interface_ip }}" # ip - ip
dns: "{{ item }}" # useip: 0 FQDN
port: "{{ hostvars[item].zabbix_interface_port }}" #
loop: "{{ groups['all'] }}" #
run_once: true # ,
tags:
- add-host #
linux-inventory, windows-inventory snmp-inventory, , .
Linux
linux-inventory:
[all]
host1.local # FQDN IP-
host2.local zabbix_host_description=βThe host2 descriptionβ
host3.local zabbix_host_status=disabled #
host4.local zabbix_host_groups=β["Custom group"]β #
[all:vars]
zabbix_agent_server=my.zabbix.server #
zabbix_url=https://my.zabbix.server # URL
zabbix_api_use=true # API
zabbix_api_user=Admin
zabbix_api_pass=StrongPa$$w0rd
zabbix_interface_port="10050" #
zabbix_host_groups=["Linux servers"] #
zabbix_link_templates=["Linux by Zabbix agent"] # template
zabbix_interface_type=agent # -
zabbix_interface_use_ip="0" # dns fqdn
zabbix_interface_ip=""
zabbix_host_description="My linux server" #
zabbix_host_status=enabled #
Windows
Windows ansible - , ansible.
windows-inventory:
[all]
winhost01.local
winhost02.local zabbix_host_groups=β["Custom group"]β #
winhost03.local zabbix_host_status=disabled #
[all:vars]
ansible_user=user@DOMAIN.LOCAL # , kerberos linux
ansible_password=StrongPa$$w0rd
ansible_connection=winrm # windows WinRM
ansible_winrm_server_cert_validation=ignore # , ignore
zabbix_agent_server=my.zabbix.server #
zabbix_url=https://my.zabbix.server # URL
zabbix_api_use=true # API
zabbix_api_user=Admin
zabbix_api_pass=StrongPa$$w0rd
zabbix_interface_port="10050" #
zabbix_host_groups=["Windows servers"] #
zabbix_link_templates=["Windows by Zabbix agent"] # template
zabbix_interface_type=agent # -
zabbix_interface_use_ip="0" # dns fqdn
zabbix_interface_ip=""
zabbix_host_description="My windows server" #
zabbix_host_status=enabled #
SNMP
SNMP snmp-inventory:
[all]
snmphost1.local zabbix_link_templates='["Cisco IOS SNMP","Network Generic Device SNMP"]' zabbix_host_groups='["Network devices"]'
snmp2.local zabbix_link_templates='["Template SNMP OS ESXi"]' zabbix_host_groups='["Hypervisors"]' zabbix_snmp_community=βCommunityβ
[all:vars]
zabbix_url=https://my.zabbix.server # URL
zabbix_api_use=true # API
zabbix_api_user=Admin
zabbix_api_pass=StrongPa$$w0rd
zabbix_interface_port="161" # , 161
zabbix_interface_type=snmp # snmp
zabbix_interface_use_ip="0" # dns
zabbix_interface_ip="" # ip
zabbix_host_description="My SNMP host" #
zabbix_host_status=enabled #
zabbix_snmp_community="MyCommunity" # SNMP community
Hasilnya, file harus memiliki struktur file berikut:
.
βββ linux-inventory
βββ snmp-inventory
βββ windows-inventory
βββ zabbix-agent-all.yaml
Meluncurkan buku pedoman
Untuk menjalankan playbook, Anda perlu menjalankan perintah berikut:
Untuk menginstal di host Linux:
ansible-playbook -i linux-inventory zabbix-agent-all.yaml
Windows:
ansible-playbook -i windows-inventory zabbix-agent-all.yaml
SNMP:
ansible-playbook -i snmp-inventory zabbix-agent-all.yaml
Jika hanya penginstalan yang diperlukan, Anda dapat menjalankan perintah di atas dengan tag instal:
ansible-playbook -i linux-inventory zabbix-agent-all.yaml -t install
Jika Anda memiliki pengaturan zabbix khusus atau ingin menyesuaikan, daftar lengkap variabel peran dan modul dapat ditemukan di halaman proyek: zabbix_agent dan zabbix_host
Semua sumber untuk artikel ini ada di github .