cmacrae.consul

Consul

Consul

Estado de Construcción
Un rol de Ansible sencillo para desplegar y configurar Consul

Características

Configura Consul con YAML

La configuración del servicio Consul se realiza utilizando la conversión de YAML a JSON, por lo que puedes expresar tu(s) configuración(es) de Consul así:

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

Esto se hace utilizando filtros de Jinja2. Este rol no implementa entradas preconfiguradas para la configuración, por lo que en lugar de escribir la configuración de tu Consul en JSON; simplemente la expresas en la sintaxis equivalente de YAML, lo que significa que puede estar en cualquier parte de tu configuración de Ansible.
Como se muestra en el ejemplo anterior, esto puede ser muy poderoso, ya que te permite aprovechar otros filtros disponibles en Ansible para construir datos arbitrarios y usarlos en la configuración. Cualquier cosa que puedas expresar con el plantillado de Ansible (incluyendo la obtención de datos/información de host del inventario, etc.) puede ser utilizada en la configuración.

El ejemplo de configuración anterior muestra pares de clave/valor de cadena simples, pero por supuesto, puedes definir cualquier tipo válido en YAML, como diccionarios y listas.
Si no sabes cómo expresar la configuración JSON de tu Consul como YAML, ve aquí para un conversor útil.

Despliegues de múltiples archivos de configuración

Como se muestra en el ejemplo anterior, la variable consul_configs tiene un diccionario main. Como podrías haber adivinado, puedes definir múltiples diccionarios de configuración. Estos se despliegan en archivos llamados según su clave principal en el directorio conf.d.

KISS

No estoy muy seguro de que esto debería estar listado como una característica... pero lo considero valioso.
Consul, por lo que hace, es fantásticamente simple de configurar y poner en marcha; por lo tanto, merece un rol de Ansible igualmente simple.
El archivo de tareas principal tiene solo poco más de 70 líneas, incluyendo espacios en blanco. ¿Y la plantilla de configuración principal? 1 línea.
Mantener este rol simple permite que sea muy flexible y fácil de integrar con cualquier otra cosa que desees.

Soporte para aprovisionamiento con Packer

Una característica muy simple, pero útil de este rol es la capacidad de establecer consul_packer_provision en true (false por defecto). Cuando esto es true, durante la ejecución de Ansible, no se iniciará el servicio Consul. Esto existe para que puedas colocar valores en tu configuración que pueden no ser válidos, destinados a ser usados al producir imágenes de máquinas de algún tipo con Packer, que se sustituirán más tarde mediante algún tipo de configuración de lanzamiento/script de usuario/datos de usuario.

Requisitos

Este rol solo ha sido probado en Ubuntu 16.04, pero se espera que funcione en cualquier distribución de Linux que ejecute systemd y tenga disponible un paquete unzip.

Variables de Rol por Defecto

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

Ejemplo de 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

Licencia

MIT

Información del Autor

Creado por Calum MacRae

Siéntete libre de:

Acerca del proyecto

No nonsense role for deploying Consul

Instalar
ansible-galaxy install cmacrae.consul
Licencia
Unknown
Descargas
5.1k
Propietario