lucab85.ansible_role_bind
Ansible 角色: BIND
在 Fedora/Centos/RHEL7/8 和 Debian/Ubuntu 上安装和配置 BIND9 DNS 服务,使其作为一个或多个域(主服务器和/或从服务器)的权威服务器,并带有自定义区域和反向配置。
需求
没有特别的要求;请注意,该角色需要具有 root 权限,因此请在包含全局 become: yes
的剧本中运行,或者像这样在你的剧本中调用该角色:
- hosts: dns
roles:
- role: lucab85.ansible_role_bind
become: yes
角色变量
可用变量及其默认值在 defaults/main.yml 文件中列出。
主要配置
bind_main_config_settings
中的所有设置应用于 Fedora/CentOS/RHEL 的主配置文件 /etc/named.conf
或 Debian/Ubuntu 的 /etc/bind/named.conf
(平台特定)。
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 定义(平台特定)。
区域记录存储在 Fedora/CentOS/RHEL 的 /var/named/[[ example.com.zone ]]
或 Debian/Ubuntu 的 /var/lib/bind/[[ example.com.zone ]]
中(平台特定)。
示例:
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 年由 Luca Berton 创建,他是 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