Skip to content

Commit 8ef1932

Browse files
authored
Add action_group to enable module defaults groups (#800)
This enables support for the module defaults groups feature introduced in ansible-core 2.12. Using module defaults groups one can provide default values (e.g. token, url, etc.) for a group of modules instead of having to specify them for every used module. For more details see: https://docs.ansible.com/ansible/latest/user_guide/playbooks_module_defaults.html#module-defaults-groups This commit adds all modules available in this collection to an action group called 'netbox'. This change is backwards compatible. Older versions of Ansible just ignore this.
1 parent de46370 commit 8ef1932

File tree

2 files changed

+103
-1
lines changed

2 files changed

+103
-1
lines changed

docs/getting_started/how-to-use/advanced.rst

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -298,4 +298,36 @@ IP address to be within **Test VRF 2**.
298298
299299
We can now see that the IP address is now within VRF with ID 2.
300300

301-
Hopefully this shines some light on this useful feature to allow you, as the user, to define your specific needs for finding a unique object within your NetBox instance.
301+
Hopefully this shines some light on this useful feature to allow you, as the user, to define your specific needs for finding a unique object within your NetBox instance.
302+
303+
304+
Using Module defaults groups
305+
--------------------------------------------
306+
307+
Ansible-core >= 2.12 provide a useful feature called [Module defaults groups](https://docs.ansible.com/ansible/latest/user_guide/playbooks_module_defaults.html#module-defaults-groups) that lets us specify default parameters for a group of modules in a single place. We can use the action_group ``netbox`` that contains all modules from this collection to avoid setting e.g. ``token`` and ``url`` on each task and thus reduce boilerplate code.
308+
309+
.. code-block:: yaml
310+
311+
---
312+
- hosts: "localhost"
313+
314+
module_defaults:
315+
group/netbox.netbox.netbox:
316+
netbox_url: "http://netbox.local"
317+
netbox_token: "thisIsMyToken"
318+
319+
tasks:
320+
- name: "Create device type"
321+
netbox.netbox.netbox_device_type:
322+
data:
323+
model: "test-device-type"
324+
slug: "c9410r"
325+
326+
- name: "Create device"
327+
netbox.netbox.netbox_device:
328+
data:
329+
name: "Test Device"
330+
device_type: "C9410R"
331+
device_role: "Core Switch"
332+
site: "Main"
333+

meta/runtime.yml

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,73 @@ plugin_routing:
77
removal_version: "0.1.0"
88
warning_text: "netbox_interface has been superseceded by netbox.netbox.netbox_device_interface"
99
redirect: netbox.netbox.plugins.modules.netbox_device_interface
10+
11+
action_groups:
12+
netbox:
13+
- netbox_aggregate
14+
- netbox_cable
15+
- netbox_circuit
16+
- netbox_circuit_termination
17+
- netbox_circuit_type
18+
- netbox_cluster
19+
- netbox_cluster_group
20+
- netbox_cluster_type
21+
- netbox_config_context
22+
- netbox_console_port
23+
- netbox_console_port_template
24+
- netbox_console_server_port
25+
- netbox_console_server_port_template
26+
- netbox_contact
27+
- netbox_contact_group
28+
- netbox_contact_role
29+
- netbox_custom_field
30+
- netbox_custom_link
31+
- netbox_device
32+
- netbox_device_bay
33+
- netbox_device_bay_template
34+
- netbox_device_interface
35+
- netbox_device_interface_template
36+
- netbox_device_role
37+
- netbox_device_type
38+
- netbox_export_template
39+
- netbox_front_port
40+
- netbox_front_port_template
41+
- netbox_inventory_item
42+
- netbox_ip_address
43+
- netbox_ipam_role
44+
- netbox_location
45+
- netbox_manufacturer
46+
- netbox_platform
47+
- netbox_power_feed
48+
- netbox_power_outlet
49+
- netbox_power_outlet_template
50+
- netbox_power_panel
51+
- netbox_power_port
52+
- netbox_power_port_template
53+
- netbox_prefix
54+
- netbox_provider
55+
- netbox_provider_network
56+
- netbox_rack
57+
- netbox_rack_group
58+
- netbox_rack_role
59+
- netbox_rear_port
60+
- netbox_rear_port_template
61+
- netbox_region
62+
- netbox_rir
63+
- netbox_route_target
64+
- netbox_service
65+
- netbox_site
66+
- netbox_site_group
67+
- netbox_tag
68+
- netbox_tenant
69+
- netbox_tenant_group
70+
- netbox_virtual_chassis
71+
- netbox_virtual_machine
72+
- netbox_vlan
73+
- netbox_vlan_group
74+
- netbox_vm_interface
75+
- netbox_vrf
76+
- netbox_webhook
77+
- netbox_wireless_lan
78+
- netbox_wireless_lan_group
79+
- netbox_wireless_link

0 commit comments

Comments
 (0)