cmacrae.consul

Consul

Consul

构建状态
一个简单明了的 Ansible 角色,用于部署和配置 Consul

特点

使用 YAML 配置 Consul

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 中定义任何有效类型,如字典和列表。
如果您不知道怎么将 Consul 的 JSON 配置转为 YAML,可以点击这里使用方便的转换器

多配置文件部署

如上面的示例所示,consul_configs 变量有一个 main 字典。您可以定义多个配置字典。然后这些配置会被部署到以其父键命名的文件,在 conf.d 目录中。

保持简单

我不太确定这是否应该列为一个功能……但我认为它很有价值。
Consul 作为一款工具,其配置和启动非常简单,因此也值得有一个同样简单的 Ansible 角色。
主要的任务文件仅70多行,包括空白行。主要配置模板? 1行。
保持这个角色简单,使它具有很好的灵活性,并且易于与您可能想要的其他内容进行集成。

Packer 供应支持

此角色的一个非常简单但实用的特性是可以将 consul_packer_provision 设置为 true(默认值为 false)。当设置为 true 时,在 Ansible 运行期间,它不会启动 Consul 服务。这是为了让您可以在配置中放置可能无效的值,旨在与 Packer 一起生成某种机器映像使用,后续可以通过某种启动配置/用户脚本/用户数据替换。

要求

这个角色仅在 Ubuntu 16.04 上进行了测试,但应该可以在运行 systemd 并且可用 unzip 包的任何 Linux 发型版上运行。

默认角色变量

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

作者信息

由 Calum MacRae 创建

欢迎联系我:

关于项目

No nonsense role for deploying Consul

安装
ansible-galaxy install cmacrae.consul
许可证
Unknown
下载
5.1k
拥有者