cmacrae.consul
Consul
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:
- Skontaktować się ze mną: @calumacrae, [email protected]
- Zgłosić problem
- Współpracować
ansible-galaxy install cmacrae.consul