community.general.ipa_dnsrecord 模块 – 管理 FreeIPA DNS 记录

注意

此模块是 community.general 集合 (版本 10.1.0) 的一部分。

如果您使用的是 ansible 包,则可能已安装此集合。它不包含在 ansible-core 中。要检查它是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用: ansible-galaxy collection install community.general

要在 playbook 中使用它,请指定: community.general.ipa_dnsrecord

概要

  • 使用 IPA API 添加、修改和删除 IPA DNS 记录。

参数

参数

注释

ipa_host

字符串

IPA 服务器的 IP 地址或主机名。

如果任务中未指定此值,则将使用环境变量 IPA_HOST 的值。

如果任务中既未指定环境变量 IPA_HOST,也未指定此值,则将使用 DNS 尝试发现 FreeIPA 服务器。

FreeIPA 中需要的相关条目是 ipa-ca 条目。

如果任务中既没有 DNS 条目,也没有环境变量 IPA_HOST,也没有此值,则将使用默认值。

默认值: "ipa.example.com"

ipa_pass

字符串

管理员用户的密码。

如果任务中未指定此值,则将使用环境变量 IPA_PASS 的值。

请注意,如果 urllib_gssapi 库可用,则可以使用 GSSAPI 进行 FreeIPA 身份验证。

如果环境变量 KRB5CCNAME 可用,则模块将使用此 Kerberos 凭据缓存来对 FreeIPA 服务器进行身份验证。

如果环境变量 KRB5_CLIENT_KTNAME 可用,而 KRB5CCNAME 不可用;模块将使用此 Kerberos 密钥表进行身份验证。

如果 GSSAPI 不可用,则需要使用 ipa_pass

ipa_port

整数

FreeIPA/IPA 服务器的端口。

如果任务中未指定此值,则将使用环境变量 IPA_PORT 的值。

如果任务中既未指定环境变量 IPA_PORT,也未指定此值,则将设置默认值。

默认值: 443

ipa_prot

字符串

IPA 服务器使用的协议。

如果任务中未指定此值,则将使用环境变量 IPA_PROT 的值。

如果任务中既未指定环境变量 IPA_PROT,也未指定此值,则将设置默认值。

选项

  • "http"

  • "https" ← (默认)

ipa_timeout

整数

指定连接的空闲超时时间(以秒为单位)。

对于批量操作,您可能需要增加此值以避免 IPA 服务器超时。

如果任务中未指定此值,则将使用环境变量 IPA_TIMEOUT 的值。

如果任务中既未指定环境变量 IPA_TIMEOUT,也未指定此值,则将设置默认值。

默认值: 10

ipa_user

字符串

在 IPA 服务器上使用的管理员帐户。

如果任务中未指定值,则将使用环境变量 IPA_USER 的值。

如果任务中既未指定环境变量 IPA_USER,也未指定值,则将设置默认值。

默认值: "admin"

record_name

别名:name

字符串 / 必填

要管理的DNS记录名称。

record_ttl

整数

设置记录的TTL。

仅在添加新记录或更改 record_valuerecord_values 的值时应用。

record_type

字符串

DNS记录名称的类型。

在community.general 8.2.0中添加了对NS的支持。

在community.general 9.1.0中添加了对SSHFP的支持。

选项

  • "A" ← (默认)

  • "AAAA"

  • "A6"

  • "CNAME"

  • "DNAME"

  • "MX"

  • "NS"

  • "PTR"

  • "SRV"

  • "TXT"

  • "SSHFP"

record_value

字符串

使用此值管理DNS记录名称。

record_values互斥,并且必须指定record_valuerecord_values中的一个。

如果需要指定多个值,请使用record_values

对于AAAAA记录类型,这将是IP地址。

对于A6记录类型,这将是A6记录数据。

对于CNAME记录类型,这将是主机名。

对于DNAME记录类型,这将是DNAME目标。

对于NS记录类型,这将是名称服务器主机名。主机名必须已经拥有有效的A或AAAA记录。

对于PTR记录类型,这将是主机名。

对于TXT记录类型,这将是文本。

对于SRV记录类型,这将是服务记录。

对于MX记录类型,这将是邮件交换机记录。

对于SSHFP记录类型,这将是SSH指纹记录。

record_values

列表 / 元素=字符串

使用此值管理DNS记录名称。

record_value互斥,并且必须指定record_valuerecord_values中的一个。

对于AAAAA记录类型,这将是IP地址。

对于A6记录类型,这将是A6记录数据。

对于CNAME记录类型,这将是主机名。

对于DNAME记录类型,这将是DNAME目标。

对于NS记录类型,这将是名称服务器主机名。主机名必须已经拥有有效的A或AAAA记录。

对于PTR记录类型,这将是主机名。

对于TXT记录类型,这将是文本。

对于SRV记录类型,这将是服务记录。

对于MX记录类型,这将是邮件交换机记录。

对于SSHFP记录类型,这将是SSH指纹记录。

state

字符串

要确保的状态

选项

  • "absent"

  • "present" ← (默认)

validate_certs

布尔值

这仅在ipa_prothttps时适用。

如果设置为false,则不会验证SSL证书。

这仅应在使用自签名证书的个人控制站点上设置为false

选项

  • false

  • true ← (默认)

zone_name

字符串 / 必填

需要管理DNS记录的DNS区域名称。

属性

属性

支持

描述

check_mode

支持:完全支持

可以在check_mode下运行,并在不修改目标的情况下返回更改状态预测。

diff_mode

支持:不支持

在差异模式下,将返回有关已更改内容(或可能需要在check_mode中更改的内容)的详细信息。

示例

- name: Ensure dns record is present
  community.general.ipa_dnsrecord:
    ipa_host: spider.example.com
    ipa_pass: Passw0rd!
    state: present
    zone_name: example.com
    record_name: vm-001
    record_type: 'AAAA'
    record_value: '::1'

- name: Ensure that dns records exists with a TTL
  community.general.ipa_dnsrecord:
    name: host02
    zone_name: example.com
    record_type: 'AAAA'
    record_values: '::1,fe80::1'
    record_ttl: 300
    ipa_host: ipa.example.com
    ipa_pass: topsecret
    state: present

- name: Ensure a PTR record is present
  community.general.ipa_dnsrecord:
    ipa_host: spider.example.com
    ipa_pass: Passw0rd!
    state: present
    zone_name: 2.168.192.in-addr.arpa
    record_name: 5
    record_type: 'PTR'
    record_value: 'internal.ipa.example.com'

- name: Ensure a TXT record is present
  community.general.ipa_dnsrecord:
    ipa_host: spider.example.com
    ipa_pass: Passw0rd!
    state: present
    zone_name: example.com
    record_name: _kerberos
    record_type: 'TXT'
    record_value: 'EXAMPLE.COM'

- name: Ensure an SRV record is present
  community.general.ipa_dnsrecord:
    ipa_host: spider.example.com
    ipa_pass: Passw0rd!
    state: present
    zone_name: example.com
    record_name: _kerberos._udp.example.com
    record_type: 'SRV'
    record_value: '10 50 88 ipa.example.com'

- name: Ensure an MX records are present
  community.general.ipa_dnsrecord:
    ipa_host: spider.example.com
    ipa_pass: Passw0rd!
    state: present
    zone_name: example.com
    record_name: '@'
    record_type: 'MX'
    record_values:
      - '1 mailserver-01.example.com'
      - '2 mailserver-02.example.com'

- name: Ensure that dns record is removed
  community.general.ipa_dnsrecord:
    name: host01
    zone_name: example.com
    record_type: 'AAAA'
    record_value: '::1'
    ipa_host: ipa.example.com
    ipa_user: admin
    ipa_pass: topsecret
    state: absent

- name: Ensure an NS record for a subdomain is present
  community,general.ipa_dnsrecord:
    name: subdomain
    zone_name: example.com
    record_type: 'NS'
    record_value: 'ns1.subdomain.exmaple.com'
    ipa_host: ipa.example.com
    ipa_user: admin
    ipa_pass: ChangeMe!

- name: Retrieve the current sshfp fingerprints
  ansible.builtin.command: ssh-keyscan -D localhost
  register: ssh_hostkeys

- name: Update the SSHFP records in DNS
  community.general.ipa_dnsrecord:
    name: "{{ inventory_hostname}}"
    zone_name: example.com
    record_type: 'SSHFP'
    record_values: "{{ ssh_hostkeys.stdout.split('\n') | map('split', 'SSHFP ') | map('last') | list }}"
    ipa_host: ipa.example.com
    ipa_user: admin
    ipa_pass: ChangeMe!

返回值

常用返回值已在此处记录,以下是此模块特有的字段

描述

dnsrecord

字典

IPA API返回的DNS记录。

返回:始终返回

作者

  • Abhijeet Kasurde (@Akasurde)