cmacrae.consul

Consul

Consul

Status budowy
Prosta rola Ansible do wdrażania i konfigurowania Consul

Cechy

Konfiguracja Consul za pomocą YAML

Konfiguracja usługi Consul jest wykonana poprzez konwersję z YAML na JSON, co pozwala na wyrażenie konfiguracji Consul w następujący sposób:

consul_master_token: myToken
consul_server: true
consul_configs:
  main:
    acl_datacenter: pantheon
    acl_master_token: "{{ consul_master_token | to_uuid }}"
    bootstrap: true
    bind_addr: 0.0.0.0
    client_addr: 0.0.0.0
    datacenter: pantheon
    data_dir: "{{ consul_data_dir }}"
    log_level: INFO
    node_name: master
    server: "{{ consul_server }}"
    ui: true

Jest to realizowane za pomocą filtrów Jinja2. Ta rola nie wprowadza wstępnie skonfigurowanych wpisów dla konfiguracji, więc zamiast pisać konfigurację Consul w JSON, po prostu wyrażasz ją w równoważnej składni YAML, co oznacza, że może być umieszczona w dowolnym miejscu w konfiguracji Ansible.
Jak widać w powyższym przykładzie, jest to bardzo potężne, ponieważ pozwala wykorzystać inne filtry dostępne w Ansible do tworzenia dowolnych danych i używania ich w konfiguracji. Wszystko, co możesz wyrazić przy użyciu szablonowania Ansible (w tym pobieranie danych/informacji o hostach z inwentarza itp.) może być użyte w konfiguracji.

Powyższy przykład konfiguracji pokazuje proste pary klucz/wartość, ale oczywiście możesz definiować dowolny poprawny typ w YAML, taki jak słowniki i listy.
Jeśli nie wiesz, jak wyrazić konfigurację JSON Consul jako YAML, zobacz tutaj, aby skorzystać z przydatnego konwertera.

Wdrożenia wielu plików konfiguracyjnych

Jak przedstawiono w powyższym przykładzie, zmienna consul_configs ma słownik main. Jak możesz się domyślić, możesz definiować wiele słowników konfiguracji. Te są następnie wdrażane do plików nazwanych zgodnie z ich nadrzędnym kluczem w katalogu conf.d.

KISS

Nie jestem pewien, czy powinno to być wymieniane jako cecha... ale uważam to za wartościowe.
Consul, za to co robi, jest niesamowicie prosty do skonfigurowania i uruchomienia - dlatego zasługuje na równie prostą rolę Ansible.
Główna lista zadań ma tylko nieco ponad 70 linii, w tym białe znaki. A główny szablon konfiguracyjny? 1 linia.
Utrzymanie tej roli w prostocie pozwala na dużą elastyczność i łatwość integracji z czymkolwiek innym, co możesz chcieć.

Wsparcie dla provisioningu Packer

Bardzo prostą, ale przydatną cechą tej roli jest możliwość ustawienia consul_packer_provision na true (domyślnie false). Gdy jest to true, podczas wykonywania Ansible nie uruchomi usługi Consul. Istnieje to, abyś mógł umieścić wartości w swojej konfiguracji, które mogą być nieprawidłowe, przeznaczone do użycia podczas produkcji obrazów maszyn przy użyciu Packer, które mają być później zastąpione w ramach jakiejś konfiguracji uruchamiającej/skryptu użytkownika/danych użytkownika.

Wymagania

Ta rola została przetestowana tylko na Ubuntu 16.04, ale powinna działać na każdej dystrybucji Linuxa, która obsługuje systemd i ma dostępny pakiet unzip.

Domyślne zmienne roli

consul_group_name: consul
consul_group_gid: 3000
consul_user_name: consul
consul_user_uid: 3000
consul_user_home: /opt/consul
consul_config_dir: "{{ consul_user_home }}/conf.d"
consul_data_dir: "{{ consul_user_home }}/data"
consul_version: 0.8.4
consul_server: false
consul_uri: "https://releases.hashicorp.com/consul/{{ consul_version }}/consul_{{ consul_version }}_linux_amd64.zip"
consul_config_src: main.json.j2
consul_service_file:
  src: consul.service.j2
  dest: /etc/systemd/system/consul.service

consul_config:
  datacenter: dc-1
  data_dir: "{{ consul_data_dir }}"
  log_level: INFO
  node_name: node-1
  server: "{{ consul_server }}"

Przykładowy playbook

- hosts: consul_servers
  vars:
    consul_master_token: myToken
    consul_server: true
    consul_config:
      acl_datacenter: pantheon
      acl_master_token: "{{ consul_master_token | to_uuid }}"
      bootstrap: true
      bind_addr: 0.0.0.0
      client_addr: 0.0.0.0
      datacenter: pantheon
      data_dir: "{{ consul_data_dir }}"
      log_level: INFO
      node_name: master
      server: "{{ consul_server }}"
      ui: true

  roles:
      - cmacrae.consul

Licencja

MIT

Informacje o autorze

Stworzone przez Caluma MacRae

Czuj się swobodnie, aby:

O projekcie

No nonsense role for deploying Consul

Zainstaluj
ansible-galaxy install cmacrae.consul
Licencja
Unknown
Pobrania
5.1k
Właściciel