route53 – добавление или удаление записей в DNS-сервисе Amazons Route53
Описание
- Создаёт и удаляет записи DNS в сервисе Amazons Route53
Требования
Ниже перечислены требования к хосту, на котором будет выполняться этот модуль.
- python >= 2.6
- boto
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| alias boolean |
| Указывает, является ли это записью псевдонима. |
| alias_evaluate_target_health boolean |
| Выполнять ли проверку состояния целевого объекта псевдонима. Полезно для псевдонимов балансировщиков нагрузки Elastic Load Balancers. |
| alias_hosted_zone_id - | Идентификатор размещённой зоны. | |
| aws_access_key string | Ключ доступа AWS. Если не задан, используется значение переменной окружения AWS_ACCESS_KEY_ID, AWS_ACCESS_KEY или EC2_ACCESS_KEY. Псевдонимы: ec2_access_key, access_key | |
| aws_secret_key string | Секретный ключ AWS. Если не задан, используется значение переменной окружения AWS_SECRET_ACCESS_KEY, AWS_SECRET_KEY или EC2_SECRET_KEY. Псевдонимы: ec2_secret_key, secret_key | |
| debug_botocore_endpoint_logs boolean добавлено в 2.8 |
| Использовать регистратор botocore.endpoint для анализа уникальных (а не общих) API-вызовов «ресурс:действие», выполненных во время задачи, выводя набор в ключ resource_actions результатов задачи. Используйте обратный вызов aws_resource_action, чтобы вывести общий список, сделанный во время выполнения playbook. Также можно использовать переменную окружения ANSIBLE_DEBUG_BOTOCORE_LOGS. |
| ec2_url string | URL для подключения к EC2 или вашей облачной среде Eucalyptus (по умолчанию модуль использует конечные точки EC2). Игнорируется для модулей, где требуется регион. Должен быть указан для всех остальных модулей, если регион не используется. Если не задан, используется значение переменной окружения EC2_URL, если она существует. | |
| failover - | Только для наборов записей ресурсов с резервированием. Указывает, является ли это основной или резервной записью набора. Разрешенные значения: PRIMARY и SECONDARY | |
| health_check - | Проверка состояния для ассоциации с этой записью | |
| hosted_zone_id - | Идентификатор зоны размещения DNS-зоны для изменения Этот параметр обязателен, если параметр zone не указан. | |
| identifier - | Должен быть указан только для наборов записей ресурсов с балансировкой по весу, задержке и резервированию. Идентификатор, различающий несколько наборов записей ресурсов, имеющих одинаковую комбинацию имени и типа DNS. | |
| overwrite boolean |
| Необходимо ли перезаписывать существующую запись при создании, если значения не совпадают |
| private_zone boolean |
| Если установлено значение yes, будет использоваться частная зона, соответствующая запрошенному имени в домене, если есть как публичные, так и частные зоны. По умолчанию используется публичная зона. |
| profile string | Использует профиль boto. Работает только с boto >= 2.24.0. | |
| record - / обязательно | Полная запись DNS для создания или удаления | |
| region - | Только для наборов записей ресурсов с балансировкой по задержке. Среди наборов записей ресурсов с одинаковым сочетанием имени и типа DNS, значение, определяющее, с какой областью должна быть связана эта запись для маршрутизации по задержке | |
| retry_interval - | По умолчанию: 500 | В случае, если Route53 всё ещё обрабатывает предыдущий запрос, этот модуль будет ожидать и повторит попытку через заданное количество секунд. Если у вас много доменных имён, значение по умолчанию в 500 секунд может быть слишком большим. |
| security_token string | Токен безопасности AWS STS. Если не задан, используется значение переменной окружения AWS_SECURITY_TOKEN или EC2_SECURITY_TOKEN. Псевдонимы: access_token | |
| state - / обязательно |
| Определяет состояние ресурса записи. С Ansible 2.4, опция command изменена на state по умолчанию, и добавлены варианты «есть» и «отсутствует», но command всё ещё работает. Псевдонимы: command |
| ttl - | По умолчанию: "3600 (один час)" | TTL для новой записи |
| type - / обязательно |
| Тип записи DNS для создания |
| validate_certs boolean |
| Если установлено в «нет», сертификаты SSL не будут проверены для версий boto >= 2.6.0. |
| value - | Новое значение при создании записи DNS. Разрешены списки YAML или несколько значений, разделённых запятыми, для записей, не являющихся псевдонимами. При удалении записи все значения для записи должны быть указаны, иначе Route53 её не удалит. | |
| vpc_id - | При использовании совместно с private_zone: true, это позволит изменять только записи в частной зоне размещения, присоединённой к этой VPC. Это позволяет иметь несколько частных зон размещения с одинаковым именем, присоединённых к различным VPC. | |
| wait boolean |
| Ожидать, пока изменения не будут реплицированы на все серверы DNS Amazon Route 53. |
| wait_timeout - | По умолчанию: 300 | Сколько времени ожидать репликации изменений, в секундах. |
| weight - | Только для наборов записей ресурсов с балансировкой по весу. Среди наборов записей ресурсов с одинаковым сочетанием имени и типа DNS, значение, определяющее, какая часть трафика для текущего набора записей ресурсов маршрутизируется в соответствующее местоположение. | |
| zone - | DNS-зона для изменения Этот параметр обязателен, если параметр hosted_zone_id не указан. |
Примечания
Примечание
- Если параметры не установлены в модуле, следующие переменные среды могут быть использованы в порядке убывания приоритета
AWS_URLилиEC2_URL,AWS_ACCESS_KEY_IDилиAWS_ACCESS_KEYилиEC2_ACCESS_KEY,AWS_SECRET_ACCESS_KEYилиAWS_SECRET_KEYилиEC2_SECRET_KEY,AWS_SECURITY_TOKENилиEC2_SECURITY_TOKEN,AWS_REGIONилиEC2_REGION - Ansible использует файл конфигурации boto (обычно ~/.boto), если учетные данные не предоставлены. См. https://boto.readthedocs.io/en/latest/boto_config_tut.html
-
AWS_REGIONилиEC2_REGIONобычно используются для указания региона AWS, если требуется, но это также можно настроить в файле конфигурации boto
Примеры
# Add new.foo.com as an A record with 3 IPs and wait until the changes have been replicated
- 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: yes
# Update new.foo.com as an A record with a list of 3 IPs and wait until the changes have been replicated
- 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: yes
# Retrieve the details for new.foo.com
- route53:
state: get
zone: foo.com
record: new.foo.com
type: A
register: rec
# Delete new.foo.com A record using the results from the get command
- 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.
- route53:
command: create
zone: foo.com
record: localhost.foo.com
type: AAAA
ttl: 7200
value: "::1"
# Add a SRV record with multiple fields for a service on port 22222
# For more information on SRV records see:
# https://en.wikipedia.org/wiki/SRV_record
- 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"
# Add a TXT record. Note that TXT and SPF records must be surrounded
# by quotes when sent to Route 53:
- route53:
state: present
zone: foo.com
record: localhost.foo.com
type: TXT
ttl: 7200
value: '"bar"'
# Add an alias record that points to an Amazon ELB:
- 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 }}"
# Retrieve the details for elb.foo.com
- route53:
state: get
zone: foo.com
record: elb.foo.com
type: A
register: rec
# Delete an alias record using the results from the get command
- 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 }}"
# Add an alias record that points to an Amazon ELB and evaluates it health:
- 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
# Add an AAAA record with Hosted Zone ID.
- route53:
state: present
zone: foo.com
hosted_zone_id: Z2AABBCCDDEEFF
record: localhost.foo.com
type: AAAA
ttl: 7200
value: "::1"
# Use a routing policy to distribute traffic:
- 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"
# Add a CAA record (RFC 6844):
- route53:
state: present
zone: example.com
record: example.com
type: CAA
value:
- 0 issue "ca.example.net"
- 0 issuewild ";"
- 0 iodef "mailto:security@example.com"
Значения возврата
Общие значения возврата документированы здесь, следующие — поля, уникальные для этого модуля:
| Ключ | Возвращаемое значение | Описание | |
|---|---|---|---|
| nameservers список | при состоянии 'get' | серверы имен, связанные с зоной Пример: ['ns-1036.awsdns-00.org.', 'ns-516.awsdns-00.net.', 'ns-1504.awsdns-00.co.uk.', 'ns-1.awsdns-00.com.'] | |
| set сложное | при состоянии 'get' | информация, специфичная для записи ресурса | |
| alias булево | всегда | является ли это псевдонимом | |
| failover NoneType | всегда | | |
| health_check NoneType | всегда | чек-контроль работоспособности, связанный с этой записью | |
| identifier NoneType | всегда | | |
| record строка | всегда | доменное имя для набора записей Пример: new.foo.com. | |
| region None | всегда | | |
| ttl строка | всегда | время жизни кэша записи ресурса Пример: 3600 | |
| type строка | всегда | тип набора записей Пример: A | |
| value строка | всегда | значение Пример: 52.43.18.27 | |
| values список | всегда | значения Пример: ['52.43.18.27'] | |
| weight строка | всегда | вес записи Пример: 3 | |
| zone строка | всегда | зона, к которой принадлежит этот набор записей Пример: foo.bar.com. | |
Статус
- Этот модуль гарантирует обратную совместимость изменений интерфейса в будущем. [stableinterface]
- Этот модуль поддерживается сообществом Ansible. [community]
Авторы
- Bruce Pennypacker (@bpennypacker)
- Mike Buzzetti (@jimbydamonk)
Подсказка
Если вы заметили какие-либо проблемы в этой документации, вы можете отредактировать этот документ, чтобы улучшить его.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.9/modules/route53_module.html