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
ansible-galaxy install reallyenglish.nsd