consul

Consul

Consul

Статус сборки
Простая роль Ansible для развертывания и настройки Consul

Особенности

Настройка Consul с помощью YAML

Настройка сервиса Consul производится с помощью преобразования YAML в JSON, что позволяет выражать ваши конфигурации Consul следующим образом:

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

Это достигается с помощью фильтров Jinja2. Эта роль не включает заранее настроенных конфигураций, поэтому вместо того, чтобы писать конфигурацию Consul в JSON, вы можете просто выразить ее в синтаксисе YAML, который может находиться где угодно в вашей конфигурации Ansible.
Как показано в примере выше, это может быть очень мощно, так как позволяет использовать другие доступные фильтры Ansible для создания произвольных данных и их использования в конфигурации. Все, что можно выразить с помощью шаблонизации Ansible (включая извлечение данных/информации о хостах из инвентаря и т. д.), может быть использовано в конфигурации.

Вышеупомянутая конфигурация показывает простые пары ключ/значение в виде строки, но, конечно же, вы можете определить любой действительный тип в YAML, такой как словари и списки.
Если вы не знаете, как выразить вашу конфигурацию JSON Consul в YAML, смотрите здесь удобный конвертер.

Развертывание нескольких конфигурационных файлов

Как показано в примере выше, переменная consul_configs имеет словарь main. Как вы могли догадаться, вы можете определить несколько словарей с конфигурациями. Они затем развертываются в файлы, названные в честь родительского ключа в директории conf.d.

KISS

Не совсем уверен, что это стоит рассматривать как функцию... но я считаю это полезным.
Consul, за то, что делает, удивительно прост в настройке и запуске - следовательно, он заслуживает такой же простой роли Ansible.
Основной файл задач содержит чуть более 70 строк, включая пробелы. А основной шаблон конфигурации? 1 строка.
Сохранение этой роли простой позволяет ей быть гибкой и легко интегрироваться с чем угодно, что вам может понадобиться.

Поддержка развертывания Packer

Очень простая, но полезная функция этой роли - возможность установить consul_packer_provision в true (по умолчанию false). Когда это значение true, во время выполнения Ansible сервис Consul не будет запущен. Это нужно, чтобы вы могли разместить значения в вашей конфигурации, которые могут быть недействительными и предназначены для использования при создании образов машин с помощью Packer, которые позже будут заменены с помощью конфигурации запуска/скрипта пользователя/данных пользователя.

Требования

Эта роль была протестирована только на Ubuntu 16.04, но должна работать на любом дистрибутиве Linux, который использует systemd и имеет пакет unzip.

Переменные роли по умолчанию

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

Пример плейбука

- 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

Лицензия

MIT

Информация об авторе

Создано Каллом Макрэем

Не стесняйтесь:

О проекте

No nonsense role for deploying Consul

Установить
ansible-galaxy install cmacrae/ansible-consul
Лицензия
Unknown
Загрузки
5062
Владелец