HiRoLabブログ

HiRoのゆるふわIT備忘録

Netbox/Ansibleを使ってzabbixのデバイス登録自動化

はじめに

ubuntu上にdockerコンテナにてNebox環境を構築
ansible,その他必要なパッケージのインストールを行いzabbixのデバイス登録の自動化を行った。

動作環境

  1. OS
    ubuntu on ESXi

  2. Netbox Netbox on docker

  3. Ansibleバージョン

ansible            5.1.0    
ansible-core       2.12.1 
  1. zabbix

hiro1325.hatenablog.com

zabbixの環境は前回の記事と同等のものを使用

目次

その他必要なパッケージ

pynetbox
netaddr
zabbix-api

Netboxの設定

下図にあるcisco1という名前のデバイスをzabbixに登録を行う。

f:id:HiRo1325:20220113023054p:plain

zabbixの事前確認

下図にcisco1という名前のデバイスが登録されていないことを確認。

f:id:HiRo1325:20220113023434p:plain

cisco側にSNMP等の設定を行っていない為、今回はzabbixの登録までとなる。

インベントリファイル

[zabbix]
192.168.100.14

Ansible-playbooks

---
- hosts: zabbix
  #  gather_facts: False
  user: root
  connection: local
  vars:
    - netbox_url: http://localhost:8000
    - netbox_token: 0123456789abcdef0123456789abcdef01234567
  tasks:
    - name: create host 
      local_action:
        module: community.zabbix.zabbix_host
        server_url: http://192.168.100.14/zabbix
        login_user: Admin
        login_password: zabbix
        host_name: "{{ query('netbox.netbox.nb_lookup', 'devices',api_filter='manufacture=cisco',
                        api_endpoint=netbox_url, token=netbox_token)[0].value.name }}"
        visible_name: "{{ query('netbox.netbox.nb_lookup', 'devices',api_filter='manufacture=cisco',
                        api_endpoint=netbox_url, token=netbox_token)[0].value.name }}"
        description: hostmake
        host_groups: cisco_router
        link_templates: Template Net Cisco IOS SNMPv2
        status: enabled
        state: present
        inventory_mode: disabled
        ipmi_authtype: null 
        ipmi_privilege: 2
        interfaces:
          - bulk: 1
            details:
                community: '{$SNMP_COMMUNITY}'
            type: '2'
            main: 1
            useip: 1
            ip: "{{ query('netbox.netbox.nb_lookup', 'ip-addresses',api_filter='device=cisco1',
                        api_endpoint=netbox_url, token=netbox_token)[0].value.address | ipaddr('address')}}"
            dns: ""
            port: "161"
        macros:
          - macro: '{$SNMP_COMMUNITY}'
            value: router

実行

# ansible-playbook -i hosts netbox-zabbix-add.yml 

PLAY [zabbix] *******************************************************************************************************************************************************************************

TASK [Gathering Facts] **********************************************************************************************************************************************************************
ok: [192.168.100.14]

TASK [create host] **************************************************************************************************************************************************************************
changed: [192.168.100.14 -> localhost]

PLAY RECAP **********************************************************************************************************************************************************************************
192.168.100.14             : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

確認

登録されていることを確認

f:id:HiRo1325:20220113023902p:plain

終わりに

なかなか記事の更新ができていないが、備忘録として今後はnetbox/ansible関連の書いていく。 Azure/VMware等にも取り組もうと考えてます。