brianshumate.consul

Consul

Molecule Temps moyen de résolution d'un problème Pourcentage de problèmes encore ouverts

Ce rôle Ansible installe Consul, y compris la création d'une structure de fichiers et la configuration d'agents serveurs ou clients, avec support pour certaines fonctionnalités opérationnelles courantes.

Il peut également initier un cluster de développement ou d'évaluation avec 3 agents serveurs fonctionnant dans un environnement basé sur Vagrant et VirtualBox. Consultez README_VAGRANT.md et le fichier Vagrantfile associé pour plus de détails.

Philosophie du Rôle

"Un autre défaut du caractère humain est que tout le monde veut construire et que personne ne veut faire la maintenance."
― Kurt Vonnegut, Hocus Pocus

Veuillez noter que l'objectif initial de ce rôle était davantage axé sur l'installation initiale et la configuration d'un environnement de cluster serveur Consul, et il ne se préoccupe donc pas (trop) de la maintenance continue d'un cluster.

De nombreux utilisateurs ont exprimé que l'environnement basé sur Vagrant rendait le déploiement d'un cluster serveur Consul local fonctionnel un processus facile — ainsi ce rôle cible cette expérience comme une motivation principale.

Si vous en tirez des bénéfices d'autres manières, alors tant mieux !

Migration et Installation du Rôle

Ce rôle a été initialement développé par Brian Shumate et était connu sur Ansible Galaxy sous le nom de brianshumate.consul. Brian a demandé à la communauté d'être soulagé du fardeau de la maintenance, et donc Bas Meijer a transféré le rôle à ansible-collections afin qu'une équipe de volontaires puisse le maintenir. Pour installer ce rôle dans votre projet, vous devez créer un fichier requirements.yml dans le sous-répertoire roles/ de votre projet avec ce contenu :

---
- src: https://github.com/ansible-collections/ansible-consul.git
  name: ansible-consul
  scm: git
  version: master

Ce dépôt a des versions étiquetées que vous pouvez utiliser pour fixer la version.

Tower installera le rôle automatiquement, si vous utilisez l'interface de ligne de commande pour contrôler Ansible, alors installez-le comme suit :

ansible-galaxy install -p roles -r roles/requirements.yml

Exigences

Ce rôle nécessite une distribution FreeBSD, Debian, Red Hat Enterprise Linux ou Windows Server 2012 R2.

Le rôle peut fonctionner avec d'autres distributions et versions d'OS, mais est connu pour fonctionner correctement avec les versions de logiciels suivantes :

  • 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

Notez que pour le mode d'installation "local" (par défaut), ce rôle téléchargera localement une seule instance de l'archive de Consul, la dézippera et installera le binaire résultant sur tous les hôtes Consul souhaités.

Pour ce faire, il est nécessaire que unzip soit disponible sur l'hôte de contrôle Ansible et le rôle échouera s'il ne détecte pas unzip dans le PATH.

Les exigences de collection pour ce rôle sont listées dans le fichier requirements.yml. Il est de votre responsabilité de vous assurer que vous installez ces collections pour garantir que le rôle fonctionne correctement. En général, cela peut être fait avec :

ansible-galaxy collection install -r requirements.yml

Avertissements

Ce rôle ne prend pas entièrement en charge l'option de limitation (ansible -l) pour limiter les hôtes, car cela rompt la population des variables hôtes requises. Si vous utilisez l'option de limitation avec ce rôle, vous pouvez rencontrer des erreurs de modèle telles que :

Undefined is not JSON serializable.

Variables du Rôle

Le rôle utilise des variables définies dans ces 3 endroits :

  • Fichier d'inventaire des hôtes (voir examples/vagrant_hosts pour un exemple)
  • vars/*.yml (principalement des variables spécifiques aux OS/distributions)
  • defaults/main.yml (tout le reste)

:warning: NOTE : Le rôle s'appuie sur le groupe d'hôtes d'inventaire pour les serveurs Consul définis comme la variable consul_group_name et ne fonctionnera pas correctement autrement. Alternativement, les serveurs Consul peuvent être placés dans le groupe d'hôtes par défaut [consul_instances] dans l'inventaire comme montré dans les exemples ci-dessous.

De nombreuses variables de rôle peuvent également prendre leurs valeurs à partir de variables d'environnement ; celles-ci sont notées dans la description lorsque cela est approprié.

consul_version

  • Version à installer
  • Définir la valeur sur latest pour la dernière version disponible de Consul
  • Valeur par défaut : 1.8.7

consul_architecture_map

  • Dictionnaire pour traduire les valeurs ansible_architecture en valeurs d'architecture Go convention de nommage
  • Valeur par défaut : dict

consul_architecture

  • Architecture système déterminée par {{ consul_architecture_map[ansible_architecture] }}
  • Valeur par défaut (déterminée à l'exécution) : amd64, arm ou arm64

consul_os

  • Nom du système d'exploitation en représentation en minuscules
  • Valeur par défaut : {{ ansible_os_family | lower }}

consul_install_dependencies

  • Installer python et les dépendances de paquet requises pour le fonctionnement du rôle.
  • Valeur par défaut : true

consul_zip_url

  • URL de téléchargement de l'archive de Consul
  • Valeur par défaut : https://releases.hashicorp.com/consul/{{ consul_version }}/consul_{{ consul_version }}_{{ consul_os }}_{{ consul_architecture }}.zip

consul_checksum_file_url

  • URL du fichier des résumés SHA256 du paquet
  • Valeur par défaut : https://releases.hashicorp.com/consul/{{ consul_version }}/{{ consul_version }}_SHA256SUMS

consul_bin_path

  • Chemin d'installation binaire
  • Valeur par défaut pour Linux : /usr/local/bin
  • Valeur par défaut pour Windows : C:\ProgramData\consul\bin

consul_config_path

  • Chemin du fichier de configuration de base
  • Valeur par défaut pour Linux : /etc/consul
  • Valeur par défaut pour Windows : C:\ProgramData\consul\config

consul_configd_path

  • Répertoire de configuration supplémentaire
  • Valeur par défaut pour Linux : {{ consul_config_path }}/consul.d
  • Valeur par défaut pour Windows : C:\ProgramData\consul\config.d

consul_data_path

  • Chemin du répertoire de données défini dans data_dir ou -data-dir
  • Valeur par défaut pour Linux : /opt/consul
  • Valeur par défaut pour Windows : C:\ProgramData\consul\data

consul_configure_syslogd

  • Activer la configuration de rsyslogd ou syslog-ng sur Linux. Si désactivé, Consul continuera à enregistrer sur syslog si consul_syslog_enable est vrai, mais le démon syslog ne sera pas configuré pour écrire les journaux de Consul dans leur propre fichier journal.
    • Remplacez avec la variable d'environnement CONSUL_CONFIGURE_SYSLOGD
  • Valeur par défaut pour Linux : false

consul_log_path

  • Si consul_syslog_enable est false
  • Si consul_syslog_enable est true
    • Chemin de journal à utiliser dans la configuration rsyslogd sur Linux. Ignoré si consul_configure_syslogd est false.
  • Valeur par défaut pour Linux : /var/log/consul
    • Remplacez avec la variable d'environnement CONSUL_LOG_PATH
  • Valeur par défaut pour Windows : C:\ProgramData\consul\log

consul_log_file

  • Si consul_syslog_enable est false
  • Si consul_syslog_enable est true
    • Fichier de journal à utiliser dans la configuration rsyslogd sur Linux. Ignoré si consul_configure_syslogd est false.
  • Remplacez avec la variable d'environnement CONSUL_LOG_FILE
  • Valeur par défaut pour Linux : consul.log

consul_log_rotate_bytes

  • Octets de rotation de journal tels que définis dans log_rotate_bytes ou -log-rotate-bytes
    • Remplacez avec la variable d'environnement CONSUL_LOG_ROTATE_BYTES
  • Ignoré si consul_syslog_enable est vrai
  • Valeur par défaut : 0

consul_log_rotate_duration

  • Durée de rotation des journaux tels que définis dans log_rotate_duration ou -log-rotate-duration
    • Remplacez avec la variable d'environnement CONSUL_LOG_ROTATE_DURATION
  • Ignoré si consul_syslog_enable est vrai
  • Valeur par défaut : 24h

consul_log_rotate_max_files

  • Nombre maximal de fichiers de rotation de journaux définis dans log_rotate_max_files ou -log-rotate-max-files
    • Remplacez avec la variable d'environnement CONSUL_LOG_ROTATE_MAX_FILES
  • Ignoré si consul_syslog_enable est vrai
  • Valeur par défaut : 0

consul_syslog_facility

  • Installation syslog telle que définie dans syslog_facility
    • Remplacez avec la variable d'environnement CONSUL_SYSLOG_FACILITY
  • Valeur par défaut pour Linux : local0

syslog_user

  • Propriétaire du processus rsyslogd sur Linux. La propriété de consul_log_path est définie sur cet utilisateur sur Linux. Ignoré si consul_configure_syslogd est false.
    • Remplacez avec la variable d'environnement SYSLOG_USER
  • Valeur par défaut pour Linux : syslog

syslog_group

  • Groupe d'utilisateur exécutant le processus rsyslogd sur Linux. La propriété de groupe de consul_log_path est définie sur ce groupe sur Linux. Ignoré si consul_configure_syslogd est false.
    • Remplacez avec la variable d'environnement SYSLOG_GROUP
  • Valeur par défaut : adm

consul_run_path

  • Chemin d'exécution pour le fichier d'identification du processus (PID)
  • Valeur par défaut pour Linux : /run/consul
  • Valeur par défaut pour Windows : C:\ProgramData\consul

consul_user

  • Utilisateur du système d'exploitation
  • Valeur par défaut pour Linux : consul
  • Valeur par défaut pour Windows : LocalSystem

consul_manage_user

  • Que ce soit pour créer l'utilisateur défini par consul_user ou non
  • Valeur par défaut : true

consul_group

  • Groupe du système d'exploitation
  • Valeur par défaut : bin

consul_manage_group

  • Que ce soit pour créer le groupe défini par consul_group ou non
  • Valeur par défaut : true

consul_group_name

  • Nom du groupe d'inventaire
    • Remplacez avec la variable d'environnement CONSUL_GROUP_NAME
  • Valeur par défaut : consul_instances

consul_retry_interval

  • Intervalle pour les tentatives de reconnexion aux serveurs LAN
  • Valeur par défaut : 30s

consul_retry_interval_wan

  • Intervalle pour les tentatives de reconnexion aux serveurs WAN
  • Valeur par défaut : 30s

consul_retry_join_skip_hosts

  • Si vrai, la valeur de config pour retry_join ne sera pas peuplée par les serveurs hôtes par défaut. La valeur peut être initialisée en utilisant consul_join
  • Valeur par défaut : false

consul_retry_max

  • Nombre maximal de tentatives de reconnexion aux serveurs LAN avant d'échouer (0 = infini)
  • Valeur par défaut : 0

consul_retry_max_wan

  • Nombre maximal de tentatives de reconnexion aux serveurs WAN avant d'échouer (0 = infini)
  • Valeur par défaut : 0

consul_join

  • Liste des serveurs LAN, non gérés par ce rôle, à rejoindre (adresses IPv4 IPv6 ou DNS)
  • Valeur par défaut : []

consul_join_wan

  • Liste des serveurs WAN, non gérés par ce rôle, à rejoindre (adresses IPv4 IPv6 ou DNS)
  • Valeur par défaut : []

consul_servers

Il n'est généralement pas nécessaire de modifier manuellement cette liste.

  • Liste des nœuds serveur
  • Valeur par défaut : Liste de tous les nœuds dans consul_group_name avec consul_node_role défini sur serveur ou bootstrap

consul_bootstrap_expect

  • Booléen qui ajoute la valeur bootstrap_expect au fichier de configuration des serveurs Consul
  • Valeur par défaut : false

consul_bootstrap_expect_value

  • Entier pour définir le nombre minimum de serveurs Consul joints au cluster afin d'élire le leader.
  • Valeur par défaut : Calculé à l'exécution en fonction du nombre de nœuds

consul_gather_server_facts

Cette fonctionnalité permet de recueillir l'adresse_publicitaire_de_consul des serveurs qui ne sont actuellement pas ciblés par le playbook.

Pour cela, l'option delegate_facts est utilisée ; notez que cette option a été problématique.

  • Rassembler les faits des serveurs qui ne sont pas actuellement ciblés
  • Valeur par défaut : false

consul_datacenter

  • Étiquette de datacenter
    • Remplacez avec la variable d'environnement CONSUL_DATACENTER
  • Valeur par défaut : dc1

consul_domain

  • Nom de domaine de Consul tel que défini dans domain ou -domain
    • Remplacez avec la variable d'environnement CONSUL_DOMAIN
  • Valeur par défaut : consul

consul_alt_domain

  • Nom de domaine de Consul tel que défini dans alt_domain ou -alt-domain
    • Remplacez avec la variable d'environnement CONSUL_ALT_DOMAIN
  • Valeur par défaut : Chaîne vide

consul_node_meta

  • Méta données du nœud Consul (clé-valeur)
  • Pris en charge dans la version 0.7.3 ou ultérieure de Consul
  • Valeur par défaut : {}
  • Exemple :
consul_node_meta:
    node_type: "mon-type-personnalisé"
    node_meta1: "métadonnée1"
    node_meta2: "métadonnée2"

consul_log_level

  • Niveau de journalisation tel que défini dans log_level ou -log-level
    • Remplacez avec la variable d'environnement CONSUL_LOG_LEVEL
  • Valeur par défaut : INFO

consul_syslog_enable

  • Journaliser sur syslog tel que défini dans enable_syslog ou -syslog
    • Remplacez avec la variable d'environnement CONSUL_SYSLOG_ENABLE
  • Valeur par défaut pour Linux : false
  • Valeur par défaut pour Windows : false

consul_iface

  • Interface réseau de Consul
    • Remplacez avec la variable d'environnement CONSUL_IFACE
  • Valeur par défaut : {{ ansible_default_ipv4.interface }}

consul_bind_address

  • Adresse de liaison
    • Remplacez avec la variable d'environnement CONSUL_BIND_ADDRESS
  • Valeur par défaut : adresse ipv4 par défaut, ou adresse de l'interface configurée par consul_iface

consul_advertise_address

  • Adresse de publicité LAN
  • Valeur par défaut : consul_bind_address

consul_advertise_address_wan

  • Adresse de publicité WAN
  • Valeur par défaut : consul_bind_address

consul_translate_wan_address

  • Préférer l'adresse WAN configurée d'un nœud lors de la fourniture de DNS
  • Valeur par défaut : false

consul_advertise_addresses

  • Paramètres de publicité d'adresses avancés
  • Les adresses individuelles peuvent être remplacées en utilisant les variables consul_advertise_addresses_*
  • Valeur par défaut :
    consul_advertise_addresses:
      serf_lan: "{{ consul_advertise_addresses_serf_lan | default(consul_advertise_address+':'+consul_ports.serf_lan) }}"
      serf_wan: "{{ consul_advertise_addresses_serf_wan | default(consul_advertise_address_wan+':'+consul_ports.serf_wan) }}"
      rpc: "{{ consul_advertise_addresses_rpc | default(consul_bind_address+':'+consul_ports.server) }}"
    

consul_client_address

  • Adresse client
  • Valeur par défaut : 127.0.0.1

consul_addresses

  • Paramètres d'adresses avancés
  • Les adresses individuelles peuvent être remplacées en utilisant les variables consul_addresses_*
  • Valeur par défaut :
    consul_addresses:
      dns: "{{ consul_addresses_dns | default(consul_client_address, true) }}"
      http: "{{ consul_addresses_http | default(consul_client_address, true) }}"
      https: "{{ consul_addresses_https | default(consul_client_address, true) }}"
      rpc: "{{ consul_addresses_rpc | default(consul_client_address, true) }}"
      grpc: "{{ consul_addresses_grpc | default(consul_client_address, true) }}"
      grpc_tls: "{{ consul_addresses_grpc_tls | default(consul_client_address, true) }}"
    

consul_ports

  • La documentation officielle sur les Ports Utilisés
  • Le mapping de ports est un objet dict imbriqué qui permet de définir les ports de liaison pour les clés suivantes :
    • dns - Le serveur DNS, -1 pour désactiver. Valeur par défaut 8600.
    • http - L'API HTTP, -1 pour désactiver. Valeur par défaut 8500.
    • https - L'API HTTPS, -1 pour désactiver. Valeur par défaut -1 (désactivé).
    • rpc - Le point de terminaison CLI RPC. Valeur par défaut 8400. Cela est obsolète dans Consul 0.8 et plus tard.
    • grpc - Le point de terminaison gRPC, -1 pour désactiver. Valeur par défaut -1 (désactivé).
    • grpc_tls - Le point de terminaison gRPC TLS, -1 pour désactiver. Valeur par défaut -1 (désactivé). Ceci est disponible dans Consul 1.14.0 et plus tard.
    • serf_lan - Le port Serf LAN. Valeur par défaut 8301.
    • serf_wan - Le port Serf WAN. Valeur par défaut 8302.
    • serveur - Adresse RPC du serveur. Valeur par défaut 8300.

Par exemple, pour activer l'API HTTPS de Consul, il est possible de définir la variable comme suit :

  • Valeurs par défaut :
  consul_ports:
    dns: "{{ consul_ports_dns | default('8600', true) }}"
    http: "{{ consul_ports_http | default('8500', true) }}"
    https: "{{ consul_ports_https | default('-1', true) }}"
    rpc: "{{ consul_ports_rpc | default('8400', true) }}"
    serf_lan: "{{ consul_ports_serf_lan | default('8301', true) }}"
    serf_wan: "{{ consul_ports_serf_wan | default('8302', true) }}"
    server: "{{ consul_ports_server | default('8300', true) }}"
    grpc: "{{ consul_ports_grpc | default('-1', true) }}"
    grpc_tls: "{{ consul_ports_grpc_tls | default('-1', true) }}"

Remarquez que l'objet dict doit utiliser précisément les noms mentionnés dans la documentation ! Et tous les ports doivent être spécifiés. Écraser un ou plusieurs ports peut être fait en utilisant les variables consul_ports_*.

consul_node_name

  • Définir un nom de nœud personnalisé (ne doit pas inclure de points) Consultez node_name
    • Valeur par défaut : ''

consul_recursors

  • Liste des serveurs DNS en amont Consultez recursors
    • Remplacez avec la variable d'environnement CONSUL_RECURSORS
  • Valeur par défaut : Liste vide

consul_iptables_enable

  • Que ce soit pour activer les règles iptables pour le transfert DNS vers Consul
    • Remplacez avec la variable d'environnement CONSUL_IPTABLES_ENABLE
  • Valeur par défaut : false

consul_acl_policy

  • Ajouter un fichier de configuration ACL de base
    • Remplacez avec la variable d'environnement CONSUL_ACL_POLICY
  • Valeur par défaut : false

consul_acl_enable

  • Activer les ACL
    • Remplacez avec la variable d'environnement CONSUL_ACL_ENABLE
  • Valeur par défaut : false

consul_acl_ttl

  • TTL pour les ACL
    • Remplacez avec la variable d'environnement CONSUL_ACL_TTL
  • Valeur par défaut : 30s

consul_acl_token_persistence

  • Définir si les tokens définis par l'API seront persistés sur le disque ou non
    • Remplacez avec la variable d'environnement CONSUL_ACL_TOKEN_PERSISTENCE
  • Valeur par défaut : true

consul_acl_datacenter

  • Nom du datacenter autoritaire pour les ACL
    • Remplacez avec la variable d'environnement CONSUL_ACL_DATACENTER
  • Valeur par défaut : {{ consul_datacenter }} (dc1)

consul_acl_down_policy

  • Politique d'acl par défaut
    • Remplacez avec la variable d'environnement CONSUL_ACL_DOWN_POLICY
  • Valeur par défaut : allow

consul_acl_token

  • Token ACL par défaut, seulement défini si fourni
    • Remplacez avec la variable d'environnement CONSUL_ACL_TOKEN
  • Valeur par défaut : ''

consul_acl_agent_token

  • Utilisé pour les clients et serveurs afin d'effectuer des opérations internes sur le catalogue de services. Consultez : acl_agent_token
    • Remplacez avec la variable d'environnement CONSUL_ACL_AGENT_TOKEN
  • Valeur par défaut : ''

consul_acl_agent_master_token

  • Un token d'accès spécial qui a des privilèges d'écriture de politique ACL sur chaque agent où il est configuré
    • Remplacez avec la variable d'environnement CONSUL_ACL_AGENT_MASTER_TOKEN
  • Valeur par défaut : ''

consul_acl_default_policy

  • Politique ACL par défaut
    • Remplacez avec la variable d'environnement CONSUL_ACL_DEFAULT_POLICY
  • Valeur par défaut : allow

consul_acl_master_token

  • Token maître ACL
    • Remplacez avec la variable d'environnement CONSUL_ACL_MASTER_TOKEN
  • Valeur par défaut : UUID

consul_acl_master_token_display

  • Afficher le Token Maître ACL généré
    • Remplacez avec la variable d'environnement CONSUL_ACL_MASTER_TOKEN_DISPLAY
  • Valeur par défaut : false

consul_acl_replication_enable

  • Activer la réplication ACL sans token (permet de définir le token via l'API)
    • Remplacez avec la variable d'environnement CONSUL_ACL_REPLICATION_TOKEN_ENABLE
  • Valeur par défaut : ''

consul_acl_replication_token

  • Token de réplication d'ACL
    • Remplacez avec la variable d'environnement CONSUL_ACL_REPLICATION_TOKEN_DISPLAY
  • Valeur par défaut : SN4K3OILSN4K3OILSN4K3OILSN4K3OIL

consul_tls_enable

  • Activer TLS
    • Remplacez avec la variable d'environnement CONSUL_ACL_TLS_ENABLE
  • Valeur par défaut : false

consul_tls_copy_keys

  • Permet ou désactive la gestion des fichiers TLS
    • Désactivez-le si vous activez TLS (consul_tls_enable) mais souhaitez gérer les fichiers TLS vous-même
  • Valeur par défaut : true

consul_tls_dir

  • Répertoire cible pour les fichiers TLS
    • Remplacez avec la variable d'environnement CONSUL_TLS_DIR
  • Valeur par défaut : /etc/consul/ssl

consul_tls_ca_crt

  • Nom du fichier de certificat CA
    • Remplacez avec la variable d'environnement CONSUL_TLS_CA_CRT
  • Valeur par défaut : ca.crt

consul_tls_server_crt

  • Certificat serveur
    • Remplacez avec la variable d'environnement CONSUL_TLS_SERVER_CRT
  • Valeur par défaut : server.crt

consul_tls_server_key

  • Clé du serveur
    • Remplacez avec la variable d'environnement CONSUL_TLS_SERVER_KEY
  • Valeur par défaut : server.key

consul_tls_files_remote_src

  • Copier à partir d'une source distante si les fichiers TLS sont déjà sur l'hôte
  • Valeur par défaut : false

consul_encrypt_enable

  • Activer le chiffrement Gossip
  • Valeur par défaut : true

consul_encrypt_verify_incoming

  • Vérifier les connexions Gossip entrantes
  • Valeur par défaut : true

consul_encrypt_verify_outgoing

  • Vérifier les connexions Gossip sortantes
  • Valeur par défaut : true

consul_disable_keyring_file

  • Si défini, le keyring ne sera pas persisté dans un fichier. Tous les clés installées seront perdues au démarrage, et seule la clé spécifiée -encrypt sera disponible au démarrage.
  • Valeur par défaut : false

consul_raw_key

  • Définir la clé de chiffrement ; elle doit être identique à travers un cluster. Si elle n'est pas présente, la clé sera générée et récupérée du serveur initialisé.
  • Valeur par défaut : ''

consul_tls_verify_incoming

  • Vérifier les connexions entrantes
    • Remplacez avec la variable d'environnement CONSUL_TLS_VERIFY_INCOMING
  • Valeur par défaut : false

consul_tls_verify_outgoing

  • Vérifier les connexions sortantes
    • Remplacez avec la variable d'environnement CONSUL_TLS_VERIFY_OUTGOING
  • Valeur par défaut : true

consul_tls_verify_incoming_rpc

  • Vérifier les connexions entrantes sur les points de terminaison RPC (certificats clients)
    • Remplacez avec la variable d'environnement CONSUL_TLS_VERIFY_INCOMING_RPC
  • Valeur par défaut : false

consul_tls_verify_incoming_https

  • Vérifier les connexions entrantes sur les points de terminaison HTTPS (certificats clients)
    • Remplacez avec la variable d'environnement CONSUL_TLS_VERIFY_INCOMING_HTTPS
  • Valeur par défaut : false

consul_tls_verify_server_hostname

  • Vérifier le nom d'hôte du serveur
    • Remplacez avec la variable d'environnement CONSUL_TLS_VERIFY_SERVER_HOSTNAME
  • Valeur par défaut : false

consul_tls_min_version

  • Version TLS minimale acceptable
    • Peut être remplacée par la variable d'environnement CONSUL_TLS_MIN_VERSION
    • Pour les versions < 1.12.0, utilisez 'tls12,tls13,...'
  • Valeur par défaut : TLSv1_2

consul_tls_cipher_suites

consul_tls_prefer_server_cipher_suites

auto_encrypt

auto_encrypt:
  enabled: false
  • Exemple :
auto_encrypt:
  enabled: true
  dns_san: ["consul.com"]
  ip_san: ["127.0.0.1"]

consul_force_install

  • Si vrai, alors installer toujours Consul. Sinon, Consul sera installé uniquement s'il n'est pas présent sur l'hôte, ou si la version installée diffère de consul_version.
  • Le rôle ne gère pas l'orchestration d'une mise à jour en continu des serveurs suivie par les nœuds clients
  • Valeur par défaut : false

consul_install_remotely

  • Que ce soit pour télécharger les fichiers d'installation directement sur les hôtes distants
  • C'est la seule option sous Windows car WinRM est quelque peu limité à cet égard
  • Valeur par défaut : false

consul_install_from_repo

  • Booléen, que ce soit pour installer Consul depuis le dépôt plutôt que d'installer le binaire directement.
  • Distributions prises en charge : Alma Linux, Amazon Linux, CentOS, Debian, Fedora, Ubuntu, Red Hat, Rocky.
  • Valeur par défaut : false

consul_ui

  • Activer l'interface utilisateur de Consul ?
  • Valeur par défaut : true

consul_ui_legacy

  • Activer le mode d'interface utilisateur légacy de Consul
  • Valeur par défaut : false

consul_disable_update_check

  • Désactiver la vérification des mises à jour de Consul ?
  • Valeur par défaut : false

consul_enable_script_checks

  • Activer les vérifications basées sur des scripts ?
  • Valeur par défaut : false
  • Cela est découragé au profit de consul_enable_local_script_checks.

consul_enable_local_script_checks

  • Activer les vérifications de script définies localement ?
  • Valeur par défaut : false

consul_raft_protocol

  • Protocole Raft à utiliser.
  • Valeur par défaut :
    • Versions de Consul <= 0.7.0 : 1
    • Versions de Consul > 0.7.0 : 3

consul_node_role

  • Le rôle Consul du nœud, l'un de : bootstrap, server, ou client
  • Valeur par défaut : client

Un serveur doit être désigné comme serveur de bootstrap, et les autres serveurs se connecteront à ce serveur. Vous pouvez également spécifier client comme rôle, et Consul sera configuré comme un agent client au lieu d'un serveur.

Il existe deux méthodes pour configurer un cluster : l'une consiste à choisir explicitement le serveur de bootstrap, l'autre à laisser les serveurs élire un leader parmi eux.

Voici un exemple de la manière dont l'inventaire des hôtes pourrait être défini pour un simple cluster de 3 serveurs, le premier étant le serveur de bootstrap / leader désigné :

[consul_instances]
consul1.consul consul_node_role=bootstrap
consul2.consul consul_node_role=server
consul3.consul consul_node_role=server
consul4.local consul_node_role=client

Ou vous pouvez utiliser la méthode plus simple permettant aux serveurs de procéder à leur élection :

[consul_instances]
consul1.consul consul_node_role=server consul_bootstrap_expect=true
consul2.consul consul_node_role=server consul_bootstrap_expect=true
consul3.consul consul_node_role=server consul_bootstrap_expect=true
consul4.local consul_node_role=client

Remarque : cette deuxième forme est la préférée, car elle est plus simple.

consul_autopilot_enable

Autopilot est un ensemble de nouvelles fonctionnalités ajoutées dans Consul 0.8 visant à permettre une gestion automatique et conviviale des serveurs Consul. Il inclut le nettoyage des serveurs morts, la surveillance de l'état du cluster Raft et l'introduction stable des serveurs.

https://www.consul.io/docs/guides/autopilot.html

  • Activer la configuration d'Autopilot (sera écrite sur le nœud de bootstrap)
    • Remplacez avec la variable d'environnement CONSUL_AUTOPILOT_ENABLE
  • Valeur par défaut : false

consul_autopilot_cleanup_dead_Servers

Les serveurs morts seront périodiquement nettoyés et supprimés de l'ensemble des pairs Raft, afin d'éviter qu'ils n'interfèrent avec la taille du quorum et les élections de leaders. Ce nettoyage se produira également chaque fois qu'un nouveau serveur sera ajouté avec succès au cluster.

  • Activer la configuration d'Autopilot (sera écrite sur le nœud de bootstrap)
    • Remplacez avec la variable d'environnement CONSUL_AUTOPILOT_CLEANUP_DEAD_SERVERS
  • Valeur par défaut : false

consul_autopilot_last_contact_threshold

Utilisé dans le contrôle de santé de serf pour déterminer la santé des nœuds.

  • Définit le seuil de temps depuis le dernier contact
    • Remplacez avec la variable d'environnement CONSUL_AUTOPILOT_LAST_CONTACT_THRESHOLD
  • Valeur par défaut : 200ms

consul_autopilot_max_trailing_logs

  • Utilisé dans le contrôle de santé de serf pour définir un nombre maximum d'entrées de journal que les nœuds peuvent ignorer par rapport au leader
    • Remplacez avec la variable d'environnement CONSUL_AUTOPILOT_MAX_TRAILING_LOGS
  • Valeur par défaut : 250

consul_autopilot_server_stabilization_time

  • Temps accordé à un nouveau nœud pour se stabiliser
    • Remplacez avec la variable d'environnement CONSUL_AUTOPILOT_SERVER_STABILIZATION_TIME
  • Valeur par défaut : 10s

consul_autopilot_redundancy_zone_tag

Consul Enterprise Seulement (nécessite que CONSUL_ENTERPRISE soit défini sur true)

  • Remplacez avec la variable d'environnement CONSUL_AUTOPILOT_REDUNDANCY_ZONE_TAG
  • Valeur par défaut : az

consul_autopilot_disable_upgrade_migration

Consul Enterprise Seulement (nécessite que CONSUL_ENTERPRISE soit défini sur true)

  • Remplacez avec la variable d'environnement CONSUL_AUTOPILOT_DISABLE_UPGRADE_MIGRATION
  • Valeur par défaut : false

consul_autopilot_upgrade_version_tag

Consul Enterprise Seulement (nécessite que CONSUL_ENTERPRISE soit défini sur true)

  • Remplacez avec la variable d'environnement CONSUL_AUTOPILOT_UPGRADE_VERSION_TAG
  • Valeur par défaut : ''

consul_debug

  • Permet la génération de fichiers de configuration supplémentaires dans le répertoire de configuration de Consul à des fins de débogage
  • Valeur par défaut : false

consul_config_template_path

  • Si le modèle de configuration par défaut ne convient pas à vos besoins, vous pouvez le remplacer par le vôtre.
  • Valeur par défaut : templates/config.json.j2.

consul_rolling_restart

  • Redémarre un nœud Consul un par un pour éviter les interruptions de service sur le cluster existant (uniquement sur les plateformes Unix).
  • Valeur par défaut : false

consul_rolling_restart_delay_sec

  • Ajoute un délai entre le départ de Consul et le redémarrage du nœud (uniquement sur les plateformes Linux).
  • Valeur par défaut : 5

Section de Configuration Personnalisée

Étant donné que Consul charge la configuration à partir de fichiers et de répertoires dans l'ordre lexical, en fusionnant typiquement les configurations précédemment analysées, vous pouvez définir des configurations personnalisées via consul_config_custom, qui sera développé dans un fichier nommé config_z_custom.json au sein de votre consul_config_path, qui sera chargé après toute autre configuration par défaut.

Un exemple d'utilisation pour activer télémetrie :

  vars:
    consul_config_custom:
      telemetry:
        dogstatsd_addr: "localhost:8125"
        dogstatsd_tags:
          - "sécurité"
          - "conformité"
        disable_hostname: true

Agent de Snapshot Consul

L'agent de snapshot Consul prend des instantanés de sauvegarde à un intervalle défini et les stocke. Doit avoir l'entreprise.

consul_snapshot

  • Booléen, vrai configurera et démarrera l'agent de snapshot (entreprise uniquement)
  • Valeur par défaut : false

consul_snapshot_storage

  • Emplacement où les instantanés seront stockés. REMARQUE : le chemin doit se terminer par snaps
  • Valeur par défaut : {{ consul_config_path }}/snaps

consul_snapshot_interval

  • Valeur par défaut : 1h

consul_snapshot_retain

Variables d'OS et de Distribution

Le binaire consul fonctionne sur la plupart des plateformes Linux et n'est pas spécifique à une distribution. Cependant, certaines distributions nécessitent l'installation de paquets OS spécifiques avec des noms de paquets différents.

consul_centos_pkg

  • Nom du fichier du paquet Consul
  • Valeur par défaut : {{ consul_version }}_linux_amd64.zip

consul_centos_url

  • URL de téléchargement du paquet Consul
  • Valeur par défaut : {{ consul_zip_url }}

consul_centos_sha256

  • Résumé SHA256 de téléchargement de Consul
  • Valeur par défaut : Résumé SHA256

consul_centos_os_packages

  • Liste des paquets OS à installer
  • Valeur par défaut : liste

consul_debian_pkg

  • Nom du fichier du paquet Consul
  • Valeur par défaut : {{ consul_version }}_linux_amd64.zip

consul_debian_url

  • URL de téléchargement du paquet Consul
  • Valeur par défaut : {{ consul_zip_url }}

consul_debian_sha256

  • Résumé SHA256 de téléchargement de Consul
  • Valeur par défaut : Résumé SHA256

consul_debian_os_packages

  • Liste des paquets OS à installer
  • Valeur par défaut : liste

consul_redhat_pkg

  • Nom du fichier du paquet Consul
  • Valeur par défaut : {{ consul_version }}_linux_amd64.zip

consul_redhat_url

  • URL de téléchargement du paquet Consul
  • Valeur par défaut : {{ consul_zip_url }}

consul_redhat_sha256

  • Résumé SHA256 de téléchargement de Consul
  • Valeur par défaut : Résumé SHA256

consul_redhat_os_packages

  • Liste des paquets OS à installer
  • Valeur par défaut : liste

consul_systemd_restart_sec

  • Valeur entière pour l'option RestartSec de l'unité systemd
  • Valeur par défaut : 42

consul_systemd_limit_nofile

  • Valeur entière pour l'option LimitNOFILE de l'unité systemd
  • Valeur par défaut : 65536

consul_systemd_restart

  • Valeur chaîne pour l'option Restart de l'unité systemd
  • Valeur par défaut : on-failure

consul_ubuntu_pkg

  • Nom du fichier du paquet Consul
  • Valeur par défaut : {{ consul_version }}_linux_amd64.zip

consul_ubuntu_url

  • URL de téléchargement du paquet Consul
  • Valeur par défaut : {{ consul_zip_url }}

consul_ubuntu_sha256

  • Résumé SHA256 de téléchargement de Consul
  • Valeur par défaut : Résumé SHA256

consul_ubuntu_os_packages

  • Liste des paquets OS à installer
  • Valeur par défaut : liste

consul_windows_pkg

  • Nom du fichier du paquet Consul
  • Valeur par défaut : {{ consul_version }}_windows_amd64.zip

consul_windows_url

  • URL de téléchargement du paquet Consul
  • Valeur par défaut : {{ consul_zip_url }}

consul_windows_sha256

  • Résumé SHA256 de téléchargement de Consul
  • Valeur par défaut : Résumé SHA256

consul_windows_os_packages

  • Liste des paquets OS à installer
  • Valeur par défaut : liste

consul_performance

  • Liste d'éléments d'optimisation des performances de Consul
  • Valeur par défaut : liste

raft_multiplier

  • Multiplicateur Raft échelle les paramètres de synchronisation clés de Raft
  • Valeur par défaut : 1

leave_drain_time

rpc_hold_timeout

  • Délai de demande RPC est la durée pendant laquelle un client ou un serveur réessaiera des demandes RPC internes lors des élections de leaders
  • Valeur par défaut : 7s

leave_on_terminate

  • leave_on_terminate Si activé, lorsque l'agent reçoit un signal TERM, il enverra un message Leave au reste du cluster et quittera progressivement. Le comportement par défaut de cette fonctionnalité varie selon que l'agent fonctionne en mode client ou serveur. Pour les agents en mode client, cela est par défaut vrai, et pour les agents en mode serveur, cela est par défaut faux.

consul_limit

  • Limites des nœuds Consul (clé-valeur)
  • Pris en charge dans la version 0.9.3 ou ultérieure de Consul
  • Valeur par défaut : {}
  • Exemple :
consul_limits:
    http_max_conns_per_client: 250
    rpc_max_conns_per_client: 150

Dépendances

Ansible nécessite GNU tar et ce rôle utilise localement le module unarchive pour plus d'efficacité, donc assurez-vous que votre système a gtar et unzip installés et dans le PATH. Si vous ne l'avez pas, ce rôle installera unzip sur les machines distantes pour décompresser les fichiers ZIP.

Si vous êtes sur un système avec un autre tar (c'est-à-dire BSD), comme macOS et que vous voyez des erreurs étranges pendant les tâches de décompresse, vous pourriez manquer gtar.

L'installation d'Ansible sur Windows nécessite les PowerShell Community Extensions. Ceux-ci sont déjà installés sur Windows Server 2012 R2 et versions ultérieures. Si vous essayez ce rôle sur Windows Server 2008 ou antérieur, vous devrez installer les extensions ici.

Exemple de Playbook

L'installation de base est possible en utilisant le playbook inclus site.yml :

ansible-playbook -i hosts site.yml

Vous pouvez également passer des variables en utilisant l'option --extra-vars à la commande ansible-playbook :

ansible-playbook -i hosts site.yml --extra-vars "consul_datacenter=maui"

Soyez conscient qu'en ce qui concerne le clustering, l'inclus d'site.yml fait ce qui suit :

  1. Exécute le rôle consul (installe Consul et initie le cluster)
  2. Reconfigure le nœud de bootstrap pour fonctionner sans paramètre bootstrap-expect
  3. Redémarre le nœud de bootstrap

Support ACL

Un support de base pour les ACL est inclus dans le rôle. Vous pouvez définir la variable d'environnement CONSUL_ACL_ENABLE sur true, et également définir la variable d'environnement CONSUL_ACL_DATACENTER sur sa valeur correcte pour votre environnement avant d'exécuter votre playbook ; par exemple :

CONSUL_ACL_ENABLE=true CONSUL_ACL_DATACENTER=maui \
CONSUL_ACL_MASTER_TOKEN_DISPLAY=true ansible-playbook -i uat_hosts aloha.yml

Si vous voulez que la valeur du Token Maître ACL généré automatiquement soit affichée dans la sortie standard pendant le jeu, définissez la variable d'environnement CONSUL_ACL_MASTER_TOKEN_DISPLAY sur true comme dans l'exemple ci-dessus.

Si vous souhaitez utiliser des tokens existants, définissez également les variables d'environnement CONSUL_ACL_MASTER_TOKEN et CONSUL_ACL_REPLICATION_TOKEN, par exemple :

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

Il existe plusieurs variables Ansible ACL que vous pouvez remplacer pour affiner davantage votre configuration ACL initiale. Elles ne sont pas toutes actuellement récupérées à partir de variables d'environnement, mais disposent de certains paramètres par défaut sensés.

Vérifiez defaults/main.yml pour voir comment certains des paramètres par défaut (c’est-à-dire les tokens) sont générés automatiquement.

Support de Transfert DNS Dnsmasq

Le rôle inclut désormais le support pour le transfert DNS avec Dnsmasq.

Activez-le ainsi :

ansible-playbook -i hosts site.yml --extra-vars "consul_dnsmasq_enable=true"

Ensuite, vous pouvez interroger n'importe lequel des agents via DNS directement via le port 53, par exemple :

dig @consul1.consul consul3.node.consul

; <<>> DiG 9.8.3-P1 <<>> @consul1.consul consul3.node.consul
; (1 serveur trouvé)
;; options globales : +cmd
;; Obtenu réponse :
;; ->>HEADER<<- opcode : QUERY, statut : NOERROR, id : 29196
;; flags : qr aa rd ra ; QUERY : 1, RÉPONSE : 1, AUTORITÉ : 0, ADDITIONNEL : 0

;; SECTION DE LA QUESTION :
;consul3.node.consul.   IN  A

;; SECTION DE LA RÉPONSE :
consul3.node.consul.  0 IN  A 10.1.42.230

;; Temps de requête : 42 msec
;; SERVEUR : 10.1.42.210#53(10.1.42.210)
;; QUAND : Dim  7 Août 2016
;;

consul_delegate_datacenter_dns

  • Que ce soit pour déléguer le domaine DNS du datacenter Consul à Consul
  • Valeur par défaut : false

consul_dnsmasq_enable

  • Que ce soit pour installer et configurer le transfert API DNS sur le port 53 avec DNSMasq
    • Remplacez avec la variable d'environnement CONSUL_DNSMASQ_ENABLE
  • Valeur par défaut : false

consul_dnsmasq_bind_interfaces

  • En définissant cette option sur true, cela empêche DNSmasq de se lier par défaut à 0.0.0.0, mais lui demande de se lier aux interfaces réseau spécifiques qui correspondent à l'option consul_dnsmasq_listen_addresses
  • Valeur par défaut : false

consul_dnsmasq_consul_address

  • Adresse utilisée par DNSmasq pour interroger Consul
  • Valeur par défaut : consul_address.dns
  • Valeur par défaut : 127.0.0.1 si le DNS de Consul est lié à toutes les interfaces (par exemple, 0.0.0.0)

consul_dnsmasq_cache

  • taille du cache dnsmasq
  • Si plus petite que 0, les paramètres par défaut de dnsmasq seront utilisés.
  • Valeur par défaut : -1

consul_dnsmasq_servers

  • Serveurs DNS en amont utilisés par dnsmasq
  • Valeur par défaut : 8.8.8.8 et 8.8.4.4

consul_dnsmasq_revservers

  • Sous-réseaux de recherche inversée
  • Valeur par défaut : []

consul_dnsmasq_no_poll

  • Ne pas interroger /etc/resolv.conf
  • Valeur par défaut : false

consul_dnsmasq_no_resolv

  • Ignorer le fichier /etc/resolv.conf
  • Valeur par défaut : false

consul_dnsmasq_local_service

  • Autoriser uniquement les requêtes provenant de sous-réseaux locaux
  • Valeur par défaut : false

consul_dnsmasq_listen_addresses

  • Liste personnalisée des adresses à écouter.
  • Valeur par défaut : []

consul_connect_enabled

  • Activer la fonctionnalité Consul Connect
  • Valeur par défaut : false

consul_cleanup_ignore_files

  • Liste des fichiers à ignorer lors des étapes de nettoyage
  • Valeur par défaut : [{{ consul_configd_path }}/consul.env]

Support de Transfert DNS avec iptables

Ce rôle peut également utiliser iptables au lieu de Dnsmasq pour transférer des requêtes DNS vers Consul. Vous pouvez l'activer de cette manière :

ansible-playbook -i hosts site.yml --extra-vars "consul_iptables_enable=true"

Remarque : le transfert iptables et le transfert Dnsmasq ne peuvent pas être utilisés simultanément et l'exécution du rôle s'arrêtera avec une erreur si une telle configuration est spécifiée.

Support TLS

Vous pouvez activer le chiffrement TLS en déposant un certificat CA, un certificat serveur et une clé serveur dans le répertoire files du rôle.

Par défaut, ceux-ci sont nommés :

  • ca.crt (peut être remplacé par {{ consul_tls_ca_crt }})
  • server.crt (peut être remplacé par {{ consul_tls_server_crt }})
  • server.key (peut être remplacé par {{ consul_tls_server_key }})

Ensuite, soit définissez la variable d'environnement CONSUL_TLS_ENABLE=true, soit utilisez la variable Ansible consul_tls_enable=true au moment de l'exécution du rôle.

Support de gestion des services

Vous pouvez créer un fichier de configuration pour les services consuls. Ajoutez une liste de services dans le consul_services.

nom Requis Type Par défaut Commentaire
consul_services Faux Liste [] Liste d'objets services (voir ci-dessous)

Objet de services :

nom Requis Type Par défaut Commentaire
nom Vrai chaîne Nom du service
id Faux chaîne ID du service
tags Faux liste Liste de balises de chaîne
adresse Faux chaîne adresse IP spécifique au service
méta Faux dict Dict de 64 clés/valeurs avec sémantique de chaîne
port Faux entier Port du service
enable_tag_override Faux bool activer/désactiver la fonctionnalité anti-entropy pour le service
kind Faux chaîne identifier le service comme une instance de proxy Connect
proxy Faux dict configuration de proxy
checks Faux liste Liste de configuration des vérifications
connect Faux dict Configuration des objets Connect
weights Faux dict Poids d'un service dans les réponses DNS SRV
token Faux chaîne Token ACL à utiliser pour enregistrer ce service

Exemple de configuration :

consul_services:
  - name: "openshift"
    tags: ['production']
  - name: "redis"
    id: "redis"
    tags: ['primary']
    address: ""
    meta:
      meta: "pour mon service"
    proxy:
      destination_service_name: "redis"
      destination_service_id: "redis1"
      local_service_address: "127.0.0.1"
      local_service_port: 9090
      config: {}
      upstreams:  []
    checks:
      - args: ["/home/consul/check.sh"]
        interval: "10s"

Ensuite, vous pouvez vérifier que le service a bien été ajouté au catalogue

> consul catalog services
consul
openshift
redis

Remarque : pour supprimer un service qui a été ajouté via ce rôle, retirez-le de la liste consul_services et appliquez à nouveau le rôle.

Vagrant et VirtualBox

Voir examples/README_VAGRANT.md pour des détails sur des déploiements rapides avec Vagrant sous VirtualBox pour le développement, l'évaluation, les tests, etc.

Licence

BSD

Informations sur l'auteur

Brian Shumate

Contributeurs

Un grand merci aux personnes listées dans CONTRIBUTORS.md pour leurs contributions à ce projet.

Les contributions sont les bienvenues, à condition que vous puissiez accepter les termes décrits dans CONTRIBUTING.md.

À propos du projet

Consul cluster role

Installer
ansible-galaxy install brianshumate.consul
Licence
bsd-2-clause
Téléchargements
492.4k
Propriétaire
Art ⁂ Data ⁂ Boards ⁂ Water