brianshumate.consul

Consul

Molecule Średni czas rozwiązywania problemów Procent otwartych problemów

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:

  1. Wykonuje rolę consul (instaluje Consul i uruchamia klaster)
  2. Przekonfigurowuje węzeł bootstrap, aby działał bez ustawienia bootstrap-expect
  3. 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

Brian Shumate

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.

Zainstaluj
ansible-galaxy install brianshumate.consul
Licencja
bsd-2-clause
Pobrania
492.4k
Właściciel
Art ⁂ Data ⁂ Boards ⁂ Water