ansible_role_bind
Ansible Роль: BIND
Устанавливает и настраивает DNS-сервис BIND9 на Fedora/Centos/RHEL7/8 и Debian/Ubuntu в качестве авторитативного для одного или нескольких доменов (мастер и/или слейв) с настроенными зонами и обратной связью.
Требования
Нет особых требований; обратите внимание, что для этой роли требуется root-доступ, поэтому запускайте её в плейбуке с глобальным become: yes
или вызывайте роль в вашем плейбуке следующим образом:
- hosts: dns
roles:
- role: lucab85.ansible_role_bind
become: yes
Переменные роли
Доступные переменные перечислены вместе с значениями по умолчанию в файле defaults/main.yml.
Основная конфигурация
Все настройки из bind_main_config_settings
применяются в главном конфигурационном файле /etc/named.conf
для Fedora/CentOS/RHEL или /etc/bind/named.conf
для Debian/Ubuntu (в зависимости от платформы).
Все настройки из bind_main_options_settings
применяются в главном конфигурационном файле внутри тега options { }
.
Пример:
bind_main_options_settings:
- option: listen-on port
value: '53 { 127.0.0.1; 10.0.1.1; };'
- option: allow-query
value: '{ trusted; };'
- option: forwarders
value: '{ 8.8.8.8; 8.8.4.4; };'
- option: listen-on-v6
value: '{ any; };'
- option: dnssec-validation
value: 'auto;'
Обратите внимание, что в этом примере 10.0.1.1 - это IPv4 адрес целевой машины, подстраивайте по необходимости.
bind_main_config_settings:
- option: acl "trusted"
value: '{ 10.0.1.1; 10.0.1.2; };'
В этом примере я определил acl trusted с двумя IPv4 адресами, которые мы можем использовать для нашей политики (смотрите ниже), подстраивайте по необходимости.
Пример вывода:
#
# Сгенерировано Ansible: НЕ редактируйте этот файл вручную!
#
options {
directory "/var/named";
listen-on port 53 { 127.0.0.1; 10.0.1.1; };
allow-query { trusted; };
forwarders { 8.8.8.8; 8.8.4.4; };
listen-on-v6 { any; };
dnssec-validation auto;
};
acl "trusted" { 10.0.1.1; 10.0.1.2; };
include "/etc/named/named.conf.local";
Конфигурация зон
Настройки зон определяются в bind_zones_entries
и применяются с помощью шаблона определения зон zone.j2
.
Настройки зон определяются в дополнительном конфигурационном файле /etc/named/named.conf.local
для Fedora/CentOS/RHEL и Debian/Ubuntu (в зависимости от платформы).
Записи зон хранятся в /var/named/[[ example.com.zone ]]
для Fedora/CentOS/RHEL или /var/lib/bind/[[ example.com.zone ]]
для Debian/Ubuntu (в зависимости от платформы).
Пример:
bind_zones_entries:
- name: "example.com"
file: "example.com.zone"
type: "master"
options: "allow-update { none; };"
ttl: 86400
records:
- name: "@"
type: "SOA"
value: "dns1.example.com. hostmaster.example.com. (2001062501 21600 3600 604800 86400)"
- name: "@"
type: "NS"
value: "dns1.example.com."
- name: "@"
type: "NS"
value: "dns2.example.com."
- name: "dns1"
type: "A"
value: "10.0.1.1"
- name: "dns2"
[...]
Пример локального вывода: /etc/named/named.conf.local
#
# Сгенерировано Ansible: НЕ редактируйте этот файл вручную!
#
zone "example.com" IN {
type master;
file "example.com.zone";
allow-update { none; };
};
zone "1.0.10.in-addr.arpa" IN {
type master;
file "example.com.rr.zone";
allow-update { none; };
};
Пример вывода: /var/named/example.com.zone
$ORIGIN example.com.
$TTL 86400;
@ IN SOA dns1.example.com. hostmaster.example.com. (2001062501 21600 3600 604800 86400)
@ IN NS dns1.example.com.
@ IN NS dns2.example.com.
dns1 IN A 10.0.1.1
dns2 IN A 10.0.1.2
@ IN MX 10 mail1.example.com.
@ IN MX 20 mail2.example.com.
mail1 IN A 10.0.1.5
mail2 IN A 10.0.1.6
services IN A 10.0.1.10
services IN A 10.0.1.11
ftp IN CNAME services.example.com.
wwww IN CNAME services.example.com.
Конфигурация обратной зоны
Точно так же, как и для "конфигурации зон", вы можете настроить и обратную зону.
Пример:
- name: "1.0.10.in-addr.arpa"
file: "example.com.rr.zone"
type: "master"
options: "allow-update { none; };"
ttl: 86400
records:
- name: "@"
type: "SOA"
value: "dns1.example.com. hostmaster.example.com. (2001062501 21600 3600 604800 86400)"
- name: "@"
type: "NS"
value: "dns1.example.com."
- name: "@"
type: "NS"
value: "dns2.example.com."
- name: "1"
type: "PTR"
value: "dns1.example.com."
[...]
Пример вывода: /var/named/example.com.rr.zone
$ORIGIN 1.0.10.in-addr.arpa.
$TTL 86400;
@ IN SOA dns1.example.com. hostmaster.example.com. (2001062501 21600 3600 604800 86400)
@ IN NS dns1.example.com.
@ IN NS dns2.example.com.
@ IN NS dns1.example.com.
1 IN PTR dns1.example.com.
2 IN PTR dns2.example.com.
5 IN PTR mail1.example.com.
6 IN PTR mail2.example.com.
10 IN PTR services.example.com.
11 IN PTR services.example.com.
Смотрите документацию BIND для определения конкретных записей.
Зависимости
Отсутствуют.
Пример плейбука
- hosts: dns
become: yes
vars_files:
- vars/main.yml
roles:
- lucab85.ansible_role_bind
Настройте переменные в vars/main.yml
:
bind_zones_entries:
- name: "example.com"
file: "example.com.zone"
type: "master"
options: "allow-update { none; };"
ttl: 86400
records:
- name: "@"
type: "SOA"
value: "dns1.example.com. hostmaster.example.com. (2001062501 21600 3600 604800 86400)"
- name: "@"
type: "NS"
value: "dns1.example.com."
- name: "@"
type: "NS"
value: "dns2.example.com."
- name: "dns1"
type: "A"
value: "10.0.1.1"
- name: "dns2"
[...]
Лицензия
MIT / BSD
Информация об авторе
Эта роль была создана в 2021 году Лукой Берто́н, автором Ansible Pilot.
Ansible Pilot
Больше информации:
Пожертвовать
Спасибо за поддержку:
Setup a BIND9 DNS service on Fedora/Centos/RHEL7/8 and Debian/Ubuntu target as authoritative for one or more domains (master and/or slave) with customized zone and reverse.
ansible-galaxy install lucab85/ansible-role-bind