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 仓库直接安装

有时一些更改已应用到 developfeature 分支,并尚未发布。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

这个角色包含安装任务和配置任务,这些任务标记为 installconfigure,可以单独运行或一起运行。这个角色有创建 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 允许使用 dockervagrant 在本地测试 ansible 角色。 它还帮助运行像 serverspectestinfra 这样的验证。

所有这些都使得测试这个角色变得更加简单。

安装所需的软件包

  • 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,例如 testinfraserverspec 等。这个 --sudo 选项对 ansible 的运行没有影响。

关于项目

A highly configurable role for BIND (named) versions >9

安装
ansible-galaxy install marcinpraczko.named
许可证
gpl-2.0
下载
75
拥有者