brianshumate.consul
Consul
Ta rola Ansible instaluje Consul, w tym tworzy strukturę systemu plików oraz konfigurację agenta serwera lub klienta z wsparciem dla niektórych wspólnych funkcji operacyjnych.
Może również uruchomić klaster rozwojowy lub oceniający z 3 agentami serwera działających w środowisku opartym na Vagrant i VirtualBox. Zobacz README_VAGRANT.md oraz związany z tym Vagrantfile po więcej szczegółów.
Filozofia roli
"Kolejną wadą ludzkiego charakteru jest to, że wszyscy chcą budować, a nikt nie chce zajmować się konserwacją."
― Kurt Vonnegut, Hocus Pocus
Proszę zauważyć, że pierwotny cel zaprojektowania tej roli bardziej koncentrował się na początkowej instalacji i uruchomieniu środowiska klastra serwera Consul, więc obecnie nie zajmuje się (zbyt mocno) bieżącą konserwacją klastra.
Wielu użytkowników wyraziło opinię, że środowisko oparte na Vagrant sprawia, że uzyskanie działającego lokalnego środowiska klastra serwera Consul jest łatwym procesem - więc ta rola będzie skupiać się na tym doświadczeniu jako głównym motywie istnienia.
Jeśli uzyskujesz z niej korzyści w inny sposób, tym lepiej!
Migracja i instalacja roli
Ta rola została pierwotnie opracowana przez Briana Shumate i była znana na Ansible Galaxy jako brianshumate.consul. Brian poprosił społeczność o zwolnienie go z obowiązków związanych z utrzymaniem, dlatego Bas Meijer przeniósł rolę do ansible-collections, aby zespół wolontariuszy mógł ją utrzymywać. Aby zainstalować tę rolę w swoim projekcie, powinieneś utworzyć plik requirements.yml
w podkatalogu roles/
swojego projektu z następującą zawartością:
---
- src: https://github.com/ansible-collections/ansible-consul.git
name: ansible-consul
scm: git
version: master
To repozytorium ma oznaczone wydania, które możesz wykorzystać do ustalenia wersji.
Tower automatycznie zainstaluje rolę, jeśli używasz interfejsu CLI do kontrolowania ansible, wtedy zainstaluj ją w następujący sposób:
ansible-galaxy install -p roles -r roles/requirements.yml
Wymagania
Ta rola wymaga dystrybucji FreeBSD, Debian lub Red Hat Enterprise Linux albo Windows Server 2012 R2.
Rola może działać z innymi dystrybucjami i wersjami OS, ale wiadomo, że działa dobrze z następującymi wersjami oprogramowania:
- Consul: 1.8.7
- Ansible: 2.8.2
- Alma Linux: 8, 9
- Alpine Linux: 3.8
- CentOS: 7, 8
- Debian: 9
- FreeBSD: 11
- Mac OS X: 10.15 (Catalina)
- RHEL: 7, 8
- Rocky Linux: 8
- OracleLinux: 7, 8
- Ubuntu: 16.04
- Windows: Server 2012 R2
Zauważ, że w trybie "lokalnym" instalacji (domyślnym) ta rola lokalnie pobiera tylko jedną instancję archiwum Consul, rozpakowuje ją i instaluje wynikowy plik binarny na wszystkich pożądanych hostach Consul.
Aby to zrobić, wymagana jest dostępność unzip
na hoście kontrolnym Ansible i rola zakończy się błędem, jeśli nie wykryje unzip
w PATH.
Wymagania dotyczące kolekcji dla tej roli są wymienione w pliku requirements.yml
. Twoją odpowiedzialnością jest upewnienie się, że zainstalujesz te kolekcje, aby zapewnić prawidłowe działanie roli. Zwykle można to zrobić za pomocą:
ansible-galaxy collection install -r requirements.yml
Ostrzeżenia
Ta rola nie obsługuje w pełni opcji limitu (ansible -l
), aby ograniczyć hosty, ponieważ może to przerywać wypełnianie wymaganych zmiennych hosta. Jeśli użyjesz opcji limitu z tą rolą, możesz napotkać błędy szablonu, takie jak:
Undefined is not JSON serializable.
Zmienne roli
Rola używa zmiennych zdefiniowanych w trzech miejscach:
- Plik inwentarza hostów (zobacz
examples/vagrant_hosts
jako przykład) vars/*.yml
(przede wszystkim zmienne specyficzne dla OS/dystrybucji)defaults/main.yml
(wszystko inne)
:warning: UWAGA: Rola polega na tym, aby grupa hostów inwentarza dla serwerów consul była zdefiniowana jako zmienna
consul_group_name
, a w przeciwnym razie nie będzie działać poprawnie. Alternatywnie serwery consul można umieścić w domyślnej grupie hostów[consul_instances]
w inwentarzu, jak pokazano w przykładach poniżej.
Wiele zmiennych roli może również przyjmować swoje wartości z zmiennych środowiskowych; są one zaznaczone w opisie tam, gdzie to odpowiednie.
consul_version
- Wersja do zainstalowania
- Ustaw wartość na
latest
dla najnowszej dostępnej wersji Consul - Domyślna wartość: 1.8.7
consul_architecture_map
- Słownik do tłumaczenia wartości ansible_architecture na wartości architektury Go konwencja nazewnictwa
- Domyślna wartość: dict
consul_architecture
- Architektura systemu ustalona przez
{{ consul_architecture_map[ansible_architecture] }}
- Domyślna wartość (ustalona w czasie wykonywania): amd64, arm lub arm64
consul_os
- Nazwa systemu operacyjnego w małych literach
- Domyślna wartość:
{{ ansible_os_family | lower }}
...
Przykładowy Playbook
Podstawowa instalacja jest możliwa za pomocą dołączonego playbooka site.yml
:
ansible-playbook -i hosts site.yml
Możesz również przekazać zmienne używając opcji --extra-vars
do
polecenia ansible-playbook
:
ansible-playbook -i hosts site.yml --extra-vars "consul_datacenter=maui"
Pamiętaj, że dla klasteryzacji, dołączony site.yml
wykonuje następujące kroki:
- Wykonuje rolę consul (instaluje Consul i uruchamia klaster)
- Przekonfigurowuje węzeł bootstrap, aby działał bez ustawienia bootstrap-expect
- Ponownie uruchamia węzeł bootstrap
Wsparcie ACL
Podstawowe wsparcie dla ACL jest dołączone w roli. Możesz ustawić zmienne środowiskowe CONSUL_ACL_ENABLE
na true, a także ustawić zmienną środowiskową CONSUL_ACL_DATACENTER
na odpowiednią wartość dla swojego środowiska przed wykonaniem playbooka; na przykład:
CONSUL_ACL_ENABLE=true CONSUL_ACL_DATACENTER=maui \
CONSUL_ACL_MASTER_TOKEN_DISPLAY=true ansible-playbook -i uat_hosts aloha.yml
Jeśli chcesz, aby automatycznie generowany token ACL Master Token był wyświetlany na standardowym wyjściu podczas wykonywania, ustaw zmienną środowiskową CONSUL_ACL_MASTER_TOKEN_DISPLAY
na true, jak w powyższym przykładzie.
Jeśli chcesz używać istniejących tokenów, ustaw zmienne środowiskowe CONSUL_ACL_MASTER_TOKEN
oraz CONSUL_ACL_REPLICATION_TOKEN
również, na przykład:
CONSUL_ACL_ENABLE=true CONSUL_ACL_DATACENTER=stjohn \
CONSUL_ACL_MASTER_TOKEN=0815C55B-3AD2-4C1B-BE9B-715CAAE3A4B2 \
CONSUL_ACL_REPLICATION_TOKEN=C609E56E-DD0B-4B99-A0AD-B079252354A0 \
CONSUL_ACL_MASTER_TOKEN_DISPLAY=true ansible-playbook -i uat_hosts sail.yml
...
Licencja
BSD
Informacje o autorze
Współautorzy
Szczególne podziękowania dla osób wymienionych w CONTRIBUTORS.md za ich wkład w ten projekt.
Zachęcamy do wkładów, pod warunkiem, że zgodzisz się na warunki opisane w CONTRIBUTING.md.
ansible-galaxy install brianshumate.consul