reallyenglish.nsd

ansible-role-nsd

Konfiguracja NSD

Uwagi dotyczące CentOS

Zostanie zainstalowana niestandardowa polityka SELinux, aby obejść błąd (Bug 1311299 - Nie można uruchomić nsd z włączonym selinux). Polityka ta została stworzona, aby wspierać CentOS w całości. Autor nie jest ekspertem w zakresie SELinux.

Wymagania

Wymaga reallyenglish.redhat-repo dla CentOS. Chociaż rola na nim polega, inne platformy tego nie wymagają.

Zmienne roli

Zmienna Opis Domyślna wartość
nsd_user Użytkownik nsd {{ __nsd_user }}
nsd_group Grupa nsd {{ __nsd_group }}
nsd_db_dir Ścieżka do katalogu bazy danych {{ __nsd_db_dir }}
nsd_run_dir Ścieżka do katalogu wykonawczego {{ __nsd_run_dir }}
nsd_state_dir Ścieżka do katalogu stanu {{ __nsd_state_dir }}
nsd_service Nazwa usługi nsd nsd
nsd_conf_dir Ścieżka do katalogu konfiguracyjnego {{ __nsd_conf_dir }}
nsd_conf Ścieżka do nsd.conf {{ nsd_conf_dir }}/nsd.conf
nsd_config_server Lista konfiguracji w dyrektywie server (patrz poniżej) []
nsd_config_remote_control Lista konfiguracji w dyrektywie remote-control (patrz poniżej) []
nsd_flags (niezaimplementowane) ""
nsd_remote_setup Uruchom nsd-control-setup w celu utworzenia certyfikatów samopodpisanych. Gdy false, musisz podać certyfikaty i klucze (użyj reallyenglish.x509-certificate i zobacz przykład w tests/serverspec/remote_control_with_variables.yml) false
nsd_zones Słownik stref (patrz poniżej) {}
nsd_include_role_x509_certificate Dołącz i wykonaj reallyenglish.x509-certificate podczas odgrywania, jeśli tak (patrz poniżej) nie

nsd_config_server

Ta zmienna to lista słowników lub ciągów dla dyrektywy server w nsd.conf(5).

Gdy element nsd_config_server jest słownikiem, musi mieć obowiązkowy klucz name. Musi też mieć klucz values lub value. Wartość values to lista ciągów. Użyj values dla opcji, które mogą wystąpić wiele razy w nsd.conf(5). Wartość value to ciąg używany jako wartość dla opcji.

Gdy element nsd_config_server jest ciągiem, jest dodawany do sekcji server jako taki.

Przykład:

    nsd_config_server:
      - "server-count: 1"
      - name: ip-address
        values: "{{ ansible_all_ipv4_addresses }} + {{ ['127.0.0.1'] }}"
      - name: do-ip4
        value: "yes"
      - name: do-ip6
        value: "no"
      - name: verbosity
        value: 0
      - name: username
        value: "{{ nsd_user }}"
      - name: zonesdir
        value: '"{{ nsd_conf_dir }}"'
      - name: database
        value: '"{{ nsd_db_dir }}/nsd.db"'
      - name: pidfile
        value: '"{{ nsd_run_dir }}/nsd.pid"'
      - name: xfrdfile
        value: '"{{ nsd_state_dir }}/xfrd.state"'
      - name: hide-version
        value: "yes"

nsd_config_remote_control

Ta zmienna to lista słowników lub ciągów dla dyrektywy remote-control w nsd.conf(5).

Te same zasady opisane w nsd_config_server mają zastosowanie.

nsd_zones

Ta zmienna to słownik stref. Klucze to nazwy domen stref. Każdy klucz musi mieć słownik jako wartość i jest wyjaśniony poniżej.

Klucz Wartość Obowiązkowy?
zonefile względna ścieżka do pliku strefy z nsd_conf_dir nie
zone definicja strefy nie
config lista konfiguracji strefy (patrz poniżej) nie

config to lista konfiguracji dla strefy. Element może być słownikiem lub ciągiem.

Gdy element config jest słownikiem, musi mieć obowiązkowy klucz name, który jest jedną z opcji stref opisanych w nsd.conf(5). Słownik musi mieć klucz values lub value. values to lista wartości ciągów dla opcji. Użyj values, gdy opcje mogą wystąpić wielokrotnie. value jest ciągiem dla opcji.

Gdy element config jest ciągiem, ciąg jest po prostu dodawany do konfiguracji strefy.

Przykład:

nsd_zones:
  example.com:
    zonefile: example.com.zone
    zone: |
      example.com. 86400 IN SOA ns1.example.com. hostmaster.example.com. 2013020201 10800 3600 604800 3600
      example.com. 86400 IN NS ns1.example.com.
      example.com. 120 IN A 192.168.0.1
      ns1.example.com. 120 IN A 192.168.0.1
      mail.example.com. 120 IN A 192.168.0.1
      example.com. 120 IN MX 25 mail.example.com.
    config:
      - name: provide-xfr
        values:
          - 192.168.133.101 my_tsig_key
          - 127.0.0.1 NOKEY
      - name: allow-notify
        value: 192.168.0.111 NOKEY
      - name: request-xfr
        values:
          - 192.168.0.111 NOKEY
      - name: outgoing-interface
        values:
          - 192.168.0.1
      - 'allow-axfr-fallback: yes'

nsd_include_role_x509_certificate

Gdy tak, ta zmienna obejmuje i wykonuje reallyenglish.x509 w trakcie odgrywania, co umożliwia zarządzanie certyfikatami bez niepotrzebnych hacków. To jest wspierane tylko w wersji ansible co najmniej 2.2 i nowszych (ale zobacz również problem #34 dla możliwych błędów).

Potwierdzono, że działa:

platforma wersja ansible
CentOS 2.3.1.0

Zobacz przykład w tests/serverspec/x509.yml.

Jeśli wymagania dotyczące wersji ansible nie mogą być spełnione lub twoja wersja ansible nie działa z nsd_include_role_x509_certificate, potrzebujesz pewnych haków. Zobacz przykład w tests/serverspec/remote_control_with_variables.yml.

Debian

Zmienna Domyślna wartość
__nsd_user nsd
__nsd_group nsd
__nsd_db_dir /var/lib/nsd
__nsd_conf_dir /etc/nsd
__nsd_run_dir /var/run/nsd
__nsd_state_dir {{ nsd_db_dir }}

FreeBSD

Zmienna Domyślna wartość
__nsd_user nsd
__nsd_group nsd
__nsd_db_dir /var/db/nsd
__nsd_conf_dir /usr/local/etc/nsd
__nsd_run_dir /var/run/nsd
__nsd_state_dir {{ nsd_db_dir }}

OpenBSD

Zmienna Domyślna wartość
__nsd_user _nsd
__nsd_group _nsd
__nsd_db_dir /var/nsd/db
__nsd_conf_dir /var/nsd/etc
__nsd_run_dir /var/nsd/run
__nsd_state_dir {{ nsd_run_dir }}

RedHat

Zmienna Domyślna wartość
__nsd_user nsd
__nsd_group nsd
__nsd_db_dir /var/lib/nsd
__nsd_conf_dir /etc/nsd
__nsd_run_dir /var/run/nsd
__nsd_state_dir {{ nsd_db_dir }}

Zależności

Brak

Przykład Playbook

- hosts: localhost
  roles:
    - ansible-role-nsd
  vars:
    nsd_config_server:
      - "server-count: 1"
      - name: ip-address
        values: "{{ ansible_all_ipv4_addresses }} + {{ ['127.0.0.1'] }}"
      - name: do-ip4
        value: "yes"
      - name: do-ip6
        value: "no"
      - name: verbosity
        value: 0
      - name: username
        value: "{{ nsd_user }}"
      - name: zonesdir
        value: '"{{ nsd_conf_dir }}"'
      - name: database
        value: '"{{ nsd_db_dir }}/nsd.db"'
      - name: pidfile
        value: '"{{ nsd_run_dir }}/nsd.pid"'
      - name: xfrdfile
        value: '"{{ nsd_state_dir }}/xfrd.state"'
      - name: hide-version
        value: "yes"
    nsd_remote_enable: "{% if ansible_os_family == 'FreeBSD' %}False{% else %}true{% endif %}"
    nsd_remote_setup: "{% if ansible_os_family == 'FreeBSD' %}False{% else %}true{% endif %}"
    nsd_config_remote_control:
      - "control-enable: {% if ansible_os_family == 'FreeBSD' %}no{% else %}yes{% endif %}"
    nsd_keys:
      my_tsig_key:
        secret: Qes2X7V8Fjg+EMlqng1qlCvErGFxXWa4Gxfy1uDWKvQ=
        algorithm: hmac-sha256
    nsd_zones:
      example.com:
        zonefile: example.com.zone
        zone: |
          example.com. 86400 IN SOA ns1.example.com. hostmaster.example.com. 2013020201 10800 3600 604800 3600
          example.com. 86400 IN NS ns1.example.com.
          example.com. 120 IN A 192.168.0.1
          ns1.example.com. 120 IN A 192.168.0.1
          mail.example.com. 120 IN A 192.168.0.1
          example.com. 120 IN MX 25 mail.example.com.
        config:
          - name: provide-xfr
            values:
              - 192.168.133.101 my_tsig_key
              - 127.0.0.1 NOKEY
          - name: allow-notify
            value: 192.168.0.111 NOKEY
          - name: request-xfr
            values:
              - 192.168.0.111 NOKEY
          - name: outgoing-interface
            values:
              - 192.168.0.1
          - 'allow-axfr-fallback: yes'
      example.net:
        zonefile: example.net.zone
        zone: |
          example.net. 86400 IN SOA ns1.example.net. hostmaster.example.net. 2013020201 10800 3600 604800 3600
          example.net. 86400 IN NS ns1.example.net.
          example.net. 120 IN A 192.168.0.1
          ns1.example.net. 120 IN A 192.168.0.1
          mail.example.net. 120 IN A 192.168.0.1
          example.net. 120 IN MX 25 mail.example.net.
        config: []

    redhat_repo_extra_packages:
      - epel-release
    redhat_repo:
      epel:
        mirrorlist: "http://mirrors.fedoraproject.org/mirrorlist?repo=epel-{{ ansible_distribution_major_version | default(7) }}&arch={{ ansible_architecture }}"
        gpgcheck: yes
        enabled: yes

Przykład master-slave można znaleźć w tests/integration/example.

Licencja

Copyright (c) 2016 Tomoyuki Sakurai <[email protected]>

Zezwolenie na używanie, kopiowanie, modyfikowanie i rozpowszechnianie tego oprogramowania dla dowolnego
celu, z lub bez opłaty, jest niniejszym udzielone, pod warunkiem, że powyższy
informacja o prawach autorskich i to zezwolenie pojawią się we wszystkich kopiach.

OPROGRAMOWANIE JEST DOSTARCZANE "TAK JEST", A AUTOR NIE PONOSI ODPOWIEDZIALNOŚCI
ZA WSZELKIE GWARANCJE W ZWIĄZKU Z TYM OPROGRAMOWANIEM, W TYM WSZELKIE DOMNIEMANE GWARANCJE
PRZYDATNOŚCI HANDLOWEJ I PRZYDATNOŚCI DO OKREŚLONEGO CELU. W ŻADNYM PRZYPADKU AUTOR NIE PONOSI
ODPOWIEDZIALNOŚCI ZA ŻADNE SZCZEGÓLNE, BEZPOŚREDNIE, POŚREDNIE LUB WYNIKOWE SZKODY LUB JAKIEKOLWIEK
SZKODY WYNIKAJĄCE Z UTRATY UŻYTKOWANIA, DANYCH LUB ZYSKÓW, CZY TO W RAMACH DZIAŁANIA UMOWY,
ZANIEDBANIA LUB INNYCH DZIAŁAŃ DELIKTOWYCH, WYNIKAJĄCE Z LUB W ZWIĄZKU Z UŻYTKOWANIEM LUB
WYKONANIEM TEGO OPROGRAMOWANIA.

Informacje o autorze

Tomoyuki Sakurai tomoyukis@reallyenglish.com

O projekcie

Configures nsd

Zainstaluj
ansible-galaxy install reallyenglish.nsd
Licencja
isc
Pobrania
80
Właściciel