publicarray.unbound
Ansible-Rola-Unbound
Wysoko konfigurowalna rola Ansible dla rozwiązywacza DNS Unbound.
- Ansible 2.2+
- Kompatybilne z systemami, które mają system inicjalizacji systemd. Najnowsze wersje Ubuntu/Debian, RHEL/CentOS 6.x i freeBSD.
Zawartość
- Instalacja
- Przykłady i typowe zastosowania
- Wymagania
- Zmienne Roli
- Zależności
- Przykładowy Playbook
- Testowanie
Instalacja
$ ansible-galaxy install publicarray.unbound
Przykłady i typowe zastosowania
Proszę zobaczyć wiki: Przykłady
Zależności
Ansible 2.2+
Wymagania
brak
Zmienne Roli
Oto lista domyślnych zmiennych dla tej roli. Są one również dostępne w defaults/main.yml
. Zalecam skopiowanie i wklejenie poniższych zmiennych do pliku group_vars/all/configs
i zapoznanie się z dokumentacją unbound: https://unbound.net/documentation/unbound.conf.html
---
# Czy kompilować unbound ze źródła, czy używać menedżera pakietów.
unbound_compile: false
# Wersja unbound do pobrania ze <https://nlnetlabs.nl/projects/unbound/download/>
unbound_compile_version: 1.8.0
# Suma kontrolna do porównania pobranego pliku <https://nlnetlabs.nl/projects/unbound/download/>
unbound_compile_sha256: 78f79d6d3b643fdcd74a14fc76542250da886c82f82bc55b51e189663d61b83f
# Argumenty podane do polecenia `./configure`. <!--Użytkownicy Solaris powinni używać --with-solaris-threads -->
unbound_compile_config: "--enable-dnscrypt --with-username={{unbound.server.username|default(unbound)}} --with-libevent --with-run-dir={{unbound.server.directory}} --with-conf-file={{unbound.server.directory}}/unbound.conf"
# Czy stosować wytyczne dotyczące optymalizacji z <http://unbound.nlnetlabs.nl/documentation/howto_optimise.html>
unbound_optimise: false
# Procent fizycznej pamięci do użycia dla unbound. Używane tylko, gdy `unbound_optimise` jest ustawione na true
unbound_optimise_memory: 100
## Ustawienia DNS-over-TLS
# zobacz <https://github.com/publicarray/ansible-role-unbound/wiki/Examples#dns-over-tls> dla przykładu
# Wspólna nazwa dla certyfikatu
unbound_tls_domain: example.com
# Metoda generacji certyfikatu. Musi być jedną z: selfsigned lub acme.
# Opcja 'acme-cf' (wdrożona z dehydrated) jest przestarzała na rzecz nowej opcji 'acme' (wdrożonej z acme.sh)
unbound_tls_cert_provider: selfsigned
## opcje acme.sh https://github.com/Neilpang/acme.sh/wiki/Options-and-Params
# Opcja automatycznej aktualizacji skryptu acme.sh, 0 = fałsz, 1 = prawda
unbound_tls_acme_auto_upgrade: 0
# Urząd certyfikacji. Domyślnie używana jest API Let's Encrypt v1, v2 nadchodzi 27 lutego 2018 (--server)
# https://community.letsencrypt.org/t/staging-endpoint-for-acme-v2/49605
# - https://acme-v02.api.letsencrypt.org/directory
unbound_tls_acme_ca: https://acme-v01.api.letsencrypt.org/directory
# Użyj serwera stagingowego do testów (--staging, --test)
# https://letsencrypt.org/docs/staging-environment/
# UWAGA: przy zmianie z staging na produkcję musisz ustawić 'unbound_tls_acme_force' na true.
unbound_tls_acme_staging: false
# Wymuś utworzenie certyfikatu (zignoruj datę wygaśnięcia)
unbound_tls_acme_force: false
# Tryb walidacji domeny. Dostępne tryby to standalone, stateless, tls, apache, dns [dns_cf|dns_dp|dns_cx|/path/to/api/file]
unbound_tls_acme_mode: dns dns_cf
# Ustaw zmienne środowiskowe do użycia DNS jako walidacji domeny
# Proszę zobaczyć https://github.com/Neilpang/acme.sh/tree/master/dnsapi#how-to-use-dns-api dla szczegółów
unbound_tls_acme_dns_acc:
# Adres e-mail CloudFlare
CF_Email:
# Klucz API 'Global' CloudFlare <https://www.cloudflare.com/a/profile>
# NIE wklejaj swojego klucza w formie tekstowej! <https://docs.ansible.com/ansible/latest/playbooks_vault.html>
CF_Key:
# URL API CloudFlare
CF_Api: https://api.cloudflare.com/client/v4
# Długość klucza [2048, 3072, 4096, 8192 lub ec-256, ec-384] (--keylength, -k)
unbound_tls_acme_keysize: 4096
# Utwórz certyfikat ECC (Cryptografia krzywych eliptycznych) (--ecc)
unbound_tls_acme_ecc: false
# Wyjście debugowe (--debug)
unbound_tls_acme_debug: false
# Jakiekolwiek dodatkowe polecenia. https://github.com/Neilpang/acme.sh/wiki/Options-and-Params
# np. --dnssleep 300, --webroot /path/to/webroot/
unbound_tls_acme_custom:
### OpenNic <https://www.opennic.org/>
## Adres i port dla serwera autorytatywnego, np. nsd <https://nlnetlabs.nl/projects/nsd/>
# opennic_address: "127.0.0.1@5300"
## TLDs serwowane przez serwer autorytatywny i OpenNic
# opennic_tlds: [ free, geek, oss, ... ]
#
## Przykład pobierania TLD OpenNIC
##
## - name: Get OpenNIC TLDs
## shell: "dig @45.56.115.189 TXT tlds.opennic.glue +short | grep -v '^;' | sed s/\\\"//g | tr \" \" \"\\n\""
## register: opennic_tlds_temp
## check_mode: false
## - name: Set OpenNIC TLDs - https://wiki.opennic.org/opennic/dot
## set_fact:
## opennic_tlds: "{{opennic_tlds_temp.stdout_lines}}"
## Główna konfiguracja unbound
# Zobacz <https://unbound.net/documentation/unbound.conf.html> dla innych opcji i szczegółowych opisów
# Uwaga: W Ansible zmienne muszą używać podkreśleń (_) zamiast myślników (-) jako separatorów
unbound:
server:
verbosity: 1
# interface: [127.0.0.1, "::1"]
# access_control: [0.0.0.0/0 allow, "::0 allow"]
# use_syslog: no
# log_time_ascii: yes
logfile: unbound.log
auto_trust_anchor_file: root.key
root_hints: root.hints
pidfile: "{{_unbound.pidfile|default('unbound.pid')}}"
username: "{{_unbound.user}}"
# Jeśli nie kompilujesz, użyj domyślnego katalogu dystrybucji, w przeciwnym razie użyj domyślnego katalogu unbound
directory: "{{_unbound.conf_dir if unbound_compile == false else \"/usr/local/etc/unbound\"}}"
chroot: "{{_unbound.conf_dir if unbound_compile == false else \"/usr/local/etc/unbound\"}}"
## DNS-over-TLS
# interface: [0.0.0.0@853, '::0@853']
# ssl_service_key: "private.key"
# ssl_service_pem: "certificate.pem"
# ssl_port: 853
remote_control: # unbound-control
control_enable: false
Zależności
brak
Przykładowy Playbook
---
- hosts: all
roles:
- { role: publicarray.unbound }
vars:
- unbound_optimise: true
$ ansible-playbook -i dns.example.com, playbook.yml
Testowanie
z wykorzystaniem molecule
Wymaga pythona 2.7 i dockera
virtualenv --no-setuptools venv
source venv/bin/activate lub source venv/bin/activate.fish
pip install docker-py molecule
molecule test # --debug - do uzyskania bardziej szczegółowych informacji
deactivate
z wykorzystaniem skryptu geerlingguya
- Zainstaluj i uruchom Dockera.
- Pobierz testowy skrypt do
tests/test.sh
: -wget -O tests/test.sh https://gist.githubusercontent.com/geerlingguy/73ef1e5ee45d8694570f334be385e181/raw/
- Uczyń skrypt testowy wykonywalnym:
chmod +x tests/test.sh
. - Uruchom (z katalogu głównego roli)
distro=[distro] playbook=[playbook] ./tests/test.sh
. Jeśli nie chcesz, aby kontener był automatycznie usuwany po uruchomieniu testowego playbooka, dodaj następujące zmienne środowiskowe:cleanup=false container_id=$(date +%s)
Prawa autorskie do skryptu testowego należą do @geerlingguy
Dystrybucje:
- centos7
- ubuntu1604
- ubuntu1404
- debian9
- debian8
Playbooki: znajdują się w katalogu tests
test.yml
Testowanie domyślnej konfiguracjicompile-test.yml
Testowanie kompilacji unboundpackage-test.yml
Testowanie dns-over-dns i zoptymalizowanej konfiguracji
Przykład w bash/sh:
$ distro=debian9 playbook=package-test.yml cleanup=false container_id=$(date +%s) ./tests/test.sh
$ distro=debian9 playbook=compile-test.yml cleanup=false container_id=$(date +%s) ./tests/test.sh
Przykład w powłoce fish:
$ set -x distro debian9; set -x playbook package-test.yml; set -x cleanup false; set -x container_id (date +%s); ./tests/test.sh
$ set -x distro debian9; set -x playbook compile-test.yml; set -x cleanup false; set -x container_id (date +%s); ./tests/test.sh
Licencja
Informacje o autorze
@publicarray
O projekcie
Unbound - Validating, recursive, and caching DNS resolver
Zainstaluj
ansible-galaxy install publicarray.unbound
Licencja
mit
Pobrania
82
Właściciel