cmacrae.consul

Consul

Consul

Build Status
Eine unkomplizierte Ansible-Rolle zum Bereitstellen und Konfigurieren von Consul

Funktionen

Konfigurieren von Consul mit YAML

Die Konfiguration für den Consul-Dienst erfolgt durch die Umwandlung von YAML in JSON, sodass Sie Ihre Consul-Konfigurationen wie folgt ausdrücken können:

consul_master_token: meinToken
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

Dies geschieht mit Jinja2-Filter. Diese Rolle implementiert keine vorkonfigurierten Einträge für die Konfiguration, sodass Sie die Konfiguration von Consul nicht in JSON schreiben müssen; Sie drücken sie einfach in der entsprechenden YAML-Syntax aus, was bedeutet, dass sie überall in Ihrer Ansible-Konfiguration Platz finden kann.
Wie im obigen Beispiel zu sehen ist, kann dies sehr mächtig sein, da es Ihnen ermöglicht, andere in Ansible verfügbaren Filter zu verwenden, um beliebige Daten zu erstellen und in der Konfiguration zu verwenden. Alles, was Sie mit der Vorlagenfunktion von Ansible ausdrücken können (einschließlich des Abrufens von Daten/Hostinformationen aus dem Inventar usw.), kann in der Konfiguration verwendet werden.

Das obige Beispiel zeigt einfache Schlüssel/Wert-Paare, aber Sie können natürlich auch jeden gültigen Typ in YAML definieren, wie z.B. Wörterbücher und Listen.
Wenn Sie nicht wissen, wie Sie die JSON-Konfiguration von Consul in YAML ausdrücken, sehen Sie hier für einen praktischen Konverter.

Bereitstellung mehrerer Konfigurationsdateien

Wie im obigen Beispiel gezeigt, hat die Variable consul_configs ein main Wörterbuch. Wie Sie erraten haben könnten; Sie können mehrere Wörterbücher für die Konfiguration definieren. Diese werden dann in Dateien bereitgestellt, die nach ihrem übergeordneten Schlüssel im conf.d-Verzeichnis benannt sind.

KISS

Ich bin mir nicht ganz sicher, ob dies als Funktion aufgeführt werden sollte... aber ich halte es für wertvoll.
Consul ist, was die Konfiguration und Bereitstellung angeht, sehr einfach zu handhaben – daher verdient es eine ebenso einfache Ansible-Rolle.
Die Hauptaufgabendatei umfasst nur etwas über 70 Zeilen, einschließlich Leerzeilen. Und die Hauptkonfiguration wird in nur 1 Zeile dargestellt.
Durch die Beibehaltung dieser Rolle im einfachen Stil kann sie sehr flexibel und leicht in alles integriert werden, was Sie möchten.

Unterstützung für Packer-Bereitstellung

Eine sehr einfache, aber nützliche Funktion dieser Rolle ist die Möglichkeit, consul_packer_provision auf true (false standardmäßig) zu setzen. Wenn dies true ist, wird der Consul-Dienst während des Ansible-Laufs nicht gestartet. Dies ermöglicht es Ihnen, Werte in Ihre Konfiguration einzufügen, die möglicherweise ungültig sind. Diese Funktion ist dafür gedacht, dass sie genutzt wird, wenn Sie Maschinenbilder mit Packer erzeugen und später durch eine Art von Startkonfiguration/Skript/Daten ersetzt werden sollen.

Anforderungen

Diese Rolle wurde nur auf Ubuntu 16.04 getestet, sollte jedoch auf jeder Linux-Distribution funktionieren, die systemd verwendet und ein unzip-Paket verfügbar hat.

Standardrollenvariablen

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 }}"

Beispiel-Playbook

- hosts: consul_servers
  vars:
    consul_master_token: meinToken
    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

Lizenz

MIT

Autorinformationen

Erstellt von Calum MacRae

Fühlen Sie sich frei zu:

Über das Projekt

No nonsense role for deploying Consul

Installieren
ansible-galaxy install cmacrae.consul
GitHub Repository
Lizenz
Unknown
Downloads
5.1k
Besitzer