首页 > 解决方案 > 使用 Netbox Ansible 模块

问题描述

我一直想尝试可用于 Netbox [1] 的 Ansible 模块。

然而,我发现自己一开始就被困住了。

这是我尝试过的:

将前缀/VLAN 添加到网箱 [2]:

cat setup-vlans.yml 
---
- hosts: netbox 
  
  tasks:
    - name: Create prefix 192.168.10.0/24 in Netbox 
      netbox_prefix:
        netbox_token: "{{ netbox_token }}"
        netbox_url: "{{ netbox_url }}"
        data:
          prefix: 192.168.10.0/24
        state: present

这给了我以下错误:

ansible-playbook setup-vlans.yml 

PLAY [netbox] *********************************************************************************************************************************

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

TASK [Create prefix 192.168.10.0/24 in Netbox] ************************************************************************************************
fatal: [NETBOX]: FAILED! => {"changed": false, "msg": "Failed to establish connection to Netbox API"}

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

有人可以指出我哪里出错了吗?

注意:NetBox URL 是带有 nginx 和 netbox-docker [3] 的 https://url 设置。

谢谢和问候, 萨娜

[1] https://github.com/netbox-community/ansible_modules

[2] https://docs.ansible.com/ansible/latest/modules/netbox_prefix_module.html

[3] https://github.com/netbox-community/netbox-docker

标签: ansible

解决方案


所有使用 API 模块netbox(但对于gcpor相同aws)的 playbook 必须用作主机而不是目标,而是将执行 playbook 以调用 API 的主机。大多数时候这是localhost,但也可以是一个专用节点,如堡垒。

您可以在您链接的文档的示例中看到它使用的示例hosts: localhost

因此我认为你的剧本应该是

---
- hosts: localhost
  connection: local
  gather_facts: False
  
  tasks:
    - name: Create prefix 192.168.10.0/24 in Netbox 
      netbox_prefix:
        netbox_token: "{{ netbox_token }}"
        netbox_url: "{{ netbox_url }}"
        data:
          prefix: 192.168.10.0/24
        state: present

推荐阅读