cmacrae.consul

Consul

Consul

Statut de la construction
Un rôle Ansible simple pour déployer et configurer Consul

Caractéristiques

Configurer Consul avec YAML

La configuration du service Consul se fait par conversion YAML en JSON, vous pouvez donc exprimer vos configurations Consul comme suit :

consul_master_token: monToken
consul_server: vrai
consul_configs:
  principal:
    acl_datacenter: pantheon
    acl_master_token: "{{ consul_master_token | to_uuid }}"
    bootstrap: vrai
    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: vrai

Cela se fait en utilisant des filtres Jinja2. Ce rôle n'implémente aucune entrée préconfigurée pour la configuration, donc plutôt que d'écrire la configuration de votre Consul en JSON ; vous l'exprimez simplement dans la syntaxe équivalente de YAML, ce qui signifie qu'elle peut se trouver n'importe où dans votre configuration Ansible.
Comme nous l'avons vu dans l'exemple ci-dessus, cela peut être très puissant, car cela permet d'utiliser d'autres filtres disponibles dans Ansible pour construire des données arbitraires et les utiliser dans la configuration. Tout ce que vous pouvez exprimer avec le système de templates d'Ansible (y compris la récupération de données/informations sur les hôtes à partir de l'inventaire, etc.) peut être utilisé dans la configuration.

L'exemple de configuration ci-dessus montre des paires clé/valeur simples, mais vous pouvez bien sûr définir tout type valide en YAML, tel que des dictionnaires et des listes.
Si vous ne savez pas comment exprimer la configuration JSON de votre Consul en YAML, voir ici pour un convertisseur pratique.

Déploiements de plusieurs fichiers de configuration

Comme montré dans l'exemple ci-dessus, la variable consul_configs a un dictionnaire principal. Comme vous l'avez peut-être deviné ; vous pouvez définir plusieurs dictionnaires de configuration. Ceux-ci sont ensuite déployés dans des fichiers nommés d'après leur clé parente dans le répertoire conf.d.

KISS

Je ne suis pas vraiment sûr que cela devrait être listé comme une caractéristique... mais je le considère comme précieux.
Consul, pour ce qu'il fait, est fantastiquement simple à configurer et à démarrer - de ce fait, il mérite un rôle Ansible tout aussi simple.
Le fichier principal des tâches compte juste un peu plus de 70 lignes, espaces compris. Et le modèle de configuration principal ? 1 ligne.
Garder ce rôle simple permet d'être très flexible et facile à intégrer avec tout autre outil que vous pourriez vouloir utiliser.

Support de provisionnement Packer

Une caractéristique très simple, mais utile de ce rôle est la possibilité de définir consul_packer_provision sur vrai (faux par défaut). Lorsque c'est vrai, pendant l'exécution d'Ansible, il ne démarrera pas le service Consul. Cela existe pour que vous puissiez placer des valeurs dans votre configuration qui peuvent ne pas être valides, destinées à être utilisées lors de la production d'images de machines avec Packer, censées être remplacées plus tard par une sorte de configuration de lancement/script utilisateur/données utilisateur.

Exigences

Ce rôle n'a été testé que sur Ubuntu 16.04, mais devrait fonctionner sur n'importe quelle distribution Linux qui exécute systemd et dispose d'un package unzip.

Variables de rôle par défaut

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

Exemple de playbook

- hosts: consul_servers
  vars:
    consul_master_token: monToken
    consul_server: vrai
    consul_config:
      acl_datacenter: pantheon
      acl_master_token: "{{ consul_master_token | to_uuid }}"
      bootstrap: vrai
      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: vrai

  roles:
      - cmacrae.consul

Licence

MIT

Informations sur l'auteur

Créé par Calum MacRae

N'hésitez pas à :

À propos du projet

No nonsense role for deploying Consul

Installer
ansible-galaxy install cmacrae.consul
Licence
Unknown
Téléchargements
5.1k
Propriétaire