marcinpraczko.named
快速信息
这个角色是以下仓库的一个分支:
创建这个分支并进行调整的原因:
Named
仍然在使用,拥有一个能用的角色是很好的。- 这个角色结构优良,在配置上灵活。
- 这个角色自2015年以来就没有解决一些问题,无法开箱即用。
Ansible角色-named
版本: 0.1.4
- 需要 Ansible 2.0 及以上
- 兼容大多数版本的 RHEL/CentOS 6.x, 7.x, Debian, 和 Ubuntu
安装
直接从 ansible-galaxy(最新版本)
$ ansible-galaxy install marcinpraczko.named
从 GitHub 仓库直接安装
有时一些更改已应用到 develop
或 feature
分支,并尚未发布。Ansible-galaxy 允许直接从 GitHub
安装角色。
mkdir testing-roles
cd testing-roles
ansible-galaxy install -p roles git+https://github.com/marcinpraczko/ansible-role-named.git,develop
以上示例将安装 develop
分支。可以根据需求调整为任何 git SHA 提交、标签或分支名称。
可以使用以下命令检查已安装的版本:
ansible-galaxy list -p roles
开始使用
安装 BIND (named)
安装 BIND (named)
及所有所需依赖项非常简单,可以在配置之前或单独进行:
只安装
$ ansible-playbook -t install -i hosts named.yml
运行整个剧本
$ ansible-playbook -i hosts named.yml
示例剧本、主机和组变量
示例剧本
- name: "使主服务器进入正常状态所需的操作"
hosts: named_masters
remote_user: root
roles:
- "marcinpraczko.named"
- name: "使从服务器进入正常状态所需的操作"
hosts: named_slaves
remote_user: root
roles:
- "marcinpraczko.named"
示例主机
[named_masters]
127.0.0.1
#[named_slaves]
#127.0.0.1
示例组变量
named_masters:
named_acls:
public_slaves:
- 8.8.8.8
- 9.9.9.9
private_slaves:
- 192.168.25.5
- 192.168.25.6
named_zones:
# 注意这里的 _,这使得 ansible 更加友好,并将在配置中被替换
# 和区自动化。
foo_com:
type: master
allow_transfer:
- public_slaves
ttl: 3000
named_slaves:
named_zones_create_masters: False
named_zones:
# 注意这里的 _,这使得 ansible 更加友好,并将在配置中被替换
# 和区自动化。
foo_com:
type: slave
master:
- 7.7.7.7
这个角色包含安装任务和配置任务,这些任务标记为 install
或 configure
,可以单独运行或一起运行。这个角色有创建 named.conf
文件和 included.conf
文件的操作,这些文件将包含 ACLs 和区域,并动态生成基于默认值或组变量的区域文件。
可配置项
在这个角色中有很多可配置项,以下是默认值的汇总列表
(最新的列表可以在 defaults/main.yml
中找到):
## 安装选项
named_conf_file_location: /etc/named.conf
# 确保这些值根据你的操作系统是正确的
named_user: named
named_group: named
named_service_name: named
# Monit 相关设置
named_monit_enable: False
named_monit_service_name: monit
named_monit_conf_directory: /etc/monit.d
named_pid_file: /var/run/named/named.pid
named_service_file: /etc/init.d/named
## 基础配置选项
# 选项部分
named_conf_listen_on_port: 53
named_conf_listen_on_interface:
- 127.0.0.1
named_conf_listen_on_v6_port: 53
named_conf_listen_on_v6_interface:
- ::1
named_conf_notify: "no"
named_conf_forwarders:
- 7.7.7.7
- 7.7.8.8
named_conf_directory: /var/named
named_conf_dump_file: /var/named/data/cache_dump.db
named_conf_statistics_file: /var/named/data/named_stats.txt
named_conf_memstatistics_file: /var/named/data/named_mem_stats.txt
named_conf_allow_query:
- any
#named_conf_allow_transfer: none
named_conf_recursion: no
named_conf_dnssec_enable: yes
named_conf_dnssec_validation: yes
named_conf_dnssec_lookaside: auto
named_conf_bindkeys_file: /etc/named.iscdlv.key
named_conf_managed_keys_directory: /var/named/dynamic
# 日志部分
named_conf_logging_channel: default_debug
named_conf_logging_file_directory: /var/log/named
named_conf_logging_file: named.log
named_conf_logging_severity: info
named_conf_logging_print_severity: yes
named_conf_logging_print_time: yes
named_conf_logging_print_category: yes
named_conf_logging_category_name: default
named_conf_logging_categories:
- default_debug
named_conf_includes_directory: /etc/named
### 没有默认的 acl 或 includes
## 主设置
# 这个设置决定是否应该在声明的主目录中创建区域文件。
# 如果你正在配置一个从服务器,通常不想创建这些。
named_zones_create_masters: True
### 区配置默认值
named_conf_zone_ttl: 21600
named_conf_zone_soa: foo.com. noc.foo.com.
named_conf_zone_refresh: 21600
named_conf_zone_retry: 600
named_conf_zone_expire: 86400
named_conf_zone_expire_min: 3000
注意,你可以为动态区域文件创建指定默认变量,这可以大大减少 group_var
文件,因为你只需要为需要超出默认的区域设置覆盖。
事实
以下事实可以在你的清单中或角色之外访问。
{{ ansible_local.named.interfaces_ipv4 }}
{{ ansible_local.named.interfaces_ipv6 }}
{{ ansible_local.named.port_ipv4 }}
{{ ansible_local.named.port_ipv6 }}
测试
- 最初这个角色只有
travis
文件。 - 添加了
molecule
配置以便允许在本地测试这个角色。
Molecule
允许使用 docker
或 vagrant
在本地测试 ansible 角色。
它还帮助运行像 serverspec
或 testinfra
这样的验证。
所有这些都使得测试这个角色变得更加简单。
安装所需的软件包
- Docker
- Vagrant
安装 molecule
- 在你的系统上安装 Python 虚拟环境。
- 在 Python 虚拟环境中安装
molecule
。
virtualenv venv
source venv/bin/activate
# 更新常用的 pip 包
pip install -U pip setuptools wheel
# 安装带有所需 Python 包的 molecule
pip install -r tests/requirements.txt
使用 molecule 测试
使用以下命令应允许使用 Vagrant 驱动程序测试角色。
注意:首次运行以下命令会耗时较长(完整的 Vagrant 镜像必须下载到本地)。
molecule test --sudo
以上命令将仅在验证工具上运行 --sudo
,例如 testinfra
或 serverspec
等。这个 --sudo
选项对 ansible 的运行没有影响。