nahsi.consul
Consul
Installieren, konfigurieren und warten Sie Consul - ein Service Mesh von HashiCorp.
Rollenphilosophie
Anstatt jede einzelne Konfigurationsoption als Ansible-Variable zu duplizieren, wird die Consul-Konfiguration im Ansible-Inventory im yaml
-Format gespeichert:
consul_config:
data_dir: "/var/lib/consul/"
enable_syslog: true
# "trace", "debug", "info", "warn", "err"
log_level: "info"
syslog_facility: "LOCAL5"
rejoin_after_leave: true
bind_addr: !unsafe '{{ GetInterfaceIP "eth0" }}'
telemetry:
disable_hostname: true
prometheus_retention_time: "30s"
server: false
Und dann wird es mit dem Filter no_nice_json
auf den Host kopiert:
- name: copy consul config
copy:
content: "{{ consul_config | to_nice_json }}"
dest: "/opt/consul/consul.json"
validate: "consul validate -config-format=json %s"
Wenn eine Variable eine Map ist (zum Beispiel consul_services
), wird jeder Schlüssel der Map als Datei kopiert, wobei der Wert der Inhalt ist.
Die folgende Map
consul_services:
consul:
service:
id: "consul-api"
name: "consul-api"
port: 8500
tags:
- "traefik.enable=true"
- "traefik.http.routers.consul.entrypoints=https"
- "traefik.http.routers.consul.rule=Host(`consul.example.com`)"
meta:
external-source: "consul"
check:
id: "consul-api-health"
name: "consul-api-health"
http: "http://localhost:8500/v1/agent/self"
interval: "20s"
timeout: "2s"
telegraf:
service:
id: "telegraf-exporter"
name: "telegraf-exporter"
port: 9271
meta:
external-source: "consul"
check:
id: "telegraf-exporter-health"
name: "telegraf-exporter-health"
http: "http://localhost:9270"
interval: "20s"
timeout: "2s"
wird die Dateien consul.json
und telegraf.json
im
/opt/consul/service.d/
erzeugen.
Dateien, die nicht in der Map vorhanden sind, werden gelöscht, wodurch der Zustand mit dem Ansible-Inventory beibehalten werden kann.
Rollenvariablen
Siehe defaults/ für Details und Beispiele.
consul_version
- Version, die verwendet werden soll
consul_dirs
- eine Map von Verzeichnissen, die erstellt werden sollen
- Standard:
consul_dir: "/opt/consul"
consul_dirs:
main:
path: "{{ consul_dir }}"
configs:
path: "{{ consul_dir }}/config.d"
services:
path: "{{ consul_dir }}/service.d"
certs:
path: "{{ consul_dir }}/certs"
mode: "u=rwX,g=rX,o="
scripts:
path: "{{ consul_dir }}/script.d"
logs:
path: "/var/log/consul"
data:
path: "/var/lib/consul"
mode: "u=rwX,g=rX,o="
consul_config
- Haupt-Konfigurations Datei
- Beispiel: siehe defaults/example.yml
consul_configs
- Map der Konfigurationsdateien, die im Verzeichnis
config.d
erstellt werden sollen. Neustart bei Änderungen
consul_services
- Map der Service Dateien, die im Verzeichnis
service.d
erstellt werden sollen. Neuladen bei Änderungen
consul_scripts
- Map der Skripte, die im Verzeichnis
scripts.d
erstellt werden sollen
consul_user
- Eigentümer des Consul-Prozesses und der Dateien
- Standard:
consul
consul_group
- Gruppe des
consul_user
- Standard:
consul
consul_download_url
- URL, um das Consul-Archiv herunterzuladen
- Standard:
https://releases.hashicorp.com
consul_service
- openrc-Dienstdatei
- Standard: siehe defaults/main.yml
consul_unitfile
- systemd einheitliche Datei
- Standard: siehe defaults/main.yml
skip_handlers
- Konsistenz beim Neustarten/Neuladen von Consul überspringen - nützlich beim Erstellen von Images mit Packer
- Standard:
false
Tags
config
- aktualisiert die Consul-Einheit/Dienstdatei und synchronisiert die Konfigurationsdateienservices
- synchronisiert die Consul-Dienstescripts
- synchronisiert die Consul-Skripte
Autor
- Anatoly Laskaris - nahsi
Über das Projekt
Manage HashiCorp Consul
Installieren
ansible-galaxy install nahsi.consul
Lizenz
mit
Downloads
1.8k
Besitzer