Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add modules to manipulate additional types of Name Server Groups #56

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
b1b6c8b
clarify that nios_nsgroup creates authoritative groups
badnetmask Apr 13, 2021
c320faf
add nios_nsgroup_forwardingmember
badnetmask Apr 13, 2021
a22515d
add nios_nsgroup_forwardingmember
badnetmask Apr 13, 2021
7494adc
fix sanity tests
badnetmask Apr 13, 2021
f297f0f
fix module description
badnetmask Apr 13, 2021
eef3741
add nios_nsgroup_delegation
badnetmask Apr 13, 2021
f49f3ab
add nios_nsgroup_stubmember
badnetmask Apr 13, 2021
09faaa1
Merge remote-tracking branch 'upstream/master' into additional_nsgrou…
badnetmask Oct 18, 2021
b279c74
fix bad merge
badnetmask Oct 18, 2021
b7704b4
remove deprecated files
badnetmask Oct 18, 2021
de9750e
modify ib_spec to fix sanity errors
badnetmask Oct 19, 2021
3846ccd
add missing import to fix sanity tests
badnetmask Oct 19, 2021
c210854
include integration test for nios_nsgroup_delegation (fails on my loc…
badnetmask Oct 31, 2021
c368894
fix incorrect object type for 'extattrs'
badnetmask Nov 21, 2021
e416995
correct integration tests for nios_nsgroup_delegation_idempotence.yml
badnetmask Nov 21, 2021
b6942f3
fix typos on nios_nsgroup_delegation_idempotence integration test
badnetmask Nov 21, 2021
b777f3b
add remaining integration tests for all nsgroup types
badnetmask Nov 21, 2021
202eb39
fix sanity tests
badnetmask Nov 21, 2021
5273224
retrigger checks
badnetmask Dec 2, 2021
de2c26a
retrigger checks
badnetmask Dec 10, 2021
41069d5
Merge branch 'master' into additional_nsgroup_commands
badnetmask Jan 14, 2022
ec1cf4f
Merge remote-tracking branch 'upstream/master' into additional_nsgrou…
badnetmask May 3, 2022
72f729e
Merge branch 'master' into additional_nsgroup_commands
badnetmask Apr 2, 2024
708653d
fix integration and sanity tests
badnetmask Apr 3, 2024
406edc0
fix sanity tests for ansible devel branch
badnetmask Apr 3, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,15 @@ Modules

- `nios_network_view` – Configure Infoblox NIOS network views

- `nios_nsgroup` – Configure Infoblox DNS Nameserver Groups
- `nios_nsgroup` – Configure Infoblox DNS Nameserver Authoritative Groups

- `nios_nsgroup_delegation` – Configure Infoblox DNS Nameserver Delegation Groups

- `nios_nsgroup_forwardingmember` – Configure Infoblox DNS Nameserver Forwarding Member Groups

- `nios_nsgroup_forwardstubserver` – Configure Infoblox DNS Nameserver Forward/Stub Server Groups

- `nios_nsgroup_stubmember` – Configure Infoblox DNS Nameserver Stub Member Groups

- `nios_ptr_record` – Configure Infoblox NIOS PTR records

Expand Down
4 changes: 4 additions & 0 deletions plugins/module_utils/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,10 @@
NIOS_DTC_SERVER = 'dtc:server'
NIOS_DTC_POOL = 'dtc:pool'
NIOS_DTC_LBDN = 'dtc:lbdn'
NIOS_NSGROUP_FORWARDSTUBSERVER = 'nsgroup:forwardstubserver'
NIOS_NSGROUP_FORWARDINGMEMBER = 'nsgroup:forwardingmember'
NIOS_NSGROUP_DELEGATION = 'nsgroup:delegation'
NIOS_NSGROUP_STUBMEMBER = 'nsgroup:stubmember'
NIOS_DTC_MONITOR_HTTP = 'dtc:monitor:http'
NIOS_DTC_MONITOR_ICMP = 'dtc:monitor:icmp'
NIOS_DTC_MONITOR_PDP = 'dtc:monitor:pdp'
Expand Down
4 changes: 2 additions & 2 deletions plugins/modules/nios_nsgroup.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,14 @@
DOCUMENTATION = '''
---
module: nios_nsgroup
short_description: Configure InfoBlox DNS Nameserver Groups
short_description: Configure InfoBlox DNS Nameserver Authoritative Groups
version_added: "1.0.0"
extends_documentation_fragment: infoblox.nios_modules.nios
author:
- Erich Birngruber (@ebirn)
- Sumit Jaiswal (@sjaiswal)
description:
- Adds and/or removes nameserver groups form Infoblox NIOS servers.
- Adds and/or removes nameserver groups of type "Authoritative" form Infoblox NIOS servers.
This module manages NIOS C(nsgroup) objects using the Infoblox. WAPI interface over REST.
requirements:
- infoblox_client
Expand Down
128 changes: 128 additions & 0 deletions plugins/modules/nios_nsgroup_delegation.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
#!/usr/bin/python
# Copyright © 2020 Infoblox Inc
# -*- coding: utf-8 -*-
# Copyright (c) 2018-2019 Red Hat, Inc.
# Copyright (c) 2020 Infoblox, Inc.
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)

from __future__ import absolute_import, division, print_function
__metaclass__ = type

DOCUMENTATION = '''
---
module: nios_nsgroup_delegation
short_description: Configure InfoBlox DNS Nameserver Delegation Groups
extends_documentation_fragment: infoblox.nios_modules.nios
author:
- Mauricio Teixeira (@badnetmask)
description:
- Adds and/or removes nameserver groups of type "Delegation" form Infoblox NIOS servers.
This module manages NIOS C(nsgroup:delegation) objects using the Infoblox. WAPI interface over REST.
requirements:
- infoblox_client
options:
name:
description:
- Specifies the name of the NIOS nameserver group to be managed.
required: true
type: str
delegate_to:
description:
- Specifies the list of name servers to be used
required: true
type: list
elements: dict
suboptions:
name:
description:
- Provide the name of the server
required: true
type: str
address:
description:
- Provide the IP address of the server
required: true
type: str
extattrs:
description:
- Allows for the configuration of Extensible Attributes on the
instance of the object. This argument accepts a set of key / value
pairs for configuration.
required: false
type: dict
comment:
description:
- Configures a text string comment to be associated with the instance
of this object. The provided text string will be configured on the
object instance.
required: false
type: str
state:
description:
- Configures the intended state of the instance of the object on
the NIOS server. When this value is set to C(present), the object
is configured on the device and when this value is set to C(absent)
the value is removed (if necessary) from the device.
choices: [present, absent]
default: present
type: str
'''

EXAMPLES = '''
- name: create infoblox nameserver delegation group
infoblox.nios_modules.nios_nsgroup_delegation:
name: my-delegation-group
comment: "this is a delegation nameserver group"
delegate_to:
- name: first
address: 192.168.0.10
- name: second
address: 192.168.0.20
state: present
provider:
host: "{{ inventory_hostname_short }}"
username: admin
password: admin
connection: local
'''

RETURN = ''' # '''

from ansible.module_utils.basic import AnsibleModule
from ..module_utils.api import WapiModule
from ..module_utils.api import NIOS_NSGROUP_DELEGATION
from ..module_utils.api import normalize_ib_spec


def main():
'''entrypoint for module execution.'''
argument_spec = dict(
provider=dict(required=True),
state=dict(default='present', choices=['present', 'absent']),
)

delegate_to_spec = dict(
name=dict(required=True),
address=dict(required=True)
)

ib_spec = dict(
name=dict(required=True, ib_req=True),
delegate_to=dict(type='list', elements='dict', required=True, options=delegate_to_spec),
extattrs=dict(type='dict'),
comment=dict(),
)

argument_spec.update(normalize_ib_spec(ib_spec))
argument_spec.update(WapiModule.provider_spec)

module = AnsibleModule(argument_spec=argument_spec, supports_check_mode=True)

wapi = WapiModule(module)
result = wapi.run(NIOS_NSGROUP_DELEGATION, ib_spec)

module.exit_json(**result)


if __name__ == '__main__':
main()
175 changes: 175 additions & 0 deletions plugins/modules/nios_nsgroup_forwardingmember.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,175 @@
#!/usr/bin/python
# Copyright © 2020 Infoblox Inc
# -*- coding: utf-8 -*-
# Copyright (c) 2018-2019 Red Hat, Inc.
# Copyright (c) 2020 Infoblox, Inc.
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)

from __future__ import absolute_import, division, print_function
__metaclass__ = type

DOCUMENTATION = '''
---
module: nios_nsgroup_forwardingmember
short_description: Configure InfoBlox DNS Nameserver Forward/Stub Server Groups
extends_documentation_fragment: infoblox.nios_modules.nios
author:
- Mauricio Teixeira (@badnetmask)
description:
- Adds and/or removes nameserver groups of type "Forwarding Member" from Infoblox NIOS servers.
This module manages NIOS C(nsgroup:forwardstubserver) objects using the Infoblox. WAPI interface over REST.
requirements:
- infoblox_client
options:
name:
description:
- Specifies the name of the NIOS nameserver group to be managed.
required: true
type: str
forwarding_servers:
description:
- Specifies the list of forwarding member servers to be used
required: true
type: list
elements: dict
suboptions:
name:
description:
- The name of the forwarding grid member in FQDN format
required: true
type: str
forwarders_only:
description:
- Determines if the appliance sends queries to forwarders only, and not to other internal or Internet root servers.
required: false
type: bool
default: false
use_override_forwarders:
description:
- When using c(forward_to) option, and this is set to C(True), only the defined custom forwarders will be used (no recurse to root nameservers).
required: false
type: bool
default: false
forward_to:
description:
- The information for the remote name server to which you want the Infoblox appliance to forward queries for a specified domain name.
required: false
type: list
default: []
elements: dict
suboptions:
name:
description:
- Provide the name of the server
required: true
type: str
address:
description:
- Provide the IP address of the server
required: true
type: str
extattrs:
description:
- Allows for the configuration of Extensible Attributes on the
instance of the object. This argument accepts a set of key / value
pairs for configuration.
required: false
type: dict
comment:
description:
- Configures a text string comment to be associated with the instance
of this object. The provided text string will be configured on the
object instance.
required: false
type: str
state:
description:
- Configures the intended state of the instance of the object on
the NIOS server. When this value is set to C(present), the object
is configured on the device and when this value is set to C(absent)
the value is removed (if necessary) from the device.
choices: [present, absent]
default: present
type: str
'''

EXAMPLES = '''
- name: create infoblox nameserver forwarding member group
infoblox.nios_modules.nios_nsgroup_forwardingmember:
name: my-forwardingmember-group
comment: "this is a forwarding member nameserver group"
forwarding_servers:
- name: member.localdomain
state: present
provider:
host: "{{ inventory_hostname_short }}"
username: admin
password: admin
connection: local

- name: create infoblox nameserver forwarding member group with external forwarders
infoblox.nios_modules.nios_nsgroup_forwardingmember:
name: my-forwardingmember-group
comment: "this is a forwarding member nameserver group with external forwarders"
forwarding_servers:
- name: member.localdomain
use_override_forwarders: true
forward_to:
- name: ns1
address: 192.168.10.1
state: present
provider:
host: "{{ inventory_hostname_short }}"
username: admin
password: admin
connection: local
'''

RETURN = ''' # '''

from ansible.module_utils.basic import AnsibleModule
from ..module_utils.api import WapiModule
from ..module_utils.api import NIOS_NSGROUP_FORWARDINGMEMBER
from ..module_utils.api import normalize_ib_spec


def main():
'''entrypoint for module execution.'''

argument_spec = dict(
provider=dict(required=True),
state=dict(default='present', choices=['present', 'absent']),
)

forward_to_spec = dict(
name=dict(required=True),
address=dict(required=True),
)

forwarding_servers_spec = dict(
name=dict(required=True),
forwarders_only=dict(type='bool', default=False),
forward_to=dict(type='list', elements='dict', options=forward_to_spec, default=[], required=False),
use_override_forwarders=dict(type='bool', default=False),
)

ib_spec = dict(
name=dict(required=True, ib_req=True),
forwarding_servers=dict(type='list', elements='dict', required=True, options=forwarding_servers_spec),
extattrs=dict(type='dict'),
comment=dict(),
)

argument_spec.update(normalize_ib_spec(ib_spec))
argument_spec.update(WapiModule.provider_spec)

module = AnsibleModule(argument_spec=argument_spec, supports_check_mode=True)

wapi = WapiModule(module)
result = wapi.run(NIOS_NSGROUP_FORWARDINGMEMBER, ib_spec)

module.exit_json(**result)


if __name__ == '__main__':
main()
Loading
Loading