Ansible Playbook zum Verwalten von Windows / Linux Zabbix-Agenten

In diesem Artikel geht es darum, einfache ansible Playbooks zu schreiben, um Agenten automatisch auf Linux / Windows-Hosts zu installieren und Hosts ĂŒber die Zabbix-API, einschließlich SNMP-Hosts, zu registrieren. Es werden vorgefertigte Rollen und Module von Ansible Galaxy Zabbix verwendet.





Zabbix hat eigene Rollen und Module fĂŒr die Konfiguration vieler Zabbix-Komponenten ĂŒber Ansible vorbereitet - eine vollstĂ€ndige Liste finden Sie hier .





In diesem Artikel werden wir nur ĂŒber zabbix_agent und zabbix_host sprechen .





* Dieser Artikel behandelt oder zeigt nicht die Installation und Konfiguration von Ansible. Vieles davon gibt es im Internet.





zabbix_agent





Dies ist eine Rolle, die die Installation des Agenten auf den folgenden Betriebssystemen unterstĂŒtzt:





  • roter Hut





  • Fedora





  • Debian





  • Ubuntu





  • opensuse





  • Windows (Bester Aufwand)





  • Mac OS





Eine aktuelle Liste auf dem offiziellen Github des Projekts .





zabbix_host





Dies ist ein Modul zum HinzufĂŒgen / Entfernen / Ändern von Hosts auf dem zabbix-Server. Eine vollstĂ€ndige Beschreibung des Moduls finden Sie hier .





Fahren wir also mit der Einrichtung fort

Der erste Schritt ist die Installation der Ansible-Sammlung (funktioniert nur in Ansible-Version 2.9+):





ansible-galaxy collection install community.zabbix
      
      



Erstellen Sie nach der Installation der Sammlung eine Datei mit einem Playbook. Dieses Playbook fĂŒhrt zwei Dinge aus: Es setzt die Rolle community.zabbix.zabbix_agent auf die angegebenen Hosts und registriert im zweiten Schritt den Host in zabbix ĂŒber das 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

      
      



Daher sollten die Dateien die folgende Dateistruktur haben:





.
├── linux-inventory
├── snmp-inventory
├── windows-inventory
└── zabbix-agent-all.yaml

      
      



Ein Spielbuch starten

Um Playbooks auszufĂŒhren, mĂŒssen Sie die folgenden Befehle ausfĂŒhren:





So installieren Sie auf Linux-Hosts:





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
      
      



Wenn nur eine Installation erforderlich ist, können Sie die obigen Befehle mit dem Installations-Tag ausfĂŒhren:





ansible-playbook -i linux-inventory zabbix-agent-all.yaml -t install
      
      



Wenn Sie spezielle zabbix-Einstellungen haben oder anpassen möchten, finden Sie eine vollstÀndige Liste der Rollen- und Modulvariablen auf der Projektseite: zabbix_agent und zabbix_host





Alle Quellen fĂŒr diesen Artikel sind auf Github .








All Articles