lucab85.ansible_role_bind

Ansible ロール: BIND

CI

このロールは、Fedora、CentOS、RHEL7/8、Debian、Ubuntu において、1 つ以上のドメインに対して(マスターおよび/またはスレーブとして)BIND9 DNS サービスをインストールおよび設定します。

要件

特別な要件はありません。ルートアクセスが必要なので、以下のように 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; };'

この例では、ポリシーに使用できる 2 つの IPv4 アドレスを持つ acl trusted を定義しました。必要に応じて変更してください。

出力例:

#
# 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 によって適用されます。 ゾーン設定は、Fedora/CentOS/RHEL および Debian/Ubuntu 用の補助設定ファイル /etc/named/named.conf.local に適用されます(プラットフォーム固有)。 ゾーンレコードは、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

作者情報

このロールは、Luca Berton によって 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
ライセンス
mit
ダウンロード
311
所有者
Ansible Automation Engineer with Open Source passion: (Ansible, Progressive Web Applications, Cloud Computing, IoT, GNU/Linux)