|
Packit Service |
ee01e6 |
#!/usr/bin/python
|
|
Packit Service |
0a38ef |
# -*- coding: utf-8 -*-
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
# Authors:
|
|
Packit Service |
0a38ef |
# Rafael Guterres Jeffman <rjeffman@redhat.com>
|
|
Packit Service |
0a38ef |
#
|
|
Packit Service |
0a38ef |
# Copyright (C) 2020 Red Hat
|
|
Packit Service |
0a38ef |
# see file 'COPYING' for use and warranty information
|
|
Packit Service |
0a38ef |
#
|
|
Packit Service |
0a38ef |
# This program is free software; you can redistribute it and/or modify
|
|
Packit Service |
0a38ef |
# it under the terms of the GNU General Public License as published by
|
|
Packit Service |
0a38ef |
# the Free Software Foundation, either version 3 of the License, or
|
|
Packit Service |
0a38ef |
# (at your option) any later version.
|
|
Packit Service |
0a38ef |
#
|
|
Packit Service |
0a38ef |
# This program is distributed in the hope that it will be useful,
|
|
Packit Service |
0a38ef |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit Service |
0a38ef |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
Packit Service |
0a38ef |
# GNU General Public License for more details.
|
|
Packit Service |
0a38ef |
#
|
|
Packit Service |
0a38ef |
# You should have received a copy of the GNU General Public License
|
|
Packit Service |
0a38ef |
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
"""DNS Record ansible-freeipa module."""
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
ANSIBLE_METADATA = {
|
|
Packit Service |
0a38ef |
"metadata_version": "1.0",
|
|
Packit Service |
0a38ef |
"supported_by": "community",
|
|
Packit Service |
0a38ef |
"status": ["preview"],
|
|
Packit Service |
0a38ef |
}
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
DOCUMENTATION = """
|
|
Packit Service |
0a38ef |
---
|
|
Packit Service |
0a38ef |
module: ipadnsrecord
|
|
Packit Service |
0a38ef |
short description: Manage FreeIPA DNS records
|
|
Packit Service |
0a38ef |
description: Manage FreeIPA DNS records
|
|
Packit Service |
0a38ef |
options:
|
|
Packit Service |
0a38ef |
ipaadmin_principal:
|
|
Packit Service |
0a38ef |
description: The admin principal
|
|
Packit Service |
0a38ef |
default: admin
|
|
Packit Service |
0a38ef |
ipaadmin_password:
|
|
Packit Service |
0a38ef |
description: The admin password
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
records:
|
|
Packit Service |
0a38ef |
description: The list of user dns records dicts
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
options:
|
|
Packit Service |
0a38ef |
name:
|
|
Packit Service |
0a38ef |
description: The DNS record name to manage.
|
|
Packit Service |
0a38ef |
aliases: ["record_name"]
|
|
Packit Service |
0a38ef |
required: true
|
|
Packit Service |
0a38ef |
zone_name:
|
|
Packit Service |
a166ed |
description: |
|
|
Packit Service |
a166ed |
The DNS zone name to which DNS record needs to be managed.
|
|
Packit Service |
a166ed |
Required if not provided globally.
|
|
Packit Service |
0a38ef |
aliases: ["dnszone"]
|
|
Packit Service |
a166ed |
required: false
|
|
Packit Service |
0a38ef |
record_type:
|
|
Packit Service |
0a38ef |
description: The type of DNS record.
|
|
Packit Service |
0a38ef |
choices: ["A", "AAAA", "A6", "AFSDB", "CERT", "CNAME", "DLV", "DNAME",
|
|
Packit Service |
0a38ef |
"DS", "KX", "LOC", "MX", "NAPTR", "NS", "PTR", "SRV",
|
|
Packit Service |
0a38ef |
"SSHFP", "TLSA", "TXT", "URI"]
|
|
Packit Service |
0a38ef |
default: "A"
|
|
Packit Service |
0a38ef |
record_value:
|
|
Packit Service |
0a38ef |
description: Manage DNS record name with these values.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: list
|
|
Packit Service |
0a38ef |
record_ttl:
|
|
Packit Service |
0a38ef |
description: Set the TTL for the record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
del_all:
|
|
Packit Service |
0a38ef |
description: Delete all associated records.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: bool
|
|
Packit Service |
0a38ef |
a_rec:
|
|
Packit Service |
0a38ef |
description: Raw A record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["a_record"]
|
|
Packit Service |
0a38ef |
aaaa_rec:
|
|
Packit Service |
0a38ef |
description: Raw AAAA record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["aaaa_record"]
|
|
Packit Service |
0a38ef |
a6_rec:
|
|
Packit Service |
0a38ef |
description: Raw A6 record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["a6_record"]
|
|
Packit Service |
0a38ef |
afsdb_rec:
|
|
Packit Service |
0a38ef |
description: Raw AFSDB record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["afsdb_record"]
|
|
Packit Service |
0a38ef |
cert_rec:
|
|
Packit Service |
0a38ef |
description: Raw CERT record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["cert_record"]
|
|
Packit Service |
0a38ef |
cname_rec:
|
|
Packit Service |
0a38ef |
description: Raw CNAME record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["cname_record"]
|
|
Packit Service |
0a38ef |
dlv_rec:
|
|
Packit Service |
0a38ef |
description: Raw DLV record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["dlv_record"]
|
|
Packit Service |
0a38ef |
dname_rec:
|
|
Packit Service |
0a38ef |
description: Raw DNAM record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["dname_record"]
|
|
Packit Service |
0a38ef |
ds_rec:
|
|
Packit Service |
0a38ef |
description: Raw DS record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["ds_record"]
|
|
Packit Service |
0a38ef |
kx_rec:
|
|
Packit Service |
0a38ef |
description: Raw KX record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["kx_record"]
|
|
Packit Service |
0a38ef |
loc_rec:
|
|
Packit Service |
0a38ef |
description: Raw LOC record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["loc_record"]
|
|
Packit Service |
0a38ef |
mx_rec:
|
|
Packit Service |
0a38ef |
description: Raw MX record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["mx_record"]
|
|
Packit Service |
0a38ef |
naptr_rec:
|
|
Packit Service |
0a38ef |
description: Raw NAPTR record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["naptr_record"]
|
|
Packit Service |
0a38ef |
ns_rec:
|
|
Packit Service |
0a38ef |
description: Raw NS record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["ns_record"]
|
|
Packit Service |
0a38ef |
ptr_rec:
|
|
Packit Service |
0a38ef |
description: Raw PTR record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["ptr_record"]
|
|
Packit Service |
0a38ef |
srv_rec:
|
|
Packit Service |
0a38ef |
description: Raw SRV record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["srv_record"]
|
|
Packit Service |
0a38ef |
sshfp_rec:
|
|
Packit Service |
0a38ef |
description: Raw SSHFP record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["sshfp_record"]
|
|
Packit Service |
0a38ef |
tlsa_rec:
|
|
Packit Service |
0a38ef |
description: Raw TLSA record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["tlsa_record"]
|
|
Packit Service |
0a38ef |
txt_rec:
|
|
Packit Service |
0a38ef |
description: Raw TXT record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["txt_record"]
|
|
Packit Service |
0a38ef |
uri_rec:
|
|
Packit Service |
0a38ef |
description: Raw URI record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["uri_record"]
|
|
Packit Service |
0a38ef |
ip_address:
|
|
Packit Service |
0a38ef |
description: IP adresses for A or AAAA records.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
a_ip_address:
|
|
Packit Service |
0a38ef |
description: IP adresses for A records.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
a_create_reverse:
|
|
Packit Service |
a166ed |
description: |
|
|
Packit Service |
0a38ef |
Create reverse record for A records.
|
|
Packit Service |
0a38ef |
There is no equivalent to remove reverse records.
|
|
Packit Service |
0a38ef |
type: bool
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aaaa_ip_address:
|
|
Packit Service |
0a38ef |
description: IP adresses for AAAA records.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
aaaa_create_reverse:
|
|
Packit Service |
a166ed |
description: |
|
|
Packit Service |
0a38ef |
Create reverse record for AAAA records.
|
|
Packit Service |
0a38ef |
There is no equivalent to remove reverse records.
|
|
Packit Service |
0a38ef |
type: bool
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
create_reverse:
|
|
Packit Service |
a166ed |
description: |
|
|
Packit Service |
0a38ef |
Create reverse record for A or AAAA record types.
|
|
Packit Service |
0a38ef |
There is no equivalent to remove reverse records.
|
|
Packit Service |
0a38ef |
type: bool
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["reverse"]
|
|
Packit Service |
0a38ef |
a6_data:
|
|
Packit Service |
0a38ef |
description: A6 record data.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
afsdb_subtype:
|
|
Packit Service |
0a38ef |
description: AFSDB Subtype
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
afsdb_hostname:
|
|
Packit Service |
a166ed |
description: AFSDB Hostname
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
cert_type:
|
|
Packit Service |
a166ed |
description: CERT Certificate Type
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
cert_key_tag:
|
|
Packit Service |
0a38ef |
description: CERT Key Tag
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
cert_algorithm:
|
|
Packit Service |
0a38ef |
description: CERT Algorithm
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
cert_certificate_or_crl:
|
|
Packit Service |
0a38ef |
description: CERT Certificate or Certificate Revocation List (CRL).
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
cname_hostname:
|
|
Packit Service |
0a38ef |
description: A hostname which this alias hostname points to.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
dlv_key_tag:
|
|
Packit Service |
0a38ef |
description: DS Key Tag
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
dlv_algorithm:
|
|
Packit Service |
0a38ef |
description: DLV Algorithm
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
dlv_digest_type:
|
|
Packit Service |
0a38ef |
description: DLV Digest Type
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
dlv_digest:
|
|
Packit Service |
a166ed |
description: DLV Digest
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
dname_target:
|
|
Packit Service |
0a38ef |
description: DNAME Target
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
ds_key_tag:
|
|
Packit Service |
0a38ef |
description: DS Key Tag
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
ds_algorithm:
|
|
Packit Service |
0a38ef |
description: DS Algorithm
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
ds_digest_type:
|
|
Packit Service |
0a38ef |
description: DS Digest Type
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
ds_digest:
|
|
Packit Service |
a166ed |
description: DS Digest
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
kx_preference:
|
|
Packit Service |
a166ed |
description: |
|
|
Packit Service |
0a38ef |
Preference given to this exchanger. Lower values are more preferred.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
kx_exchanger:
|
|
Packit Service |
0a38ef |
description: A host willing to act as a key exchanger.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
loc_lat_deg:
|
|
Packit Service |
0a38ef |
description: LOC Degrees Latitude
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
loc_lat_min:
|
|
Packit Service |
0a38ef |
description: LOC Minutes Latitude
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
loc_lat_sec:
|
|
Packit Service |
0a38ef |
description: LOC Seconds Latitude
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: float
|
|
Packit Service |
0a38ef |
loc_lat_dir:
|
|
Packit Service |
0a38ef |
description: LOC Direction Latitude
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
choices: ["N", "S"]
|
|
Packit Service |
0a38ef |
loc_lon_deg:
|
|
Packit Service |
0a38ef |
description: LOC Degrees Longitude
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
loc_lon_min:
|
|
Packit Service |
0a38ef |
description: LOC Minutes Longitude
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
loc_lon_sec:
|
|
Packit Service |
0a38ef |
description: LOC Seconds Longitude
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: float
|
|
Packit Service |
0a38ef |
loc_lon_dir:
|
|
Packit Service |
0a38ef |
description: LOC Direction Longitude
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
choices: ["E", "W"]
|
|
Packit Service |
0a38ef |
loc_altitude:
|
|
Packit Service |
0a38ef |
description: LOC Altitude
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: float
|
|
Packit Service |
0a38ef |
loc_size:
|
|
Packit Service |
0a38ef |
description: LOC Size
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: float
|
|
Packit Service |
0a38ef |
loc_h_precision:
|
|
Packit Service |
0a38ef |
description: LOC Horizontal Precision
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: float
|
|
Packit Service |
0a38ef |
loc_v_precision:
|
|
Packit Service |
0a38ef |
description: LOC Vertical Precision
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: float
|
|
Packit Service |
0a38ef |
mx_preference:
|
|
Packit Service |
a166ed |
description: |
|
|
Packit Service |
0a38ef |
Preference given to this exchanger. Lower values are more preferred.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
mx_exchanger:
|
|
Packit Service |
0a38ef |
description: A host willing to act as a mail exchanger.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
naptr_order:
|
|
Packit Service |
0a38ef |
description: NAPTR Order
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
naptr_preference:
|
|
Packit Service |
0a38ef |
description: NAPTR Preference
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
naptr_flags:
|
|
Packit Service |
0a38ef |
description: NAPTR Flags
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
naptr_service:
|
|
Packit Service |
0a38ef |
description: NAPTR Service
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
naptr_regexp:
|
|
Packit Service |
0a38ef |
description: NAPTR Regular Expression
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
naptr_replacement:
|
|
Packit Service |
0a38ef |
description: NAPTR Replacement
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
ns_hostname:
|
|
Packit Service |
0a38ef |
description: NS Hostname
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
ptr_hostname:
|
|
Packit Service |
0a38ef |
description: The hostname this reverse record points to.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
srv_priority:
|
|
Packit Service |
a166ed |
description: |
|
|
Packit Service |
0a38ef |
Lower number means higher priority. Clients will attempt to contact
|
|
Packit Service |
0a38ef |
the server with the lowest-numbered priority they can reach.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
srv_weight:
|
|
Packit Service |
0a38ef |
description: Relative weight for entries with the same priority.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
srv_port:
|
|
Packit Service |
0a38ef |
description: SRV Port
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
srv_target:
|
|
Packit Service |
a166ed |
description: |
|
|
Packit Service |
0a38ef |
The domain name of the target host or '.' if the service is decidedly
|
|
Packit Service |
0a38ef |
not available at this domain.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
sshfp_algorithm:
|
|
Packit Service |
0a38ef |
description: SSHFP Algorithm
|
|
Packit Service |
a166ed |
required: False
|
|
Packit Service |
a166ed |
type: int
|
|
Packit Service |
0a38ef |
sshfp_fp_type:
|
|
Packit Service |
0a38ef |
description: SSHFP Fingerprint Type
|
|
Packit Service |
0a38ef |
required: False
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
sshfp_fingerprint:
|
|
Packit Service |
0a38ef |
description: SSHFP Fingerprint
|
|
Packit Service |
0a38ef |
required: False
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
txt_data:
|
|
Packit Service |
0a38ef |
description: TXT Text Data
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
tlsa_cert_usage:
|
|
Packit Service |
0a38ef |
description: TLSA Certificate Usage
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
tlsa_selector:
|
|
Packit Service |
a166ed |
description: TLSA Selector
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
tlsa_matching_type:
|
|
Packit Service |
a166ed |
description: TLSA Matching Type
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
tlsa_cert_association_data:
|
|
Packit Service |
a166ed |
description: TLSA Certificate Association Data
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
uri_target:
|
|
Packit Service |
0a38ef |
description: Target Uniform Resource Identifier according to RFC 3986.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
uri_priority:
|
|
Packit Service |
a166ed |
description: |
|
|
Packit Service |
0a38ef |
Lower number means higher priority. Clients will attempt to contact
|
|
Packit Service |
0a38ef |
the URI with the lowest-numbered priority they can reach.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
uri_weight:
|
|
Packit Service |
0a38ef |
description: Relative weight for entries with the same priority.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
zone_name:
|
|
Packit Service |
a166ed |
description: |
|
|
Packit Service |
a166ed |
The DNS zone name to which DNS record needs to be managed.
|
|
Packit Service |
a166ed |
Required if not provided globally.
|
|
Packit Service |
0a38ef |
aliases: ["dnszone"]
|
|
Packit Service |
a166ed |
required: false
|
|
Packit Service |
0a38ef |
name:
|
|
Packit Service |
0a38ef |
description: The DNS record name to manage.
|
|
Packit Service |
0a38ef |
aliases: ["record_name"]
|
|
Packit Service |
0a38ef |
required: true
|
|
Packit Service |
0a38ef |
record_type:
|
|
Packit Service |
0a38ef |
description: The type of DNS record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
choices: ["A", "AAAA", "A6", "AFSDB", "CERT", "CNAME", "DLV", "DNAME",
|
|
Packit Service |
0a38ef |
"DS", "KX", "LOC", "MX", "NAPTR", "NS", "PTR", "SRV", "SSHFP",
|
|
Packit Service |
0a38ef |
"TLSA", "TXT", "URI"]
|
|
Packit Service |
0a38ef |
default: "A"
|
|
Packit Service |
0a38ef |
record_value:
|
|
Packit Service |
0a38ef |
description: Manage DNS record name with this values.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: list
|
|
Packit Service |
0a38ef |
record_ttl:
|
|
Packit Service |
0a38ef |
description: Set the TTL for the record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
del_all:
|
|
Packit Service |
0a38ef |
description: Delete all associated records.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: bool
|
|
Packit Service |
0a38ef |
a_rec:
|
|
Packit Service |
0a38ef |
description: Raw A record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["a_record"]
|
|
Packit Service |
0a38ef |
aaaa_rec:
|
|
Packit Service |
0a38ef |
description: Raw AAAA record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["aaaa_record"]
|
|
Packit Service |
0a38ef |
a6_rec:
|
|
Packit Service |
0a38ef |
description: Raw A6 record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["a6_record"]
|
|
Packit Service |
0a38ef |
afsdb_rec:
|
|
Packit Service |
0a38ef |
description: Raw AFSDB record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["afsdb_record"]
|
|
Packit Service |
0a38ef |
cert_rec:
|
|
Packit Service |
0a38ef |
description: Raw CERT record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["cert_record"]
|
|
Packit Service |
0a38ef |
cname_rec:
|
|
Packit Service |
0a38ef |
description: Raw CNAME record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["cname_record"]
|
|
Packit Service |
0a38ef |
dlv_rec:
|
|
Packit Service |
0a38ef |
description: Raw DLV record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["dlv_record"]
|
|
Packit Service |
0a38ef |
dname_rec:
|
|
Packit Service |
0a38ef |
description: Raw DNAM record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["dname_record"]
|
|
Packit Service |
0a38ef |
ds_rec:
|
|
Packit Service |
0a38ef |
description: Raw DS record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["ds_record"]
|
|
Packit Service |
0a38ef |
kx_rec:
|
|
Packit Service |
0a38ef |
description: Raw KX record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["kx_record"]
|
|
Packit Service |
0a38ef |
loc_rec:
|
|
Packit Service |
0a38ef |
description: Raw LOC record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["loc_record"]
|
|
Packit Service |
0a38ef |
mx_rec:
|
|
Packit Service |
0a38ef |
description: Raw MX record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["mx_record"]
|
|
Packit Service |
0a38ef |
naptr_rec:
|
|
Packit Service |
0a38ef |
description: Raw NAPTR record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["naptr_record"]
|
|
Packit Service |
0a38ef |
ns_rec:
|
|
Packit Service |
0a38ef |
description: Raw NS record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["ns_record"]
|
|
Packit Service |
0a38ef |
ptr_rec:
|
|
Packit Service |
0a38ef |
description: Raw PTR record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["ptr_record"]
|
|
Packit Service |
0a38ef |
srv_rec:
|
|
Packit Service |
0a38ef |
description: Raw SRV record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["srv_record"]
|
|
Packit Service |
0a38ef |
sshfp_rec:
|
|
Packit Service |
0a38ef |
description: Raw SSHFP record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["sshfp_record"]
|
|
Packit Service |
0a38ef |
tlsa_rec:
|
|
Packit Service |
0a38ef |
description: Raw TLSA record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["tlsa_record"]
|
|
Packit Service |
0a38ef |
txt_rec:
|
|
Packit Service |
0a38ef |
description: Raw TXT record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["txt_record"]
|
|
Packit Service |
0a38ef |
uri_rec:
|
|
Packit Service |
0a38ef |
description: Raw URI record.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["uri_record"]
|
|
Packit Service |
0a38ef |
ip_address:
|
|
Packit Service |
0a38ef |
description: IP adresses for A ar AAAA.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
create_reverse:
|
|
Packit Service |
a166ed |
description: |
|
|
Packit Service |
0a38ef |
Create reverse record for A or AAAA record types.
|
|
Packit Service |
0a38ef |
There is no equivalent to remove reverse records.
|
|
Packit Service |
0a38ef |
type: bool
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aliases: ["reverse"]
|
|
Packit Service |
0a38ef |
a_ip_address:
|
|
Packit Service |
0a38ef |
description: IP adresses for A records.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
a_create_reverse:
|
|
Packit Service |
a166ed |
description: |
|
|
Packit Service |
0a38ef |
Create reverse record for A records.
|
|
Packit Service |
0a38ef |
There is no equivalent to remove reverse records.
|
|
Packit Service |
0a38ef |
type: bool
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
aaaa_ip_address:
|
|
Packit Service |
0a38ef |
description: IP adresses for AAAA records.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
aaaa_create_reverse:
|
|
Packit Service |
a166ed |
description: |
|
|
Packit Service |
0a38ef |
Create reverse record for AAAA records.
|
|
Packit Service |
0a38ef |
There is no equivalent to remove reverse records.
|
|
Packit Service |
0a38ef |
type: bool
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
afsdb_subtype:
|
|
Packit Service |
0a38ef |
description: AFSDB Subtype
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
afsdb_hostname:
|
|
Packit Service |
a166ed |
description: AFSDB Hostname
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
cert_type:
|
|
Packit Service |
a166ed |
description: CERT Certificate Type
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
cert_key_tag:
|
|
Packit Service |
0a38ef |
description: CERT Key Tag
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
cert_algorithm:
|
|
Packit Service |
0a38ef |
description: CERT Algorithm
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
cert_certificate_or_crl:
|
|
Packit Service |
0a38ef |
description: CERT Certificate/CRL
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
cname_hostname:
|
|
Packit Service |
0a38ef |
description: A hostname which this alias hostname points to.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
dlv_key_tag:
|
|
Packit Service |
0a38ef |
description: DS Key Tag
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
dlv_algorithm:
|
|
Packit Service |
0a38ef |
description: DLV Algorithm
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
dlv_digest_type:
|
|
Packit Service |
0a38ef |
description: DLV Digest Type
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
dlv_digest:
|
|
Packit Service |
a166ed |
description: DLV Digest
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
dname_target:
|
|
Packit Service |
0a38ef |
description: DNAME Target
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
ds_key_tag:
|
|
Packit Service |
0a38ef |
description: DS Key Tag
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
ds_algorithm:
|
|
Packit Service |
0a38ef |
description: DS Algorithm
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
ds_digest_type:
|
|
Packit Service |
0a38ef |
description: DS Digest Type
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
ds_digest:
|
|
Packit Service |
a166ed |
description: DS Digest
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
kx_preference:
|
|
Packit Service |
a166ed |
description: |
|
|
Packit Service |
0a38ef |
Preference given to this exchanger. Lower values are more preferred.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
kx_exchanger:
|
|
Packit Service |
0a38ef |
description: A host willing to act as a key exchanger.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
loc_lat_deg:
|
|
Packit Service |
0a38ef |
description: LOC Degrees Latitude
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
loc_lat_min:
|
|
Packit Service |
0a38ef |
description: LOC Minutes Latitude
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
loc_lat_sec:
|
|
Packit Service |
0a38ef |
description: LOC Seconds Latitude
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: float
|
|
Packit Service |
0a38ef |
loc_lat_dir:
|
|
Packit Service |
0a38ef |
description: LOC Direction Latitude
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
choices: ["N", "S"]
|
|
Packit Service |
0a38ef |
loc_lon_deg:
|
|
Packit Service |
0a38ef |
description: LOC Degrees Longitude
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
loc_lon_min:
|
|
Packit Service |
0a38ef |
description: LOC Minutes Longitude
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
loc_lon_sec:
|
|
Packit Service |
0a38ef |
description: LOC Seconds Longitude
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: float
|
|
Packit Service |
0a38ef |
loc_lon_dir:
|
|
Packit Service |
0a38ef |
description: LOC Direction Longitude
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
choices: ["E", "W"]
|
|
Packit Service |
0a38ef |
loc_altitude:
|
|
Packit Service |
0a38ef |
description: LOC Altitude
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: float
|
|
Packit Service |
0a38ef |
loc_size:
|
|
Packit Service |
0a38ef |
description: LOC Size
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: float
|
|
Packit Service |
0a38ef |
loc_h_precision:
|
|
Packit Service |
0a38ef |
description: LOC Horizontal Precision
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: float
|
|
Packit Service |
0a38ef |
loc_v_precision:
|
|
Packit Service |
0a38ef |
description: LOC Vertical Precision
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: float
|
|
Packit Service |
0a38ef |
mx_preference:
|
|
Packit Service |
a166ed |
description: |
|
|
Packit Service |
0a38ef |
Preference given to this exchanger. Lower values are more preferred.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
mx_exchanger:
|
|
Packit Service |
0a38ef |
description: A host willing to act as a mail exchanger.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
naptr_order:
|
|
Packit Service |
0a38ef |
description: NAPTR Order
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
naptr_preference:
|
|
Packit Service |
0a38ef |
description: NAPTR Preference
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
naptr_flags:
|
|
Packit Service |
0a38ef |
description: NAPTR Flags
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
naptr_service:
|
|
Packit Service |
0a38ef |
description: NAPTR Service
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
naptr_regexp:
|
|
Packit Service |
0a38ef |
description: NAPTR Regular Expression
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
naptr_replacement:
|
|
Packit Service |
0a38ef |
description: NAPTR Replacement
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
ns_hostname:
|
|
Packit Service |
0a38ef |
description: NS Hostname
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
ptr_hostname:
|
|
Packit Service |
0a38ef |
description: The hostname this reverse record points to.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
srv_priority:
|
|
Packit Service |
a166ed |
description: |
|
|
Packit Service |
0a38ef |
Lower number means higher priority. Clients will attempt to contact the
|
|
Packit Service |
0a38ef |
server with the lowest-numbered priority they can reach.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
srv_weight:
|
|
Packit Service |
0a38ef |
description: Relative weight for entries with the same priority.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
srv_port:
|
|
Packit Service |
0a38ef |
description: SRV Port
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
srv_target:
|
|
Packit Service |
a166ed |
description: |
|
|
Packit Service |
0a38ef |
The domain name of the target host or '.' if the service is decidedly not
|
|
Packit Service |
0a38ef |
available at this domain.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
sshfp_algorithm:
|
|
Packit Service |
0a38ef |
description: SSHFP Algorithm
|
|
Packit Service |
a166ed |
required: false
|
|
Packit Service |
a166ed |
type: int
|
|
Packit Service |
0a38ef |
sshfp_fp_type:
|
|
Packit Service |
0a38ef |
description: SSHFP Fingerprint Type
|
|
Packit Service |
a166ed |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
sshfp_fingerprint:
|
|
Packit Service |
0a38ef |
description: SSHFP Fingerprint
|
|
Packit Service |
a166ed |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
txt_data:
|
|
Packit Service |
0a38ef |
description: TXT Text Data
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
tlsa_cert_usage:
|
|
Packit Service |
0a38ef |
description: TLSA Certificate Usage
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
tlsa_selector:
|
|
Packit Service |
a166ed |
description: TLSA Selector
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
tlsa_matching_type:
|
|
Packit Service |
a166ed |
description: TLSA Matching Type
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
tlsa_cert_association_data:
|
|
Packit Service |
a166ed |
description: TLSA Certificate Association Data
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
uri_target:
|
|
Packit Service |
0a38ef |
description: Target Uniform Resource Identifier according to RFC 3986.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: string
|
|
Packit Service |
0a38ef |
uri_priority:
|
|
Packit Service |
a166ed |
description: |
|
|
Packit Service |
0a38ef |
Lower number means higher priority. Clients will attempt to contact the
|
|
Packit Service |
0a38ef |
URI with the lowest-numbered priority they can reach.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
uri_weight:
|
|
Packit Service |
0a38ef |
description: Relative weight for entries with the same priority.
|
|
Packit Service |
0a38ef |
required: false
|
|
Packit Service |
0a38ef |
type: int
|
|
Packit Service |
0a38ef |
state:
|
|
Packit Service |
0a38ef |
description: State to ensure
|
|
Packit Service |
0a38ef |
default: present
|
|
Packit Service |
0a38ef |
choices: ["present", "absent"]
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
author:
|
|
Packit Service |
0a38ef |
- Rafael Guterres Jeffman
|
|
Packit Service |
0a38ef |
"""
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
EXAMPLES = """
|
|
Packit Service |
0a38ef |
# Ensure dns record is present
|
|
Packit Service |
0a38ef |
- ipadnsrecord:
|
|
Packit Service |
0a38ef |
ipaadmin_password: SomeADMINpassword
|
|
Packit Service |
0a38ef |
name: vm-001
|
|
Packit Service |
0a38ef |
zone_name: example.com
|
|
Packit Service |
0a38ef |
record_type: 'AAAA'
|
|
Packit Service |
0a38ef |
record_value: '::1'
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
# Ensure that dns record exists with a TTL
|
|
Packit Service |
0a38ef |
- ipadnsrecord:
|
|
Packit Service |
0a38ef |
ipaadmin_password: SomeADMINpassword
|
|
Packit Service |
0a38ef |
name: host01
|
|
Packit Service |
0a38ef |
zone_name: example.com
|
|
Packit Service |
0a38ef |
record_type: 'AAAA'
|
|
Packit Service |
0a38ef |
record_value: '::1'
|
|
Packit Service |
0a38ef |
record_ttl: 300
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
# Ensure that dns record exists with a reverse record
|
|
Packit Service |
0a38ef |
- ipadnsrecord:
|
|
Packit Service |
0a38ef |
ipaadmin_password: SomeADMINpassword
|
|
Packit Service |
0a38ef |
name: host02
|
|
Packit Service |
0a38ef |
zone_name: example.com
|
|
Packit Service |
0a38ef |
record_type: 'AAAA'
|
|
Packit Service |
0a38ef |
record_value: 'fd00::0002'
|
|
Packit Service |
0a38ef |
create_reverse: yes
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
# Ensure a PTR record is present
|
|
Packit Service |
0a38ef |
- ipadnsrecord:
|
|
Packit Service |
0a38ef |
ipaadmin_password: SomeADMINpassword
|
|
Packit Service |
0a38ef |
name: 5
|
|
Packit Service |
0a38ef |
zone_name: 2.168.192.in-addr.arpa
|
|
Packit Service |
0a38ef |
record_type: 'PTR'
|
|
Packit Service |
0a38ef |
record_value: 'internal.ipa.example.com'
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
# Ensure a TXT record is present
|
|
Packit Service |
0a38ef |
- ipadnsrecord:
|
|
Packit Service |
0a38ef |
ipaadmin_password: SomeADMINpassword
|
|
Packit Service |
0a38ef |
name: _kerberos
|
|
Packit Service |
0a38ef |
zone_name: example.com
|
|
Packit Service |
0a38ef |
record_type: 'TXT'
|
|
Packit Service |
0a38ef |
record_value: 'EXAMPLE.COM'
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
# Ensure a SRV record is present
|
|
Packit Service |
0a38ef |
- ipadnsrecord:
|
|
Packit Service |
0a38ef |
ipaadmin_password: SomeADMINpassword
|
|
Packit Service |
0a38ef |
name: _kerberos._udp.example.com
|
|
Packit Service |
0a38ef |
zone_name: example.com
|
|
Packit Service |
0a38ef |
record_type: 'SRV'
|
|
Packit Service |
0a38ef |
record_value: '10 50 88 ipa.example.com'
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
# Ensure an MX record is present
|
|
Packit Service |
0a38ef |
- ipadnsrecord:
|
|
Packit Service |
0a38ef |
ipaadmin_password: SomeADMINpassword
|
|
Packit Service |
0a38ef |
name: '@'
|
|
Packit Service |
0a38ef |
zone_name: example.com
|
|
Packit Service |
0a38ef |
record_type: 'MX'
|
|
Packit Service |
0a38ef |
record_value: '1 mailserver.example.com'
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
# Ensure that dns record is absent
|
|
Packit Service |
0a38ef |
- ipadnsrecord:
|
|
Packit Service |
0a38ef |
ipaadmin_password: SomeADMINpassword
|
|
Packit Service |
0a38ef |
name: host01
|
|
Packit Service |
0a38ef |
zone_name: example.com
|
|
Packit Service |
0a38ef |
record_type: 'AAAA'
|
|
Packit Service |
0a38ef |
record_value: '::1'
|
|
Packit Service |
0a38ef |
state: absent
|
|
Packit Service |
0a38ef |
"""
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
RETURN = """
|
|
Packit Service |
0a38ef |
"""
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
from ansible.module_utils.basic import AnsibleModule
|
|
Packit Service |
0a38ef |
from ansible.module_utils._text import to_text
|
|
Packit Service |
0a38ef |
from ansible.module_utils.ansible_freeipa_module import temp_kinit, \
|
|
Packit Service |
0a38ef |
temp_kdestroy, valid_creds, api_connect, api_command, module_params_get, \
|
|
Packit Service |
0a38ef |
is_ipv4_addr, is_ipv6_addr
|
|
Packit Service |
0a38ef |
import dns.reversename
|
|
Packit Service |
0a38ef |
import dns.resolver
|
|
Packit Service |
0a38ef |
import ipalib.errors
|
|
Packit Service |
0a38ef |
import six
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
if six.PY3:
|
|
Packit Service |
0a38ef |
unicode = str
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
_SUPPORTED_RECORD_TYPES = [
|
|
Packit Service |
0a38ef |
"A", "AAAA", "A6", "AFSDB", "CERT", "CNAME", "DLV", "DNAME", "DS", "KX",
|
|
Packit Service |
0a38ef |
"LOC", "MX", "NAPTR", "NS", "PTR", "SRV", "SSHFP", "TLSA", "TXT", "URI"]
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
_RECORD_FIELDS = [
|
|
Packit Service |
0a38ef |
"a_rec", "aaaa_rec", "a6_rec", "afsdb_rec", "cert_rec",
|
|
Packit Service |
0a38ef |
"cname_rec", "dlv_rec", "dname_rec", "ds_rec", "kx_rec", "loc_rec",
|
|
Packit Service |
0a38ef |
"mx_rec", "naptr_rec", "ns_rec", "ptr_rec", "srv_rec", "sshfp_rec",
|
|
Packit Service |
0a38ef |
"tlsa_rec", "txt_rec", "uri_rec"
|
|
Packit Service |
0a38ef |
]
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
a166ed |
# The _PART_MAP structure maps ansible-freeipa attributes to their
|
|
Packit Service |
a166ed |
# FreeIPA API counterparts. The keys are also used to obtain a list
|
|
Packit Service |
a166ed |
# of all supported DNS record attributes.
|
|
Packit Service |
a166ed |
|
|
Packit Service |
0a38ef |
_PART_MAP = {
|
|
Packit Service |
0a38ef |
'a_ip_address': 'a_part_ip_address',
|
|
Packit Service |
0a38ef |
'a_create_reverse': 'a_extra_create_reverse',
|
|
Packit Service |
0a38ef |
'aaaa_ip_address': 'aaaa_part_ip_address',
|
|
Packit Service |
0a38ef |
'aaaa_create_reverse': 'aaaa_extra_create_reverse',
|
|
Packit Service |
0a38ef |
'a6_data': 'a6_part_data',
|
|
Packit Service |
0a38ef |
'afsdb_subtype': 'afsdb_part_subtype',
|
|
Packit Service |
0a38ef |
'afsdb_hostname': 'afsdb_part_hostname',
|
|
Packit Service |
0a38ef |
'cert_type': 'cert_part_type',
|
|
Packit Service |
0a38ef |
'cert_key_tag': 'cert_part_key_tag',
|
|
Packit Service |
0a38ef |
'cert_algorithm': 'cert_part_algorithm',
|
|
Packit Service |
0a38ef |
'cert_certificate_or_crl': 'cert_part_certificate_or_crl',
|
|
Packit Service |
0a38ef |
'cname_hostname': 'cname_part_hostname',
|
|
Packit Service |
0a38ef |
'dlv_algorithm': 'dlv_part_algorithm',
|
|
Packit Service |
0a38ef |
'dlv_digest': 'dlv_part_digest',
|
|
Packit Service |
0a38ef |
'dlv_digest_type': 'dlv_part_digest_type',
|
|
Packit Service |
0a38ef |
'dlv_key_tag': 'dlv_part_key_tag',
|
|
Packit Service |
0a38ef |
'dname_target': 'dname_part_target',
|
|
Packit Service |
0a38ef |
'ds_algorithm': 'ds_part_algorithm',
|
|
Packit Service |
0a38ef |
'ds_digest': 'ds_part_digest',
|
|
Packit Service |
0a38ef |
'ds_digest_type': 'ds_part_digest_type',
|
|
Packit Service |
0a38ef |
'ds_key_tag': 'ds_part_key_tag',
|
|
Packit Service |
0a38ef |
'kx_preference': 'kx_part_preference',
|
|
Packit Service |
0a38ef |
'kx_exchanger': 'kx_part_exchanger',
|
|
Packit Service |
0a38ef |
"loc_lat_deg": "loc_part_lat_deg",
|
|
Packit Service |
0a38ef |
"loc_lat_min": "loc_part_lat_min",
|
|
Packit Service |
0a38ef |
"loc_lat_sec": "loc_part_lat_sec",
|
|
Packit Service |
0a38ef |
"loc_lat_dir": "loc_part_lat_dir",
|
|
Packit Service |
0a38ef |
"loc_lon_deg": "loc_part_lon_deg",
|
|
Packit Service |
0a38ef |
"loc_lon_min": "loc_part_lon_min",
|
|
Packit Service |
0a38ef |
"loc_lon_sec": "loc_part_lon_sec",
|
|
Packit Service |
0a38ef |
"loc_lon_dir": "loc_part_lon_dir",
|
|
Packit Service |
0a38ef |
"loc_altitude": "loc_part_altitude",
|
|
Packit Service |
0a38ef |
"loc_size": "loc_part_size",
|
|
Packit Service |
0a38ef |
"loc_h_precision": "loc_part_h_precision",
|
|
Packit Service |
0a38ef |
"loc_v_precision": "loc_part_v_precision",
|
|
Packit Service |
0a38ef |
"mx_preference": "mx_part_preference",
|
|
Packit Service |
0a38ef |
"mx_exchanger": 'mx_part_exchanger',
|
|
Packit Service |
0a38ef |
"naptr_order": "naptr_part_order",
|
|
Packit Service |
0a38ef |
"naptr_preference": "naptr_part_preference",
|
|
Packit Service |
0a38ef |
"naptr_flags": "naptr_part_flags",
|
|
Packit Service |
0a38ef |
"naptr_service": "naptr_part_service",
|
|
Packit Service |
0a38ef |
"naptr_regexp": "naptr_part_regexp",
|
|
Packit Service |
0a38ef |
"naptr_replacement": "naptr_part_replacement",
|
|
Packit Service |
0a38ef |
'ns_hostname': 'ns_part_hostname',
|
|
Packit Service |
0a38ef |
'ptr_hostname': 'ptr_part_hostname',
|
|
Packit Service |
0a38ef |
"srv_priority": "srv_part_priority",
|
|
Packit Service |
0a38ef |
"srv_weight": "srv_part_weight",
|
|
Packit Service |
0a38ef |
"srv_port": "srv_part_port",
|
|
Packit Service |
0a38ef |
"srv_target": "srv_part_target",
|
|
Packit Service |
0a38ef |
'sshfp_algorithm': 'sshfp_part_algorithm',
|
|
Packit Service |
0a38ef |
'sshfp_fingerprint': 'sshfp_part_fingerprint',
|
|
Packit Service |
0a38ef |
'sshfp_fp_type': 'sshfp_part_fp_type',
|
|
Packit Service |
0a38ef |
"tlsa_cert_usage": "tlsa_part_cert_usage",
|
|
Packit Service |
0a38ef |
"tlsa_cert_association_data": "tlsa_part_cert_association_data",
|
|
Packit Service |
0a38ef |
"tlsa_matching_type": "tlsa_part_matching_type",
|
|
Packit Service |
0a38ef |
"tlsa_selector": "tlsa_part_selector",
|
|
Packit Service |
0a38ef |
'txt_data': 'txt_part_data',
|
|
Packit Service |
0a38ef |
"uri_priority": "uri_part_priority",
|
|
Packit Service |
0a38ef |
"uri_target": "uri_part_target",
|
|
Packit Service |
0a38ef |
"uri_weight": "uri_part_weight"
|
|
Packit Service |
0a38ef |
}
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
a166ed |
# _RECORD_PARTS is a structure that maps the attributes that store
|
|
Packit Service |
a166ed |
# the DNS record in FreeIPA API to the parts and options available
|
|
Packit Service |
a166ed |
# for these records in the API.
|
|
Packit Service |
a166ed |
|
|
Packit Service |
0a38ef |
_RECORD_PARTS = {
|
|
Packit Service |
0a38ef |
"arecord": ["a_part_ip_address", "a_extra_create_reverse"],
|
|
Packit Service |
0a38ef |
"aaaarecord": [
|
|
Packit Service |
0a38ef |
"aaaa_part_ip_address", "aaaa_extra_create_reverse"
|
|
Packit Service |
0a38ef |
],
|
|
Packit Service |
0a38ef |
"a6record": ["a6_part_data"],
|
|
Packit Service |
0a38ef |
"afsdbrecord": ['afsdb_part_subtype', 'afsdb_part_hostname'],
|
|
Packit Service |
a166ed |
"certrecord": [
|
|
Packit Service |
0a38ef |
'cert_part_type', 'cert_part_key_tag', 'cert_part_algorithm',
|
|
Packit Service |
0a38ef |
'cert_part_certificate_or_crl'
|
|
Packit Service |
0a38ef |
],
|
|
Packit Service |
0a38ef |
"cnamerecord": ["cname_part_hostname"],
|
|
Packit Service |
0a38ef |
"dlvrecord": [
|
|
Packit Service |
0a38ef |
'dlv_part_key_tag', 'dlv_part_algorithm', 'dlv_part_digest_type',
|
|
Packit Service |
0a38ef |
'dlv_part_digest'
|
|
Packit Service |
0a38ef |
],
|
|
Packit Service |
0a38ef |
"dnamerecord": ["dname_part_target"],
|
|
Packit Service |
0a38ef |
"dsrecord": ['ds_part_key_tag', 'ds_part_algorithm',
|
|
Packit Service |
0a38ef |
'ds_part_digest_type', 'ds_part_digest'],
|
|
Packit Service |
0a38ef |
"kxrecord": ['kx_part_preference', 'kx_part_exchanger'],
|
|
Packit Service |
0a38ef |
"locrecord": [
|
|
Packit Service |
0a38ef |
"loc_part_lat_deg", "loc_part_lat_min", "loc_part_lat_sec",
|
|
Packit Service |
0a38ef |
"loc_part_lat_dir", "loc_part_lon_deg", "loc_part_lon_min",
|
|
Packit Service |
0a38ef |
"loc_part_lon_sec", "loc_part_lon_dir", "loc_part_altitude",
|
|
Packit Service |
0a38ef |
"loc_part_size", "loc_part_h_precision", "loc_part_v_precision"
|
|
Packit Service |
0a38ef |
],
|
|
Packit Service |
0a38ef |
"mxrecord": ['mx_part_preference', 'mx_part_exchanger'],
|
|
Packit Service |
0a38ef |
"naptrrecord": [
|
|
Packit Service |
0a38ef |
"naptr_part_order", "naptr_part_preference", "naptr_part_flags",
|
|
Packit Service |
0a38ef |
"naptr_part_service", "naptr_part_regexp", "naptr_part_replacement"
|
|
Packit Service |
0a38ef |
],
|
|
Packit Service |
0a38ef |
"nsrecord": ["ns_part_hostname"],
|
|
Packit Service |
0a38ef |
"ptrrecord": ["ptr_part_hostname"],
|
|
Packit Service |
0a38ef |
"srvrecord": [
|
|
Packit Service |
0a38ef |
"srv_part_priority", "srv_part_weight", "srv_part_port",
|
|
Packit Service |
0a38ef |
"srv_part_target",
|
|
Packit Service |
0a38ef |
],
|
|
Packit Service |
0a38ef |
"sshfprecord": [
|
|
Packit Service |
0a38ef |
'sshfp_part_algorithm', 'sshfp_part_fingerprint',
|
|
Packit Service |
0a38ef |
'sshfp_part_fp_type'
|
|
Packit Service |
0a38ef |
],
|
|
Packit Service |
0a38ef |
"tlsarecord": [
|
|
Packit Service |
0a38ef |
"tlsa_part_cert_usage", "tlsa_part_cert_association_data",
|
|
Packit Service |
0a38ef |
"tlsa_part_matching_type", "tlsa_part_selector"
|
|
Packit Service |
0a38ef |
],
|
|
Packit Service |
0a38ef |
"txtrecord": ["txt_part_data"],
|
|
Packit Service |
0a38ef |
"urirecord": ["uri_part_priority", "uri_part_target", "uri_part_weight"],
|
|
Packit Service |
0a38ef |
}
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
def configure_module():
|
|
Packit Service |
0a38ef |
"""Configure ipadnsrecord ansible module variables."""
|
|
Packit Service |
0a38ef |
record_spec = dict(
|
|
Packit Service |
0a38ef |
zone_name=dict(type='str', required=False, aliases=['dnszone']),
|
|
Packit Service |
0a38ef |
record_type=dict(type='str', default="A",
|
|
Packit Service |
0a38ef |
choices=["A", "AAAA", "A6", "AFSDB", "CERT", "CNAME",
|
|
Packit Service |
0a38ef |
"DLV", "DNAME", "DS", "KX", "LOC", "MX",
|
|
Packit Service |
0a38ef |
"NAPTR", "NS", "PTR", "SRV", "SSHFP", "TLSA",
|
|
Packit Service |
0a38ef |
"TXT", "URI"]),
|
|
Packit Service |
0a38ef |
record_value=dict(type='list', required=False),
|
|
Packit Service |
0a38ef |
record_ttl=dict(type='int', required=False),
|
|
Packit Service |
0a38ef |
del_all=dict(type='bool', required=False),
|
|
Packit Service |
0a38ef |
a_rec=dict(type='list', required=False, aliases=['a_record']),
|
|
Packit Service |
0a38ef |
aaaa_rec=dict(type='list', required=False, aliases=['aaaa_record']),
|
|
Packit Service |
0a38ef |
a6_rec=dict(type='list', required=False, aliases=['a6_record']),
|
|
Packit Service |
0a38ef |
afsdb_rec=dict(type='list', required=False, aliases=['afsdb_record']),
|
|
Packit Service |
0a38ef |
cert_rec=dict(type='list', required=False, aliases=['cert_record']),
|
|
Packit Service |
0a38ef |
cname_rec=dict(type='list', required=False, aliases=['cname_record']),
|
|
Packit Service |
0a38ef |
dlv_rec=dict(type='list', required=False, aliases=['dlv_record']),
|
|
Packit Service |
0a38ef |
dname_rec=dict(type='list', required=False, aliases=['dname_record']),
|
|
Packit Service |
0a38ef |
ds_rec=dict(type='list', required=False, aliases=['ds_record']),
|
|
Packit Service |
0a38ef |
kx_rec=dict(type='list', required=False, aliases=['kx_record']),
|
|
Packit Service |
0a38ef |
loc_rec=dict(type='list', required=False, aliases=['loc_record']),
|
|
Packit Service |
0a38ef |
mx_rec=dict(type='list', required=False, aliases=['mx_record']),
|
|
Packit Service |
0a38ef |
naptr_rec=dict(type='list', required=False, aliases=['naptr_record']),
|
|
Packit Service |
0a38ef |
ns_rec=dict(type='list', required=False, aliases=['ns_record']),
|
|
Packit Service |
0a38ef |
ptr_rec=dict(type='list', required=False, aliases=['ptr_record']),
|
|
Packit Service |
0a38ef |
srv_rec=dict(type='list', required=False, aliases=['srv_record']),
|
|
Packit Service |
0a38ef |
sshfp_rec=dict(type='list', required=False, aliases=['sshfp_record']),
|
|
Packit Service |
0a38ef |
tlsa_rec=dict(type='list', required=False, aliases=['tlsa_record']),
|
|
Packit Service |
0a38ef |
txt_rec=dict(type='list', required=False, aliases=['txt_record']),
|
|
Packit Service |
0a38ef |
uri_rec=dict(type='list', required=False, aliases=['uri_record']),
|
|
Packit Service |
0a38ef |
ip_address=dict(type='str', required=False),
|
|
Packit Service |
0a38ef |
create_reverse=dict(type='bool', required=False, aliases=['reverse']),
|
|
Packit Service |
0a38ef |
a_ip_address=dict(type='str', required=False),
|
|
Packit Service |
0a38ef |
a_create_reverse=dict(type='bool', required=False),
|
|
Packit Service |
0a38ef |
aaaa_ip_address=dict(type='str', required=False),
|
|
Packit Service |
0a38ef |
aaaa_create_reverse=dict(type='bool', required=False),
|
|
Packit Service |
0a38ef |
a6_data=dict(type='str', required=False),
|
|
Packit Service |
0a38ef |
afsdb_subtype=dict(type='int', required=False),
|
|
Packit Service |
0a38ef |
afsdb_hostname=dict(type='str', required=False),
|
|
Packit Service |
0a38ef |
cert_type=dict(type='int', required=False),
|
|
Packit Service |
0a38ef |
cert_key_tag=dict(type='int', required=False),
|
|
Packit Service |
0a38ef |
cert_algorithm=dict(type='int', required=False),
|
|
Packit Service |
0a38ef |
cert_certificate_or_crl=dict(type='str', required=False),
|
|
Packit Service |
0a38ef |
cname_hostname=dict(type='str', required=False),
|
|
Packit Service |
0a38ef |
dlv_key_tag=dict(type='int', required=False),
|
|
Packit Service |
0a38ef |
dlv_algorithm=dict(type='int', required=False),
|
|
Packit Service |
0a38ef |
dlv_digest_type=dict(type='int', required=False),
|
|
Packit Service |
0a38ef |
dlv_digest=dict(type='str', required=False),
|
|
Packit Service |
0a38ef |
dname_target=dict(type='str', required=False),
|
|
Packit Service |
0a38ef |
ds_key_tag=dict(type='int', required=False),
|
|
Packit Service |
0a38ef |
ds_algorithm=dict(type='int', required=False),
|
|
Packit Service |
0a38ef |
ds_digest_type=dict(type='int', required=False),
|
|
Packit Service |
0a38ef |
ds_digest=dict(type='str', required=False),
|
|
Packit Service |
0a38ef |
kx_preference=dict(type='int', required=False),
|
|
Packit Service |
0a38ef |
kx_exchanger=dict(type='str', required=False),
|
|
Packit Service |
0a38ef |
loc_lat_deg=dict(type='int', required=False),
|
|
Packit Service |
0a38ef |
loc_lat_min=dict(type='int', required=False),
|
|
Packit Service |
0a38ef |
loc_lat_sec=dict(type='float', required=False),
|
|
Packit Service |
0a38ef |
loc_lat_dir=dict(type='str', required=False),
|
|
Packit Service |
0a38ef |
loc_lon_deg=dict(type='int', required=False),
|
|
Packit Service |
0a38ef |
loc_lon_min=dict(type='int', required=False),
|
|
Packit Service |
0a38ef |
loc_lon_sec=dict(type='float', required=False),
|
|
Packit Service |
0a38ef |
loc_lon_dir=dict(type='str', required=False),
|
|
Packit Service |
0a38ef |
loc_altitude=dict(type='float', required=False),
|
|
Packit Service |
0a38ef |
loc_size=dict(type='float', required=False),
|
|
Packit Service |
0a38ef |
loc_h_precision=dict(type='float', required=False),
|
|
Packit Service |
0a38ef |
loc_v_precision=dict(type='float', required=False),
|
|
Packit Service |
0a38ef |
mx_preference=dict(type='int', required=False),
|
|
Packit Service |
0a38ef |
mx_exchanger=dict(type='str', required=False),
|
|
Packit Service |
0a38ef |
naptr_order=dict(type='int', required=False),
|
|
Packit Service |
0a38ef |
naptr_preference=dict(type='int', required=False),
|
|
Packit Service |
0a38ef |
naptr_flags=dict(type='str', required=False),
|
|
Packit Service |
0a38ef |
naptr_service=dict(type='str', required=False),
|
|
Packit Service |
0a38ef |
naptr_regexp=dict(type='str', required=False),
|
|
Packit Service |
0a38ef |
naptr_replacement=dict(type='str', required=False),
|
|
Packit Service |
0a38ef |
ns_hostname=dict(type='str', required=False),
|
|
Packit Service |
0a38ef |
ptr_hostname=dict(type='str', required=False),
|
|
Packit Service |
0a38ef |
srv_priority=dict(type='int', required=False),
|
|
Packit Service |
0a38ef |
srv_weight=dict(type='int', required=False),
|
|
Packit Service |
0a38ef |
srv_port=dict(type='int', required=False),
|
|
Packit Service |
0a38ef |
srv_target=dict(type='str', required=False),
|
|
Packit Service |
0a38ef |
sshfp_algorithm=dict(type='int', required=False),
|
|
Packit Service |
0a38ef |
sshfp_fingerprint=dict(type='str', required=False),
|
|
Packit Service |
0a38ef |
sshfp_fp_type=dict(type='int', required=False),
|
|
Packit Service |
0a38ef |
tlsa_cert_usage=dict(type='int', required=False),
|
|
Packit Service |
0a38ef |
tlsa_cert_association_data=dict(type='str', required=False),
|
|
Packit Service |
0a38ef |
tlsa_matching_type=dict(type='int', required=False),
|
|
Packit Service |
0a38ef |
tlsa_selector=dict(type='int', required=False),
|
|
Packit Service |
0a38ef |
txt_data=dict(type='str', required=False),
|
|
Packit Service |
0a38ef |
uri_priority=dict(type='int', required=False),
|
|
Packit Service |
0a38ef |
uri_target=dict(type='str', required=False),
|
|
Packit Service |
0a38ef |
uri_weight=dict(type='int', required=False),
|
|
Packit Service |
0a38ef |
)
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
ansible_module = AnsibleModule(
|
|
Packit Service |
0a38ef |
argument_spec=dict(
|
|
Packit Service |
0a38ef |
# general
|
|
Packit Service |
0a38ef |
ipaadmin_principal=dict(type="str", default="admin"),
|
|
Packit Service |
0a38ef |
ipaadmin_password=dict(type="str", no_log=True),
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
name=dict(type="list", aliases=["record_name"], default=None,
|
|
Packit Service |
0a38ef |
required=False),
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
records=dict(type="list", default=None,
|
|
Packit Service |
0a38ef |
options=dict(
|
|
Packit Service |
0a38ef |
# Here name is a simple string
|
|
Packit Service |
0a38ef |
name=dict(type='str', required=True,
|
|
Packit Service |
0a38ef |
aliases=['record_name']),
|
|
Packit Service |
0a38ef |
**record_spec),
|
|
Packit Service |
0a38ef |
),
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
# general
|
|
Packit Service |
0a38ef |
state=dict(type="str", default="present",
|
|
Packit Service |
0a38ef |
choices=["present", "absent", "disabled"]),
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
# Add record specific parameters for simple use case
|
|
Packit Service |
0a38ef |
**record_spec
|
|
Packit Service |
0a38ef |
),
|
|
Packit Service |
0a38ef |
mutually_exclusive=[["name", "records"], ['record_value', 'del_all']],
|
|
Packit Service |
0a38ef |
required_one_of=[["name", "records"]],
|
|
Packit Service |
0a38ef |
supports_check_mode=True,
|
|
Packit Service |
0a38ef |
)
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
ansible_module._ansible_debug = True
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
return ansible_module
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
a166ed |
def find_dnsrecord(module, dnszone, name):
|
|
Packit Service |
0a38ef |
"""Find a DNS record based on its name (idnsname)."""
|
|
Packit Service |
a166ed |
_args = {
|
|
Packit Service |
a166ed |
"all": True,
|
|
Packit Service |
a166ed |
"idnsname": to_text(name),
|
|
Packit Service |
a166ed |
}
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
try:
|
|
Packit Service |
0a38ef |
_result = api_command(
|
|
Packit Service |
a166ed |
module, "dnsrecord_show", to_text(dnszone), _args)
|
|
Packit Service |
0a38ef |
except ipalib.errors.NotFound:
|
|
Packit Service |
0a38ef |
return None
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
a166ed |
return _result["result"]
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
def check_parameters(module, state, zone_name, record):
|
|
Packit Service |
0a38ef |
"""Check if parameters are correct."""
|
|
Packit Service |
0a38ef |
if zone_name is None:
|
|
Packit Service |
0a38ef |
module.fail_json(msg="Msssing required argument: zone_name")
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
record_type = record.get('record_type', None)
|
|
Packit Service |
0a38ef |
record_value = record.get('record_value', None)
|
|
Packit Service |
0a38ef |
if record_type is not None:
|
|
Packit Service |
0a38ef |
if record_type not in _SUPPORTED_RECORD_TYPES:
|
|
Packit Service |
0a38ef |
module.fail_json(
|
|
Packit Service |
0a38ef |
msg="Record Type '%s' is not supported." % record_type)
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
a166ed |
# has_record is "True" if the playbook has set any of the full record
|
|
Packit Service |
a166ed |
# attributes (*record or *_rec).
|
|
Packit Service |
a166ed |
has_record = any(
|
|
Packit Service |
a166ed |
(rec in record) or (("%sord" % rec) in record)
|
|
Packit Service |
a166ed |
for rec in _RECORD_FIELDS
|
|
Packit Service |
a166ed |
)
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
a166ed |
# has_part_record is "True" if the playbook has set any of the
|
|
Packit Service |
a166ed |
# record field attributes.
|
|
Packit Service |
0a38ef |
has_part_record = any(record.get(rec, None) for rec in _PART_MAP)
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
a166ed |
# some attributes in the playbook may have a special meaning,
|
|
Packit Service |
a166ed |
# like "ip_address", which is used for either arecord or aaaarecord,
|
|
Packit Service |
a166ed |
# and has_special is true if any of these attributes is set on
|
|
Packit Service |
a166ed |
# on the playbook.
|
|
Packit Service |
0a38ef |
special_list = ['ip_address']
|
|
Packit Service |
0a38ef |
has_special = any(record.get(rec, None) for rec in special_list)
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
invalid = []
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
if state == 'present':
|
|
Packit Service |
0a38ef |
if has_record or has_part_record or has_special:
|
|
Packit Service |
0a38ef |
if record_value:
|
|
Packit Service |
0a38ef |
module.fail_json(
|
|
Packit Service |
0a38ef |
msg="Cannot use record data with `record_value`.")
|
|
Packit Service |
0a38ef |
elif not record_value:
|
|
Packit Service |
0a38ef |
module.fail_json(msg="No record data provided.")
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
invalid = ['del_all']
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
if state == 'absent':
|
|
Packit Service |
0a38ef |
del_all = record.get('del_all', None)
|
|
Packit Service |
0a38ef |
if record_value:
|
|
Packit Service |
0a38ef |
if has_record or has_part_record or del_all:
|
|
Packit Service |
0a38ef |
module.fail_json(
|
|
Packit Service |
0a38ef |
msg="Cannot use record data with `record_value`.")
|
|
Packit Service |
0a38ef |
elif not (has_record or has_part_record or del_all):
|
|
Packit Service |
0a38ef |
module.fail_json(
|
|
Packit Service |
0a38ef |
msg="Either a record description or `del_all` is required.")
|
|
Packit Service |
0a38ef |
invalid = list(_PART_MAP.keys())
|
|
Packit Service |
0a38ef |
invalid.extend(['create_reverse', 'dns_ttl'])
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
for x in invalid:
|
|
Packit Service |
0a38ef |
if x in record:
|
|
Packit Service |
0a38ef |
module.fail_json(
|
|
Packit Service |
0a38ef |
msg="Variable `%s` cannot be used in state `%s`" %
|
|
Packit Service |
0a38ef |
(x, state))
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
def connect_to_api(module):
|
|
Packit Service |
0a38ef |
"""Connect to the IPA API."""
|
|
Packit Service |
0a38ef |
ipaadmin_principal = module_params_get(module, "ipaadmin_principal")
|
|
Packit Service |
0a38ef |
ipaadmin_password = module_params_get(module, "ipaadmin_password")
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
ccache_dir = None
|
|
Packit Service |
0a38ef |
ccache_name = None
|
|
Packit Service |
0a38ef |
if not valid_creds(module, ipaadmin_principal):
|
|
Packit Service |
0a38ef |
ccache_dir, ccache_name = temp_kinit(ipaadmin_principal,
|
|
Packit Service |
0a38ef |
ipaadmin_password)
|
|
Packit Service |
0a38ef |
api_connect()
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
return ccache_dir, ccache_name
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
def get_entry_from_module(module, name):
|
|
Packit Service |
0a38ef |
"""Create an entry dict from attributes in module."""
|
|
Packit Service |
0a38ef |
attrs = [
|
|
Packit Service |
0a38ef |
'del_all', 'zone_name', 'record_type', 'record_value', 'record_ttl',
|
|
Packit Service |
0a38ef |
"ip_address", "create_reverse"
|
|
Packit Service |
0a38ef |
]
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
entry = {'name': name}
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
for key_set in [_RECORD_FIELDS, _PART_MAP, attrs]:
|
|
Packit Service |
0a38ef |
entry.update({
|
|
Packit Service |
0a38ef |
key: module_params_get(module, key)
|
|
Packit Service |
0a38ef |
for key in key_set
|
|
Packit Service |
0a38ef |
if module_params_get(module, key) is not None
|
|
Packit Service |
0a38ef |
})
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
return entry
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
def create_reverse_ip_record(module, zone_name, name, ips):
|
|
Packit Service |
0a38ef |
"""Create a reverse record for an IP (PTR record)."""
|
|
Packit Service |
0a38ef |
_cmds = []
|
|
Packit Service |
0a38ef |
for address in ips:
|
|
Packit Service |
0a38ef |
reverse_ip = dns.reversename.from_address(address)
|
|
Packit Service |
0a38ef |
reverse_zone = dns.resolver.zone_for_name(reverse_ip)
|
|
Packit Service |
0a38ef |
reverse_host = to_text(reverse_ip).replace(".%s" % reverse_zone, '')
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
rev_find = find_dnsrecord(module, reverse_zone, reverse_host)
|
|
Packit Service |
0a38ef |
if rev_find is None:
|
|
Packit Service |
0a38ef |
rev_args = {
|
|
Packit Service |
0a38ef |
'idnsname': to_text(reverse_host),
|
|
Packit Service |
0a38ef |
"ptrrecord": "%s.%s" % (name, zone_name)
|
|
Packit Service |
0a38ef |
}
|
|
Packit Service |
0a38ef |
_cmds.append([reverse_zone, 'dnsrecord_add', rev_args])
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
return _cmds
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
def ensure_data_is_list(data):
|
|
Packit Service |
0a38ef |
"""Ensure data is represented as a list."""
|
|
Packit Service |
0a38ef |
return data if isinstance(data, list) else [data]
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
def gen_args(entry):
|
|
Packit Service |
0a38ef |
"""Generate IPA API arguments for a given `entry`."""
|
|
Packit Service |
0a38ef |
args = {'idnsname': to_text(entry['name'])}
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
if 'del_all' in entry:
|
|
Packit Service |
0a38ef |
args['del_all'] = entry['del_all']
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
record_value = entry.get('record_value', None)
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
if record_value is not None:
|
|
Packit Service |
0a38ef |
record_type = entry['record_type']
|
|
Packit Service |
0a38ef |
rec = "{}record".format(record_type.lower())
|
|
Packit Service |
0a38ef |
args[rec] = ensure_data_is_list(record_value)
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
else:
|
|
Packit Service |
0a38ef |
for field in _RECORD_FIELDS:
|
|
Packit Service |
a166ed |
record_value = entry.get(field) or entry.get("%sord" % field)
|
|
Packit Service |
0a38ef |
if record_value is not None:
|
|
Packit Service |
0a38ef |
record_type = field.split('_')[0]
|
|
Packit Service |
0a38ef |
rec = "{}record".format(record_type.lower())
|
|
Packit Service |
0a38ef |
args[rec] = ensure_data_is_list(record_value)
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
records = {
|
|
Packit Service |
0a38ef |
key: rec for key, rec in _PART_MAP.items() if key in entry
|
|
Packit Service |
0a38ef |
}
|
|
Packit Service |
0a38ef |
for key, rec in records.items():
|
|
Packit Service |
0a38ef |
args[rec] = entry[key]
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
if 'ip_address' in entry:
|
|
Packit Service |
0a38ef |
ip_address = entry['ip_address']
|
|
Packit Service |
0a38ef |
if is_ipv4_addr(ip_address):
|
|
Packit Service |
0a38ef |
args['a_part_ip_address'] = ip_address
|
|
Packit Service |
0a38ef |
if is_ipv6_addr(ip_address):
|
|
Packit Service |
0a38ef |
args['aaaa_part_ip_address'] = ip_address
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
if entry.get('create_reverse', False):
|
|
Packit Service |
0a38ef |
if 'a_part_ip_address' in args or 'arecord' in args:
|
|
Packit Service |
0a38ef |
args['a_extra_create_reverse'] = True
|
|
Packit Service |
0a38ef |
if 'aaaa_part_ip_address' in args or 'aaaarecord' in args:
|
|
Packit Service |
0a38ef |
args['aaaa_extra_create_reverse'] = True
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
if 'record_ttl' in entry:
|
|
Packit Service |
0a38ef |
args['dnsttl'] = entry['record_ttl']
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
return args
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
def define_commands_for_present_state(module, zone_name, entry, res_find):
|
|
Packit Service |
0a38ef |
"""Define commnads for `state: present`."""
|
|
Packit Service |
0a38ef |
_commands = []
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
name = to_text(entry['name'])
|
|
Packit Service |
0a38ef |
args = gen_args(entry)
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
a166ed |
existing = find_dnsrecord(module, zone_name, name)
|
|
Packit Service |
a166ed |
|
|
Packit Service |
a166ed |
for record, fields in _RECORD_PARTS.items():
|
|
Packit Service |
a166ed |
part_fields = [f for f in fields if f in args]
|
|
Packit Service |
a166ed |
if part_fields and record in args:
|
|
Packit Service |
a166ed |
record_change_request = True
|
|
Packit Service |
a166ed |
break
|
|
Packit Service |
a166ed |
else:
|
|
Packit Service |
a166ed |
record_change_request = False
|
|
Packit Service |
a166ed |
|
|
Packit Service |
a166ed |
if res_find is None and not record_change_request:
|
|
Packit Service |
0a38ef |
_commands.append([zone_name, 'dnsrecord_add', args])
|
|
Packit Service |
0a38ef |
else:
|
|
Packit Service |
0a38ef |
# Create reverse records for existing records
|
|
Packit Service |
0a38ef |
for ipv in ['a', 'aaaa']:
|
|
Packit Service |
0a38ef |
record = ('%srecord' % ipv)
|
|
Packit Service |
0a38ef |
if record in args and ('%s_extra_create_reverse' % ipv) in args:
|
|
Packit Service |
0a38ef |
cmds = create_reverse_ip_record(
|
|
Packit Service |
0a38ef |
module, zone_name, name, args[record])
|
|
Packit Service |
0a38ef |
_commands.extend(cmds)
|
|
Packit Service |
0a38ef |
del args['%s_extra_create_reverse' % ipv]
|
|
Packit Service |
0a38ef |
if '%s_ip_address' not in args:
|
|
Packit Service |
0a38ef |
del args[record]
|
|
Packit Service |
0a38ef |
for record, fields in _RECORD_PARTS.items():
|
|
Packit Service |
0a38ef |
part_fields = [f for f in fields if f in args]
|
|
Packit Service |
0a38ef |
if part_fields:
|
|
Packit Service |
0a38ef |
if record in args:
|
|
Packit Service |
0a38ef |
# user wants to update record.
|
|
Packit Service |
0a38ef |
if len(args[record]) > 1:
|
|
Packit Service |
0a38ef |
module.fail_json(msg="Cannot modify multiple records "
|
|
Packit Service |
0a38ef |
"of the same type at once.")
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
a166ed |
mod_record = args[record][0]
|
|
Packit Service |
0a38ef |
if existing is None:
|
|
Packit Service |
a166ed |
module.fail_json(msg="`%s` not found." % record)
|
|
Packit Service |
0a38ef |
else:
|
|
Packit Service |
0a38ef |
# update DNS record
|
|
Packit Service |
0a38ef |
_args = {k: args[k] for k in part_fields if k in args}
|
|
Packit Service |
0a38ef |
_args["idnsname"] = to_text(args["idnsname"])
|
|
Packit Service |
a166ed |
_args[record] = mod_record
|
|
Packit Service |
0a38ef |
if 'dns_ttl' in args:
|
|
Packit Service |
0a38ef |
_args['dns_ttl'] = args['dns_ttl']
|
|
Packit Service |
0a38ef |
_commands.append([zone_name, 'dnsrecord_mod', _args])
|
|
Packit Service |
0a38ef |
# remove record from args, as it will not be used again.
|
|
Packit Service |
0a38ef |
del args[record]
|
|
Packit Service |
0a38ef |
else:
|
|
Packit Service |
0a38ef |
for f in part_fields:
|
|
Packit Service |
0a38ef |
_args = {k: args[k] for k in part_fields}
|
|
Packit Service |
0a38ef |
_args['idnsname'] = name
|
|
Packit Service |
0a38ef |
_commands.append([zone_name, 'dnsrecord_add', _args])
|
|
Packit Service |
0a38ef |
# clean used fields from args
|
|
Packit Service |
0a38ef |
for f in part_fields:
|
|
Packit Service |
0a38ef |
if f in args:
|
|
Packit Service |
0a38ef |
del args[f]
|
|
Packit Service |
0a38ef |
else:
|
|
Packit Service |
0a38ef |
if record in args:
|
|
Packit Service |
0a38ef |
add_list = []
|
|
Packit Service |
0a38ef |
for value in args[record]:
|
|
Packit Service |
a166ed |
if (
|
|
Packit Service |
a166ed |
res_find is None
|
|
Packit Service |
a166ed |
or record not in res_find
|
|
Packit Service |
a166ed |
or value not in res_find[record]
|
|
Packit Service |
a166ed |
):
|
|
Packit Service |
0a38ef |
add_list.append(value)
|
|
Packit Service |
0a38ef |
if add_list:
|
|
Packit Service |
0a38ef |
args[record] = add_list
|
|
Packit Service |
0a38ef |
_commands.append([zone_name, 'dnsrecord_add', args])
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
return _commands
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
def define_commands_for_absent_state(module, zone_name, entry, res_find):
|
|
Packit Service |
0a38ef |
"""Define commands for `state: absent`."""
|
|
Packit Service |
0a38ef |
_commands = []
|
|
Packit Service |
0a38ef |
if res_find is None:
|
|
Packit Service |
0a38ef |
return []
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
args = gen_args(entry)
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
del_all = args.get('del_all', False)
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
records_to_delete = {k: v for k, v in args.items() if k.endswith('record')}
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
if del_all and records_to_delete:
|
|
Packit Service |
0a38ef |
module.fail_json(msg="Cannot use del_all and record together.")
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
if not del_all:
|
|
Packit Service |
0a38ef |
delete_records = False
|
|
Packit Service |
0a38ef |
for record, values in records_to_delete.items():
|
|
Packit Service |
0a38ef |
del_list = []
|
|
Packit Service |
a166ed |
if record in res_find:
|
|
Packit Service |
a166ed |
for value in values:
|
|
Packit Service |
a166ed |
for rec_found in res_find[record]:
|
|
Packit Service |
a166ed |
if rec_found == value:
|
|
Packit Service |
a166ed |
del_list.append(value)
|
|
Packit Service |
0a38ef |
if del_list:
|
|
Packit Service |
0a38ef |
args[record] = del_list
|
|
Packit Service |
0a38ef |
delete_records = True
|
|
Packit Service |
0a38ef |
if delete_records:
|
|
Packit Service |
0a38ef |
_commands.append([zone_name, 'dnsrecord_del', args])
|
|
Packit Service |
0a38ef |
else:
|
|
Packit Service |
0a38ef |
_commands.append([zone_name, 'dnsrecord_del', args])
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
return _commands
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
def main():
|
|
Packit Service |
0a38ef |
"""Execute DNS record playbook."""
|
|
Packit Service |
0a38ef |
ansible_module = configure_module()
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
global_zone_name = module_params_get(ansible_module, "zone_name")
|
|
Packit Service |
0a38ef |
names = module_params_get(ansible_module, "name")
|
|
Packit Service |
0a38ef |
records = module_params_get(ansible_module, "records")
|
|
Packit Service |
0a38ef |
state = module_params_get(ansible_module, "state")
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
# Check parameters
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
if (names is None or len(names) < 1) and \
|
|
Packit Service |
0a38ef |
(records is None or len(records) < 1):
|
|
Packit Service |
0a38ef |
ansible_module.fail_json(msg="One of name and records is required")
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
if state == "present":
|
|
Packit Service |
0a38ef |
if names is not None and len(names) != 1:
|
|
Packit Service |
0a38ef |
ansible_module.fail_json(
|
|
Packit Service |
0a38ef |
msg="Only one record can be added at a time.")
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
if records is not None:
|
|
Packit Service |
0a38ef |
names = records
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
# Init
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
changed = False
|
|
Packit Service |
0a38ef |
exit_args = {}
|
|
Packit Service |
0a38ef |
ccache_dir = None
|
|
Packit Service |
0a38ef |
ccache_name = None
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
try:
|
|
Packit Service |
0a38ef |
ccache_dir, ccache_name = connect_to_api(ansible_module)
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
commands = []
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
for record in names:
|
|
Packit Service |
0a38ef |
if isinstance(record, dict):
|
|
Packit Service |
0a38ef |
# ensure name is a string
|
|
Packit Service |
0a38ef |
zone_name = record.get("zone_name", global_zone_name)
|
|
Packit Service |
0a38ef |
name = record['name'] = str(record['name'])
|
|
Packit Service |
0a38ef |
entry = record
|
|
Packit Service |
0a38ef |
else:
|
|
Packit Service |
0a38ef |
zone_name = global_zone_name
|
|
Packit Service |
0a38ef |
name = record
|
|
Packit Service |
0a38ef |
entry = get_entry_from_module(ansible_module, name)
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
check_parameters(ansible_module, state, zone_name, entry)
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
res_find = find_dnsrecord(ansible_module, zone_name, name)
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
if state == 'present':
|
|
Packit Service |
0a38ef |
cmds = define_commands_for_present_state(
|
|
Packit Service |
0a38ef |
ansible_module, zone_name, entry, res_find)
|
|
Packit Service |
0a38ef |
elif state == 'absent':
|
|
Packit Service |
0a38ef |
cmds = define_commands_for_absent_state(
|
|
Packit Service |
0a38ef |
ansible_module, zone_name, entry, res_find)
|
|
Packit Service |
0a38ef |
else:
|
|
Packit Service |
0a38ef |
ansible_module.fail_json(msg="Unkown state '%s'" % state)
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
if cmds:
|
|
Packit Service |
0a38ef |
commands.extend(cmds)
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
# Execute commands
|
|
Packit Service |
0a38ef |
for name, command, args in commands:
|
|
Packit Service |
0a38ef |
try:
|
|
Packit Service |
0a38ef |
result = api_command(
|
|
Packit Service |
0a38ef |
ansible_module, command, to_text(name), args)
|
|
Packit Service |
0a38ef |
if "completed" in result:
|
|
Packit Service |
0a38ef |
if result["completed"] > 0:
|
|
Packit Service |
0a38ef |
changed = True
|
|
Packit Service |
0a38ef |
else:
|
|
Packit Service |
0a38ef |
changed = True
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
except ipalib.errors.EmptyModlist:
|
|
Packit Service |
0a38ef |
continue
|
|
Packit Service |
0a38ef |
except ipalib.errors.DuplicateEntry:
|
|
Packit Service |
0a38ef |
continue
|
|
Packit Service |
0a38ef |
except Exception as e:
|
|
Packit Service |
0a38ef |
error_message = str(e)
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
ansible_module.fail_json(
|
|
Packit Service |
0a38ef |
msg="%s: %s: %s" % (command, name, error_message))
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
except Exception as e:
|
|
Packit Service |
0a38ef |
ansible_module.fail_json(msg=str(e))
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
finally:
|
|
Packit Service |
0a38ef |
temp_kdestroy(ccache_dir, ccache_name)
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
# Done
|
|
Packit Service |
0a38ef |
ansible_module.exit_json(changed=changed, host=exit_args)
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
|
|
Packit Service |
0a38ef |
if __name__ == "__main__":
|
|
Packit Service |
0a38ef |
main()
|