marcinpraczko.named
Szybkie informacje
Ta rola jest forkiem następującego repozytorium:
Powody stworzenia tego forka i dokonania w nim poprawek:
Named
jest nadal używany, więc miło byłoby mieć działającą rolę.- Rola ma ładną strukturę i elastyczność w kwestii konfiguracji.
- Ta rola nie działała od razu i niektóre problemy nie zostały rozwiązane od 2015 roku.
Ansible-role-named
Wersja: 0.1.4
- Wymaga Ansible 2.0+
- Kompatybilna z większością wersji RHEL/CentOS 6.x, 7.x, Debian i Ubuntu
Instalacja
Bezpośrednio z ansible-galaxy (najnowsze wydanie)
$ ansible-galaxy install marcinpraczko.named
Bezpośrednio z repozytorium github
Czasami wprowadzane są zmiany w gałęzi develop
lub feature
, które nie zostały jeszcze wydane.
Ansible-galaxy pozwala na instalację ról bezpośrednio z GitHub
.
mkdir testing-roles
cd testing-roles
ansible-galaxy install -p roles git+https://github.com/marcinpraczko/ansible-role-named.git,develop
Powyższy przykład zainstaluje gałąź develop
. Można to dostosować do dowolnego commit SHA, tagu lub nazwy gałęzi, w zależności od wymagań.
Sprawdzenie, jaka wersja jest zainstalowana, można wykonać poleceniem:
ansible-galaxy list -p roles
Rozpoczęcie pracy
Instalacja BIND (named)
Instalacja BIND (named)
oraz wszystkich wymaganych zależności jest bardzo prosta i można ją wykonać przed konfiguracją lub osobno:
Tylko instalacja
$ ansible-playbook -t install -i hosts named.yml
Uruchomienie całego Playbooka
$ ansible-playbook -i hosts named.yml
Przykładowy Playbook, Hosty i Zmienne grupowe
Przykładowy Playbook
- name: "Działania potrzebne do uzyskania szczęśliwego stanu głównych serwerów"
hosts: named_masters
remote_user: root
roles:
- "marcinpraczko.named"
- name: "Działania potrzebne do uzyskania szczęśliwego stanu serwerów podrzędnych"
hosts: named_slaves
remote_user: root
roles:
- "marcinpraczko.named"
Przykładowe Hosty
[named_masters]
127.0.0.1
#[named_slaves]
#127.0.0.1
Przykładowe Zmienne Grupowe
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:
# Zauważ '_', to sprawia, że Ansible jest zadowolony i zostanie później zastąpione
# w konfiguracji i strefach automatycznie
foo_com:
type: master
allow_transfer:
- public_slaves
ttl: 3000
named_slaves:
named_zones_create_masters: False
named_zones:
# Zauważ '_', to sprawia, że Ansible jest zadowolony i zostanie później zastąpione
# w konfiguracji i strefach automatycznie
foo_com:
type: slave
master:
- 7.7.7.7
Ta rola składa się z zadań instalacyjnych i konfiguracyjnych, które są oznaczone jako install
lub configure
i mogą być uruchamiane pojedynczo lub razem. Ta rola ma akcje umożliwiające stworzenie pliku named.conf
oraz pliku included.conf
, które będą przechowywać acls i dołączanie stref, a także dynamiczne pliki strefowe w oparciu o domyślne lub grupowe zmienne.
Możliwości konfiguracyjne
Jest kilka opcji konfiguracyjnych w tej roli, oto podsumowana lista domyślnych ustawień (aktualna lista znajduje się w defaults/main.yml
):
## Opcje instalacji
named_conf_file_location: /etc/named.conf
# Upewnij się, że te są poprawne dla twojego systemu
named_user: named
named_group: named
named_service_name: named
# Ustawienia specyficzne dla 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
## Podstawowe opcje konfiguracyjne
# Sekcja Opcji
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
# Sekcja logowania
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
### Brak domyślnych acls lub includes
## Ustawienia główne
# To ustawienie określa, czy pliki strefowe powinny być tworzone w zadeklarowanym
# katalogu głównym. Normalnie nie chcesz ich tworzyć, jeśli konfigurujesz hosta podrzędnego.
named_zones_create_masters: True
### Domyślne ustawienia strefy
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
Zauważ, że możesz określić domyślne zmienne do tworzenia dynamicznych plików strefy, co pozwala znacznie zmniejszyć liczbę plików group_var
, ponieważ można określić tylko nadpisania dla stref, które wymagają ustawień różniących się od domyślnych.
Fakty
Następujące fakty są dostępne w twoim inwentarzu lub poza tą rolą.
{{ ansible_local.named.interfaces_ipv4 }}
{{ ansible_local.named.interfaces_ipv6 }}
{{ ansible_local.named.port_ipv4 }}
{{ ansible_local.named.port_ipv6 }}
Testowanie
- Początkowo rola miała tylko plik
travis
. - Dodano konfigurację
molecule
, aby umożliwić testowanie tej roli lokalnie.
Molecule
pozwala na testowanie ról ansible lokalnie za pomocą docker
lub vagrant
.
Pomaga również w przeprowadzaniu weryfikacji, takich jak serverspec
lub testinfra
.
To wszystko sprawia, że testowanie tej roli jest znacznie łatwiejsze.
Instalacja wymaganych pakietów
- Docker
- Vagrant
Instalacja molecule
- Zainstaluj wirtualne środowisko Pythona na swoim systemie.
- Zainstaluj
molecule
w wirtualnym środowisku Pythona.
virtualenv venv
source venv/bin/activate
# Zaktualizuj powszechnie używane pakiety pip
pip install -U pip setuptools wheel
# Zainstaluj molecule z wymaganymi pakietami Pythona
pip install -r tests/requirements.txt
Testowanie przy użyciu molecule
Poniższe polecenie powinno umożliwić przetestowanie roli przy użyciu sterownika Vagrant.
Uwaga: Uruchomienie poniższego polecenia po raz pierwszy zajmie więcej czasu (należy pobrać pełny obraz Vagrant na lokalny host).
molecule test --sudo
Powyższe polecenie uruchomi --sudo
tylko dla narzędzi weryfikacyjnych, takich jak
testinfra
lub serverspec
, itp. Opcja --sudo
nie ma wpływu na
to, jak działa ansible.
ansible-galaxy install marcinpraczko.named