Playbook yang memungkinkan untuk mengelola agen Windows / Linux Zabbix

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 #     
      
      



, zabbix http, .., .





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 .








All Articles