From ad4e8d87d48541db6cfbb6c5e23597c8444c731e Mon Sep 17 00:00:00 2001 From: Masked-Kunsiquat <130736043+Masked-Kunsiquat@users.noreply.github.com> Date: Sat, 30 Nov 2024 13:50:45 +0000 Subject: [PATCH 1/6] adding devcontainer config --- .devcontainer/devcontainer.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .devcontainer/devcontainer.json diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..1f29dbf --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,13 @@ +{ + "image": "mcr.microsoft.com/devcontainers/universal:2", + "features": { + }, + "customizations": { + "vscode": { + "extensions": [ + "redhat.ansible", + "ms-azuretools.vscode-docker" + ] + } + } + } \ No newline at end of file From 28aba250db6690cebabc489ce1ab688b3c017477 Mon Sep 17 00:00:00 2001 From: Masked-Kunsiquat <130736043+Masked-Kunsiquat@users.noreply.github.com> Date: Sat, 30 Nov 2024 13:51:37 +0000 Subject: [PATCH 2/6] creating role to initally populate netbox from ansible inventory --- ansible/inventory/main.yaml | 25 ++++++++++ .../netbox_ansible/tasks/device_tasks.yaml | 27 ++++++++++ .../roles/netbox_ansible/tasks/ip_tasks.yaml | 34 +++++++++++++ ansible/roles/netbox_ansible/tasks/main.yaml | 17 +++++++ .../netbox_ansible/tasks/setup_tasks.yaml | 44 +++++++++++++++++ ansible/roles/netbox_ansible/vars/main.yaml | 49 +++++++++++++++++++ 6 files changed, 196 insertions(+) create mode 100644 ansible/inventory/main.yaml create mode 100644 ansible/roles/netbox_ansible/tasks/device_tasks.yaml create mode 100644 ansible/roles/netbox_ansible/tasks/ip_tasks.yaml create mode 100644 ansible/roles/netbox_ansible/tasks/main.yaml create mode 100644 ansible/roles/netbox_ansible/tasks/setup_tasks.yaml create mode 100644 ansible/roles/netbox_ansible/vars/main.yaml diff --git a/ansible/inventory/main.yaml b/ansible/inventory/main.yaml new file mode 100644 index 0000000..9e4811f --- /dev/null +++ b/ansible/inventory/main.yaml @@ -0,0 +1,25 @@ +--- +all: + children: + homelab: + hosts: + proxmox: + ansible_host: 10.0.0.180 + device_type: "ThinkCentre M93P" + platform: "Proxmox" + site: "HomeLab" + role: "Hypervisor" + + truenas: + ansible_host: 10.0.0.66 + device_type: "F4-423" + platform: "TrueNAS Scale" + site: "HomeLab" + role: "NAS" + + apollo: + ansible_host: 10.0.0.36 + device_type: "B2 S Mini PC N4020C" + platform: "Ubuntu" + site: "HomeLab" + role: "Dev Server" diff --git a/ansible/roles/netbox_ansible/tasks/device_tasks.yaml b/ansible/roles/netbox_ansible/tasks/device_tasks.yaml new file mode 100644 index 0000000..d7e0e55 --- /dev/null +++ b/ansible/roles/netbox_ansible/tasks/device_tasks.yaml @@ -0,0 +1,27 @@ +--- +- name: "TASK 100: NETBOX >> ADD DEVICE TO NETBOX" + netbox.netbox.netbox_device: + netbox_url: "{{ netbox_url }}" + netbox_token: "{{ netbox_token }}" + data: + name: "{{ inventory_hostname }}" + device_type: "{{ hostvars[inventory_hostname]['device_type'] }}" + platform: "{{ hostvars[inventory_hostname]['platform'] }}" + serial: "{{ ansible_facts['net_serialnum'] | default('N/A') }}" + status: Active + device_role: "{{ hostvars[inventory_hostname]['role'] }}" + site: "{{ hostvars[inventory_hostname]['site'] }}" + custom_fields: + code_version: "{{ ansible_facts['net_version'] | default('N/A') }}" + +- name: "TASK 110: NETBOX >> ADD INTERFACES TO NETBOX" + netbox.netbox.netbox_device_interface: + netbox_url: "{{ netbox_url }}" + netbox_token: "{{ netbox_token }}" + data: + device: "{{ inventory_hostname }}" + name: "{{ item.key }}" + form_factor: "{{ item.key | get_interface_type }}" # Define types + mac_address: "{{ item.value.macaddress | default('00:00:00:00:00:00') }}" # Provide default MAC + state: present + with_dict: "{{ ansible_facts['net_interfaces'] | default({}) }}" diff --git a/ansible/roles/netbox_ansible/tasks/ip_tasks.yaml b/ansible/roles/netbox_ansible/tasks/ip_tasks.yaml new file mode 100644 index 0000000..3e31e2b --- /dev/null +++ b/ansible/roles/netbox_ansible/tasks/ip_tasks.yaml @@ -0,0 +1,34 @@ +--- +- name: "TASK 200: NETBOX >> Add temporary interface" + netbox.netbox.netbox_device_interface: + netbox_url: "{{ netbox_url }}" + netbox_token: "{{ netbox_token }}" + data: + device: "{{ inventory_hostname }}" + name: Temporary_Interface + form_factor: Virtual + state: present + +- name: "TASK 210: NETBOX >> ADD IP ADDRESS OF ANSIBLE HOST" + netbox.netbox.netbox_ip_address: + netbox_url: "{{ netbox_url }}" + netbox_token: "{{ netbox_token }}" + data: + family: 4 + address: "{{ ansible_host }}/{{ subnet_mask | default(24) }}" + status: active + interface: + name: Temporary_Interface + device: "{{ inventory_hostname }}" + +- name: "TASK 220: NETBOX >> ASSOCIATE IP ADDRESS TO DEVICE" + netbox.netbox.netbox_device: + netbox_url: "{{ netbox_url }}" + netbox_token: "{{ netbox_token }}" + data: + name: "{{ inventory_hostname }}" + device_type: "{{ hostvars[inventory_hostname]['device_type'] }}" + platform: "{{ hostvars[inventory_hostname]['platform'] | default('Unknown') }}" + serial: "{{ ansible_facts['net_serialnum'] | default('N/A') }}" + status: Active + primary_ip4: "{{ ansible_host }}/{{ subnet_mask | default(24) }}" diff --git a/ansible/roles/netbox_ansible/tasks/main.yaml b/ansible/roles/netbox_ansible/tasks/main.yaml new file mode 100644 index 0000000..79ae92b --- /dev/null +++ b/ansible/roles/netbox_ansible/tasks/main.yaml @@ -0,0 +1,17 @@ +--- +- name: Populate NetBox + hosts: [] + gather_facts: no + vars: + netbox_url: "{{ lookup('ENV', 'NETBOX_URL') }}" + netbox_token: "{{ lookup('ENV', 'NETBOX_API_KEY') }}" + + tasks: + - name: "Include setup tasks" + ansible_builtin.include_tasks: setup_tasks.yaml + + - name: "Include device tasks" + ansible_builtin.include_tasks: device_tasks.yaml + + - name: "Include IP tasks" + ansible_builtin.include_tasks: ip_tasks.yaml diff --git a/ansible/roles/netbox_ansible/tasks/setup_tasks.yaml b/ansible/roles/netbox_ansible/tasks/setup_tasks.yaml new file mode 100644 index 0000000..7e8d9e2 --- /dev/null +++ b/ansible/roles/netbox_ansible/tasks/setup_tasks.yaml @@ -0,0 +1,44 @@ +--- +- name: "TASK 10: SETUP SITES" + netbox.netbox.netbox_site: + netbox_url: "{{ netbox_url }}" + netbox_token: "{{ netbox_token }}" + data: "{{ item }}" + loop: "{{ site_list }}" + +- name: "TASK 20: SETUP MANUFACTURERS" + netbox.netbox.netbox_manufacturer: + netbox_url: "{{ netbox_url }}" + netbox_token: "{{ netbox_token }}" + data: + name: "{{ manufacturer }}" + loop: "{{ manufacturers }}" + loop_control: + loop_var: manufacturer + +- name: "TASK 30: SETUP DEVICE TYPES" + netbox.netbox.netbox_device_type: + netbox_url: "{{ netbox_url }}" + netbox_token: "{{ netbox_token }}" + data: + model: "{{ device_type.model }}" + manufacturer: "{{ device_type.manufacturer }}" + slug: "{{ device_type.slug }}" + part_number: "{{ device_type.part_number }}" + is_full_depth: "{{ device.type_full_depth }}" + loop: "{{ device_types }}" + loop_control: + loop_var: device_type + label: "{{ device_type['model'] }}" + +- name: "TASK 40: SETUP PLATFORMS" + netbox.netbox.netbox_manufacturer: + netbox_url: "{{ netbox_url }}" + netbox_token: "{{ netbox_token }}" + data: + name: "{{ platform.name }}" + slug: "{{ platform.slug }}" + loop: "{{ platforms }}" + loop_control: + loop_var: platform + label: "{{ platform['name'] }}" diff --git a/ansible/roles/netbox_ansible/vars/main.yaml b/ansible/roles/netbox_ansible/vars/main.yaml new file mode 100644 index 0000000..09a30a3 --- /dev/null +++ b/ansible/roles/netbox_ansible/vars/main.yaml @@ -0,0 +1,49 @@ +--- +# Sites in HomeLab +site_list: + - name: "HomeLab" + time_zone: America/New_York + status: Active + +manufacturers: + - Bmax + - Lenovo + - Terramaster + - TP-Link + +device_types: + - model: "B2 S Mini PC N4020C" + manufacturer: "BMax" + slug: "b2s-mini-pc" + part_number: "n4020c" + Full_depth: False + + - model: "ThinkCentre M93P" + manufacturer: "Lenovo" + slug: "thinkcentre-m93p" + part_number: "m93p" + Full_depth: False + + - model: "F4-423" + manufacturer: "Terramaster" + slug: "f4-423" + part_number: "f4-423" + Full_depth: False + + - model: "TL-SG105" + manufacturer: "TP-Link" + slug: "tl-sg105" + part_number: "tl-sg105" + Full_depth: False + + platforms: + - name: "Proxmox" + slug: "proxmox" + - name: "TrueNAS Scale" + slug: "truenas-scale" + - name: "Ubuntu" + slug: "ubuntu" + - name: "Debian" + slug: "debian" + - name: "Alpine-Linux" + slug: "alpine" \ No newline at end of file From e8a631c823a0a092cbae3607c07dd6a568536736 Mon Sep 17 00:00:00 2001 From: Masked-Kunsiquat <130736043+Masked-Kunsiquat@users.noreply.github.com> Date: Sat, 30 Nov 2024 14:09:07 +0000 Subject: [PATCH 3/6] making sure ansible is installed in the devcontainer --- .devcontainer/devcontainer.json | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 1f29dbf..adbd3fc 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,13 +1,14 @@ { "image": "mcr.microsoft.com/devcontainers/universal:2", - "features": { - }, + "features": {}, "customizations": { - "vscode": { - "extensions": [ - "redhat.ansible", - "ms-azuretools.vscode-docker" - ] - } - } - } \ No newline at end of file + "vscode": { + "extensions": [ + "redhat.ansible", + "ms-azuretools.vscode-docker" + ] + } + }, + "postCreateCommand": "sudo apt-get update && sudo apt-get install -y python3 python3-pip && sudo apt-get install -y ansible" + } + \ No newline at end of file From c51cc870a7d071f65f8d300d9f37b4a2918b7218 Mon Sep 17 00:00:00 2001 From: Masked-Kunsiquat <130736043+Masked-Kunsiquat@users.noreply.github.com> Date: Sat, 30 Nov 2024 09:45:27 -0500 Subject: [PATCH 4/6] Delete .devcontainer/devcontainer.json --- .devcontainer/devcontainer.json | 14 -------------- 1 file changed, 14 deletions(-) delete mode 100644 .devcontainer/devcontainer.json diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json deleted file mode 100644 index adbd3fc..0000000 --- a/.devcontainer/devcontainer.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "image": "mcr.microsoft.com/devcontainers/universal:2", - "features": {}, - "customizations": { - "vscode": { - "extensions": [ - "redhat.ansible", - "ms-azuretools.vscode-docker" - ] - } - }, - "postCreateCommand": "sudo apt-get update && sudo apt-get install -y python3 python3-pip && sudo apt-get install -y ansible" - } - \ No newline at end of file From bcf53773b0a3772103902213d12e0328d4970914 Mon Sep 17 00:00:00 2001 From: Masked-Kunsiquat <130736043+Masked-Kunsiquat@users.noreply.github.com> Date: Sat, 30 Nov 2024 15:09:42 +0000 Subject: [PATCH 5/6] resolving coderabbit suggestions --- .../netbox_ansible/tasks/device_tasks.yaml | 40 ++++++++++++------- .../netbox_ansible/tasks/setup_tasks.yaml | 17 ++++---- ansible/roles/netbox_ansible/vars/main.yaml | 10 ++--- 3 files changed, 40 insertions(+), 27 deletions(-) diff --git a/ansible/roles/netbox_ansible/tasks/device_tasks.yaml b/ansible/roles/netbox_ansible/tasks/device_tasks.yaml index d7e0e55..3c63cdb 100644 --- a/ansible/roles/netbox_ansible/tasks/device_tasks.yaml +++ b/ansible/roles/netbox_ansible/tasks/device_tasks.yaml @@ -1,19 +1,31 @@ --- - name: "TASK 100: NETBOX >> ADD DEVICE TO NETBOX" - netbox.netbox.netbox_device: - netbox_url: "{{ netbox_url }}" - netbox_token: "{{ netbox_token }}" - data: - name: "{{ inventory_hostname }}" - device_type: "{{ hostvars[inventory_hostname]['device_type'] }}" - platform: "{{ hostvars[inventory_hostname]['platform'] }}" - serial: "{{ ansible_facts['net_serialnum'] | default('N/A') }}" - status: Active - device_role: "{{ hostvars[inventory_hostname]['role'] }}" - site: "{{ hostvars[inventory_hostname]['site'] }}" - custom_fields: - code_version: "{{ ansible_facts['net_version'] | default('N/A') }}" - + block: + - name: "Validate required variables" + assert: + that: + - hostvars[inventory_hostname]['device_type'] is defined + - hostvars[inventory_hostname]['platform'] is defined + - hostvars[inventory_hostname]['role'] is defined + - hostvars[inventory_hostname]['site'] is defined + fail_msg: "Missing required variables for device creation" + netbox.netbox.netbox_device: + netbox_url: "{{ netbox_url }}" + netbox_token: "{{ netbox_token }}" + data: + name: "{{ inventory_hostname }}" + device_type: "{{ hostvars[inventory_hostname]['device_type'] }}" + platform: "{{ hostvars[inventory_hostname]['platform'] }}" + serial: "{{ ansible_facts['net_serialnum'] | default('N/A') }}" + status: Active + device_role: "{{ hostvars[inventory_hostname]['role'] }}" + site: "{{ hostvars[inventory_hostname]['site'] }}" + custom_fields: + code_version: "{{ ansible_facts['net_version'] | default('N/A') }}" + rescue: + - name: "Handle NetBox API failure" + fail: + msg: "Failed to create device in NetBox: {{ ansible_failed_result }}" - name: "TASK 110: NETBOX >> ADD INTERFACES TO NETBOX" netbox.netbox.netbox_device_interface: netbox_url: "{{ netbox_url }}" diff --git a/ansible/roles/netbox_ansible/tasks/setup_tasks.yaml b/ansible/roles/netbox_ansible/tasks/setup_tasks.yaml index 7e8d9e2..be40174 100644 --- a/ansible/roles/netbox_ansible/tasks/setup_tasks.yaml +++ b/ansible/roles/netbox_ansible/tasks/setup_tasks.yaml @@ -1,11 +1,12 @@ --- - name: "TASK 10: SETUP SITES" - netbox.netbox.netbox_site: - netbox_url: "{{ netbox_url }}" - netbox_token: "{{ netbox_token }}" - data: "{{ item }}" - loop: "{{ site_list }}" - + netbox.netbox.netbox_site: + netbox_url: "{{ netbox_url }}" + netbox_token: "{{ netbox_token }}" + data: "{{ item }}" + loop: "{{ site_list }}" + loop_control: + label: "{{ item.name }}" - name: "TASK 20: SETUP MANUFACTURERS" netbox.netbox.netbox_manufacturer: netbox_url: "{{ netbox_url }}" @@ -25,14 +26,14 @@ manufacturer: "{{ device_type.manufacturer }}" slug: "{{ device_type.slug }}" part_number: "{{ device_type.part_number }}" - is_full_depth: "{{ device.type_full_depth }}" + is_full_depth: "{{ device.type.full_depth }}" loop: "{{ device_types }}" loop_control: loop_var: device_type label: "{{ device_type['model'] }}" - name: "TASK 40: SETUP PLATFORMS" - netbox.netbox.netbox_manufacturer: + netbox.netbox.netbox_platform: netbox_url: "{{ netbox_url }}" netbox_token: "{{ netbox_token }}" data: diff --git a/ansible/roles/netbox_ansible/vars/main.yaml b/ansible/roles/netbox_ansible/vars/main.yaml index 09a30a3..4031820 100644 --- a/ansible/roles/netbox_ansible/vars/main.yaml +++ b/ansible/roles/netbox_ansible/vars/main.yaml @@ -6,7 +6,7 @@ site_list: status: Active manufacturers: - - Bmax + - BMax - Lenovo - Terramaster - TP-Link @@ -16,25 +16,25 @@ device_types: manufacturer: "BMax" slug: "b2s-mini-pc" part_number: "n4020c" - Full_depth: False + full_depth: False - model: "ThinkCentre M93P" manufacturer: "Lenovo" slug: "thinkcentre-m93p" part_number: "m93p" - Full_depth: False + full_depth: False - model: "F4-423" manufacturer: "Terramaster" slug: "f4-423" part_number: "f4-423" - Full_depth: False + full_depth: False - model: "TL-SG105" manufacturer: "TP-Link" slug: "tl-sg105" part_number: "tl-sg105" - Full_depth: False + full_depth: False platforms: - name: "Proxmox" From dae7c86062a0dffbfd7846c18cfbe2b6858247e3 Mon Sep 17 00:00:00 2001 From: Masked-Kunsiquat <130736043+Masked-Kunsiquat@users.noreply.github.com> Date: Sun, 1 Dec 2024 15:37:05 -0500 Subject: [PATCH 6/6] applying more roderaddit suggestions/ansible linting issues --- .vscode/settings.json | 2 +- .../netbox_ansible/tasks/device_tasks.yaml | 27 ++++++++-------- ansible/roles/netbox_ansible/tasks/main.yaml | 4 +-- .../netbox_ansible/tasks/setup_tasks.yaml | 5 +++ ansible/roles/netbox_ansible/vars/main.yaml | 32 +++++++++---------- 5 files changed, 38 insertions(+), 32 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 243b624..69372d5 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,5 +2,5 @@ "yaml.schemas": { "https://raw.githubusercontent.com/ansible/ansible-lint/main/src/ansiblelint/schemas/ansible.json": "file:///workspaces/ansible-prime/ansible/roles/docker_services/tasks/deploy.yaml" }, - "ansible.python.interpreterPath": "/usr/local/python/current/bin/python3" + "ansible.python.interpreterPath": "/usr/bin/python3" } \ No newline at end of file diff --git a/ansible/roles/netbox_ansible/tasks/device_tasks.yaml b/ansible/roles/netbox_ansible/tasks/device_tasks.yaml index 3c63cdb..12cd827 100644 --- a/ansible/roles/netbox_ansible/tasks/device_tasks.yaml +++ b/ansible/roles/netbox_ansible/tasks/device_tasks.yaml @@ -9,19 +9,20 @@ - hostvars[inventory_hostname]['role'] is defined - hostvars[inventory_hostname]['site'] is defined fail_msg: "Missing required variables for device creation" - netbox.netbox.netbox_device: - netbox_url: "{{ netbox_url }}" - netbox_token: "{{ netbox_token }}" - data: - name: "{{ inventory_hostname }}" - device_type: "{{ hostvars[inventory_hostname]['device_type'] }}" - platform: "{{ hostvars[inventory_hostname]['platform'] }}" - serial: "{{ ansible_facts['net_serialnum'] | default('N/A') }}" - status: Active - device_role: "{{ hostvars[inventory_hostname]['role'] }}" - site: "{{ hostvars[inventory_hostname]['site'] }}" - custom_fields: - code_version: "{{ ansible_facts['net_version'] | default('N/A') }}" + - name: "Create device in NetBox" + netbox.netbox.netbox_device: + netbox_url: "{{ netbox_url }}" + netbox_token: "{{ netbox_token }}" + data: + name: "{{ inventory_hostname }}" + device_type: "{{ hostvars[inventory_hostname]['device_type'] }}" + platform: "{{ hostvars[inventory_hostname]['platform'] }}" + serial: "{{ ansible_facts['net_serialnum'] | default('N/A') }}" + status: "{{ device_status | default('Active') }}" + device_role: "{{ hostvars[inventory_hostname]['role'] }}" + site: "{{ hostvars[inventory_hostname]['site'] }}" + custom_fields: + code_version: "{{ ansible_facts['net_version'] | default('N/A') }}" rescue: - name: "Handle NetBox API failure" fail: diff --git a/ansible/roles/netbox_ansible/tasks/main.yaml b/ansible/roles/netbox_ansible/tasks/main.yaml index 79ae92b..ebd87a6 100644 --- a/ansible/roles/netbox_ansible/tasks/main.yaml +++ b/ansible/roles/netbox_ansible/tasks/main.yaml @@ -1,12 +1,12 @@ ---- - name: Populate NetBox hosts: [] - gather_facts: no + gather_facts: false vars: netbox_url: "{{ lookup('ENV', 'NETBOX_URL') }}" netbox_token: "{{ lookup('ENV', 'NETBOX_API_KEY') }}" tasks: + block: - name: "Include setup tasks" ansible_builtin.include_tasks: setup_tasks.yaml diff --git a/ansible/roles/netbox_ansible/tasks/setup_tasks.yaml b/ansible/roles/netbox_ansible/tasks/setup_tasks.yaml index be40174..1c0ec40 100644 --- a/ansible/roles/netbox_ansible/tasks/setup_tasks.yaml +++ b/ansible/roles/netbox_ansible/tasks/setup_tasks.yaml @@ -7,6 +7,8 @@ loop: "{{ site_list }}" loop_control: label: "{{ item.name }}" + no_log: true + - name: "TASK 20: SETUP MANUFACTURERS" netbox.netbox.netbox_manufacturer: netbox_url: "{{ netbox_url }}" @@ -16,6 +18,7 @@ loop: "{{ manufacturers }}" loop_control: loop_var: manufacturer + no_log: true - name: "TASK 30: SETUP DEVICE TYPES" netbox.netbox.netbox_device_type: @@ -31,6 +34,7 @@ loop_control: loop_var: device_type label: "{{ device_type['model'] }}" + no_log: true - name: "TASK 40: SETUP PLATFORMS" netbox.netbox.netbox_platform: @@ -43,3 +47,4 @@ loop_control: loop_var: platform label: "{{ platform['name'] }}" + no_log: true diff --git a/ansible/roles/netbox_ansible/vars/main.yaml b/ansible/roles/netbox_ansible/vars/main.yaml index 4031820..bca3277 100644 --- a/ansible/roles/netbox_ansible/vars/main.yaml +++ b/ansible/roles/netbox_ansible/vars/main.yaml @@ -1,42 +1,42 @@ --- # Sites in HomeLab -site_list: +netbox_ansible_site_list: - name: "HomeLab" time_zone: America/New_York - status: Active - -manufacturers: + status: active + +netbox_ansible_manufacturers: - BMax - Lenovo - Terramaster - TP-Link - -device_types: + +netbox_ansible_device_types: - model: "B2 S Mini PC N4020C" manufacturer: "BMax" slug: "b2s-mini-pc" part_number: "n4020c" - full_depth: False - + full_depth: false + - model: "ThinkCentre M93P" manufacturer: "Lenovo" slug: "thinkcentre-m93p" part_number: "m93p" - full_depth: False - + full_depth: false + - model: "F4-423" manufacturer: "Terramaster" slug: "f4-423" part_number: "f4-423" - full_depth: False - + full_depth: false + - model: "TL-SG105" manufacturer: "TP-Link" slug: "tl-sg105" part_number: "tl-sg105" - full_depth: False - - platforms: + full_depth: false + +netbox_ansible_platforms: - name: "Proxmox" slug: "proxmox" - name: "TrueNAS Scale" @@ -46,4 +46,4 @@ device_types: - name: "Debian" slug: "debian" - name: "Alpine-Linux" - slug: "alpine" \ No newline at end of file + slug: "alpine"