amazon.aws.route53 模块 – 在 Amazon Route 53 DNS 服务中添加或删除条目

注意

此模块是 amazon.aws 集合 (版本 9.0.0) 的一部分。

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

要安装它,请使用:ansible-galaxy collection install amazon.aws。您需要其他要求才能使用此模块,有关详细信息,请参阅 要求

要在剧本中使用它,请指定:amazon.aws.route53

amazon.aws 5.0.0 中的新增功能

摘要

  • 在 Amazon Route 53 服务中创建和删除 DNS 记录。

  • 此模块最初是在 1.0.0 版本中添加到 community.aws 的。

要求

执行此模块的主机需要以下要求。

  • python >= 3.6

  • boto3 >= 1.28.0

  • botocore >= 1.31.0

参数

参数

注释

access_key

别名:aws_access_key_id、aws_access_key、ec2_access_key

字符串

AWS 访问密钥 ID。

有关访问令牌的更多信息,请参阅 AWS 文档 https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys

还可以按优先级递减的顺序使用 AWS_ACCESS_KEY_IDAWS_ACCESS_KEYEC2_ACCESS_KEY 环境变量。

aws_access_keyprofile 选项是互斥的。

为了与 AWS botocore SDK 保持一致,在 5.1.0 版本中添加了 aws_access_key_id 别名。

ec2_access_key 别名已弃用,将在 2024-12-01 后的某个版本中移除。

EC2_ACCESS_KEY 环境变量的支持已弃用,将在 2024-12-01 后的某个版本中移除。

别名

布尔值

指示这是否是别名记录。

ttl 互斥。

默认为 false

选项

  • false

  • true

alias_evaluate_target_health

布尔值

是否评估别名目标的运行状况。对于 Elastic Load Balancers 的别名很有用。

选项

  • false ← (默认)

  • true

alias_hosted_zone_id

字符串

托管区域标识符。

aws_ca_bundle

路径

验证 SSL 证书时使用的 CA 证书包的位置。

还可以使用 AWS_CA_BUNDLE 环境变量。

aws_config

字典

用于修改 botocore 配置的字典。

可以在 AWS 文档中找到参数 https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html#botocore.config.Config

debug_botocore_endpoint_logs

布尔值

使用 botocore.endpoint 记录器来解析任务期间进行的唯一(而不是总计)"resource:action" API 调用,并将集合输出到任务结果中的 resource_actions 密钥。使用 aws_resource_action 回调将输出到剧本期间进行的总列表。

还可以使用 ANSIBLE_DEBUG_BOTOCORE_LOGS 环境变量。

选项

  • false ← (默认)

  • true

endpoint_url

别名:ec2_url、aws_endpoint_url、s3_url

字符串

连接到的 URL,而不是默认的 AWS 端点。虽然这可以用于连接到其他与 AWS 兼容的服务,但 amazon.aws 和 community.aws 集合仅针对 AWS 进行了测试。

还可以按优先级递减的顺序使用 AWS_URLEC2_URL 环境变量。

ec2_urls3_url 别名已弃用,将在 2024-12-01 后的某个版本中移除。

EC2_URL 环境变量的支持已弃用,将在 2024-12-01 后的某个版本中移除。

failover

字符串

仅限故障转移资源记录集。这是主资源记录集还是辅助资源记录集。允许的值为 PRIMARYSECONDARY

weightregion 互斥。

选项

  • "SECONDARY"

  • "PRIMARY"

geo_location

字典

在 community.aws 3.3.0 中添加

允许控制 Amazon Route 53 如何根据查询的地理位置来源来响应 DNS 查询。

无法创建指定相同地理位置的两个地理位置资源记录集。

无法创建与地理位置资源记录集的 Name 和 Type 元素具有相同值的非地理位置资源记录集。

continent_code

字符串

大陆的两字母代码。

同时指定 geo_location.continent_codegeo_location.country_codegeo_location.subdivision_code 将返回“InvalidInput”错误。

country_code

字符串

国家的两位字母代码。

Amazon Route 53 使用 ISO 3166-1 alpha-2 标准中指定的两位字母国家代码。

subdivision_code

字符串

美国州的两位字母代码。

要指定 geo_location.subdivision_code,必须将 geo_location.country_code 设置为 US

health_check

字符串

与该记录关联的运行状况检查

hosted_zone_id

字符串

要修改的 DNS 区域的托管区域 ID。

如果未提供参数 zone,则此参数为必填参数。

identifier

字符串

仅需为加权、基于延迟和故障转移资源记录集指定。用于区分具有相同 DNS 名称和类型的多个资源记录集的标识符。

overwrite

布尔值

如果创建时值不匹配,是否应覆盖现有记录。

选项

  • false

  • true

private_zone

布尔值

如果设置为 true,如果同时存在公共区域和私有区域,则将使用与域内请求名称匹配的私有区域。

默认情况下使用公共区域。

选项

  • false ← (默认)

  • true

profile

别名:aws_profile

字符串

用于身份验证的命名 AWS 配置文件。

有关命名配置文件的更多信息,请参见 AWS 文档 https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html

也可以使用 AWS_PROFILE 环境变量。

profile 选项与 aws_access_keyaws_secret_keysecurity_token 选项互斥。

record

字符串 / 必填

要创建或删除的完整 DNS 记录。

region

字符串

仅限基于延迟的资源记录集。对于具有相同 DNS 名称和类型的资源记录集,确定应为此基于延迟的路由关联哪个区域的值。

weightfailover 互斥。

retry_interval

整数

如果 Route 53 仍在处理之前的请求,则此模块将等待并在这么多秒后再次尝试。如果您有很多域名,则默认的 500 秒可能太长了。

默认值: 500

secret_key

别名:aws_secret_access_key, aws_secret_key, ec2_secret_key

字符串

AWS 密钥访问密钥。

有关访问令牌的更多信息,请参阅 AWS 文档 https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys

也可以按优先级递减顺序使用 AWS_SECRET_ACCESS_KEYAWS_SECRET_KEYEC2_SECRET_KEY 环境变量。

secret_keyprofile 选项互斥。

aws_secret_access_key 别名在 5.1.0 版本中添加,以与 AWS botocore SDK 保持一致。

ec2_secret_key 别名已弃用,并将在 2024-12-01 之后的一个版本中删除。

EC2_SECRET_KEY 环境变量的支持已弃用,并将在 2024-12-01 之后的一个版本中删除。

session_token

别名:aws_session_token, security_token, aws_security_token, access_token

字符串

与临时凭证一起使用的 AWS STS 会话令牌。

有关访问令牌的更多信息,请参阅 AWS 文档 https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys

也可以按优先级递减顺序使用 AWS_SESSION_TOKENAWS_SECURITY_TOKENEC2_SECURITY_TOKEN 环境变量。

security_tokenprofile 选项互斥。

别名 aws_session_tokensession_token 在 3.2.0 版本中添加,参数在 6.0.0 版本中从 security_token 重命名为 session_token

security_tokenaws_security_tokenaccess_token 别名已弃用,并将在 2024-12-01 之后的一个版本中删除。

EC2_SECRET_KEYAWS_SECURITY_TOKEN 环境变量的支持已弃用,并将在 2024-12-01 之后的一个版本中删除。

state

别名:command

字符串 / 必填

指定资源记录的状态。

选项

  • "present"

  • "absent"

  • "get"

  • "create"

  • "delete"

ttl

整数

赋予新记录的 TTL(秒)。

alias 互斥。

默认值: 3600

type

字符串 / 必填

要创建的 DNS 记录类型。

选项

  • "A"

  • "CNAME"

  • "MX"

  • "AAAA"

  • "TXT"

  • "PTR"

  • "SRV"

  • "SPF"

  • "CAA"

  • "NS"

  • "SOA"

validate_certs

布尔值

设置为 false 时,将不会验证与 AWS API 通信的 SSL 证书。

强烈建议不要设置 validate_certs=false,作为替代方案,请考虑改用 aws_ca_bundle

选项

  • false

  • true ← (默认)

value

列表 / 元素=字符串

创建 DNS 记录时的新值。对于非别名记录,允许使用 YAML 列表或多个以逗号分隔的值。

vpc_id

字符串

private_zone=true 结合使用时,这将仅修改附加到此 VPC 的私有托管区域中的记录。

这允许您拥有多个私有托管区域,所有这些区域都具有相同的名称,并附加到不同的 VPC。

wait

布尔值

等待更改复制到所有 Amazon Route 53 DNS 服务器。

选项

  • false ← (默认)

  • true

wait_timeout

整数

等待更改复制的时间(秒)。

默认值: 300

weight

整数

仅限加权资源记录集。对于具有相同 DNS 名称和类型的资源记录集,确定当前资源记录集的流量有多少部分路由到关联位置的值。

regionfailover 互斥。

zone

字符串

要修改的 DNS 区域。

如果未提供参数 hosted_zone_id,则此参数为必填参数。

注释

注意

  • 警告:对于模块,环境变量和配置文件是从 Ansible 的“主机”上下文而不是“控制器”上下文读取的。因此,可能需要将文件显式复制到“主机”。对于查找和连接插件,环境变量和配置文件是从 Ansible 的“控制器”上下文而不是“主机”上下文读取的。

  • Ansible 使用的 AWS SDK (boto3) 也可能从 Ansible 的“主机”上下文(通常为 ~/.aws/credentials)中的配置文件读取凭据和其他设置的默认值,例如区域。有关更多信息,请参见 https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html

示例

- name: Add new.foo.com as an A record with 3 IPs and wait until the changes have been replicated
  amazon.aws.route53:
    state: present
    zone: foo.com
    record: new.foo.com
    type: A
    ttl: 7200
    value: 1.1.1.1,2.2.2.2,3.3.3.3
    wait: true
- name: Update new.foo.com as an A record with a list of 3 IPs and wait until the changes have been replicated
  amazon.aws.route53:
    state: present
    zone: foo.com
    record: new.foo.com
    type: A
    ttl: 7200
    value:
      - 1.1.1.1
      - 2.2.2.2
      - 3.3.3.3
    wait: true
- name: Retrieve the details for new.foo.com
  amazon.aws.route53:
    state: get
    zone: foo.com
    record: new.foo.com
    type: A
  register: rec
- name: Delete new.foo.com A record using the results from the get command
  amazon.aws.route53:
    state: absent
    zone: foo.com
    record: "{{ rec.set.record }}"
    ttl: "{{ rec.set.ttl }}"
    type: "{{ rec.set.type }}"
    value: "{{ rec.set.value }}"
# Add an AAAA record.  Note that because there are colons in the value
# that the IPv6 address must be quoted. Also shows using the old form command=create.
- name: Add an AAAA record
  amazon.aws.route53:
    command: create
    zone: foo.com
    record: localhost.foo.com
    type: AAAA
    ttl: 7200
    value: "::1"
# For more information on SRV records see:
# https://en.wikipedia.org/wiki/SRV_record
- name: Add a SRV record with multiple fields for a service on port 22222
  amazon.aws.route53:
    state: present
    zone: foo.com
    record: "_example-service._tcp.foo.com"
    type: SRV
    value: "0 0 22222 host1.foo.com,0 0 22222 host2.foo.com"
# Note that TXT and SPF records must be surrounded
# by quotes when sent to Route 53:
- name: Add a TXT record.
  amazon.aws.route53:
    state: present
    zone: foo.com
    record: localhost.foo.com
    type: TXT
    ttl: 7200
    value: '"bar"'
- name: Add an alias record that points to an Amazon ELB
  amazon.aws.route53:
    state: present
    zone: foo.com
    record: elb.foo.com
    type: A
    value: "{{ elb_dns_name }}"
    alias: true
    alias_hosted_zone_id: "{{ elb_zone_id }}"
- name: Retrieve the details for elb.foo.com
  amazon.aws.route53:
    state: get
    zone: foo.com
    record: elb.foo.com
    type: A
  register: rec
- name: Delete an alias record using the results from the get command
  amazon.aws.route53:
    state: absent
    zone: foo.com
    record: "{{ rec.set.record }}"
    ttl: "{{ rec.set.ttl }}"
    type: "{{ rec.set.type }}"
    value: "{{ rec.set.value }}"
    alias: true
    alias_hosted_zone_id: "{{ rec.set.alias_hosted_zone_id }}"
- name: Add an alias record that points to an Amazon ELB and evaluates it health
  amazon.aws.route53:
    state: present
    zone: foo.com
    record: elb.foo.com
    type: A
    value: "{{ elb_dns_name }}"
    alias: true
    alias_hosted_zone_id: "{{ elb_zone_id }}"
    alias_evaluate_target_health: true
- name: Add an AAAA record with Hosted Zone ID
  amazon.aws.route53:
    state: present
    zone: foo.com
    hosted_zone_id: Z2AABBCCDDEEFF
    record: localhost.foo.com
    type: AAAA
    ttl: 7200
    value: "::1"
- name: Use a routing policy to distribute traffic
  amazon.aws.route53:
    state: present
    zone: foo.com
    record: www.foo.com
    type: CNAME
    value: host1.foo.com
    ttl: 30
    # Routing policy
    identifier: "host1@www"
    weight: 100
    health_check: "d994b780-3150-49fd-9205-356abdd42e75"
- name: Add a CAA record (RFC 6844)
  amazon.aws.route53:
    state: present
    zone: example.com
    record: example.com
    type: CAA
    value:
      - 0 issue "ca.example.net"
      - 0 issuewild ";"
      - 0 iodef "mailto:[email protected]"
- name: Create a record with geo_location - country_code
  amazon.aws.route53:
    state: present
    zone: '{{ zone_one }}'
    record: 'geo-test.{{ zone_one }}'
    identifier: "geohost@www"
    type: A
    value: 1.1.1.1
    ttl: 30
    geo_location:
      country_code: US
- name: Create a record with geo_location - subdivision code
  amazon.aws.route53:
    state: present
    zone: '{{ zone_one }}'
    record: 'geo-test.{{ zone_one }}'
    identifier: "geohost@www"
    type: A
    value: 1.1.1.1
    ttl: 30
    geo_location:
      country_code: US
      subdivision_code: TX

返回值

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

描述

nameservers

列表 / 元素=字符串

与区域关联的名称服务器。

返回:当 state 为“get”时

示例: ["ns-1036.awsdns-00.org.", "ns-516.awsdns-00.net.", "ns-1504.awsdns-00.co.uk.", "ns-1.awsdns-00.com."]

resource_record_sets

复杂

资源记录的具体信息。

返回:当 state 为“get”时

别名

布尔值

这是否是别名。

返回:始终

示例: false

failover

字符串

这是否是主资源记录集还是辅助资源记录集。

返回:始终

示例: "PRIMARY"

geo_location

字典

在 community.aws 3.3.0 中添加

基于地理位置,Route53 根据此位置响应 DNS 查询。

返回:已配置时

示例: {"continent_code": "NA", "country_code": "US", "subdivision_code": "CA"}

health_check

字符串

与该记录关联的健康检查。

返回:始终

identifier

字符串

一个标识符,用于区分具有相同 DNS 名称和类型的多个资源记录集。

返回:始终

名称

字符串

记录集的域名。

返回:始终

示例: "new.foo.com"

record

字符串

记录集的域名。

返回:始终

示例: "new.foo.com"

region

字符串

应为此关联的区域,用于基于延迟的路由。

返回:始终

示例: "us-west-2"

resource_records

列表 / 元素=字符串

有关要操作的资源记录的信息。

返回:始终

示例: [{"value": "1.1.1.1"}]

ttl

字符串

资源记录缓存 TTL。

返回:始终

示例: "3600"

type

字符串

资源记录集类型。

返回:始终

示例: "A"

value

字符串

记录值。

返回:始终

示例: "52.43.18.27"

values

列表 / 元素=字符串

记录值。

返回:始终

示例: ["52.43.18.27"]

weight

字符串

记录的权重。

返回:始终

示例: "3"

zone

字符串

此记录集所属的区域。

返回:始终

示例: "foo.bar.com"

wait_id

字符串

在 amazon.aws 6.3.0 中添加

应用更改的等待 ID。当 wait=false 时,可用于稍后等待更改传播。

返回:已更改时

作者

  • Bruce Pennypacker (@bpennypacker)

  • Mike Buzzetti (@jimbydamonk)