268 lines
7.1 KiB
YAML
268 lines
7.1 KiB
YAML
---
|
|
##########################
|
|
# General options ########
|
|
##########################
|
|
|
|
enable_vault: "no"
|
|
enable_consul: "yes"
|
|
enable_nomad: "no"
|
|
|
|
deployment_method: "host"
|
|
api_interface: "eth0"
|
|
api_interface_address: "{{ ansible_facts[api_interface]['ipv4']['address'] }}"
|
|
|
|
configuration_directory: "{{ lookup('env', 'PWD') }}/etc/hashistack"
|
|
sub_configuration_directories:
|
|
nomad_servers: "{{ configuration_directory }}/nomad_servers"
|
|
vault_servers: "{{ configuration_directory }}/vault_servers"
|
|
consul_servers: "{{ configuration_directory }}/consul_servers"
|
|
|
|
configuration_global_vars_file: "globals.yml"
|
|
|
|
default_container_extra_volumes:
|
|
- "/etc/timezone:/etc/timezone"
|
|
- "/etc/localtime:/etc/localtime"
|
|
|
|
#################
|
|
# Support options
|
|
#################
|
|
|
|
hashistack_supported_distributions:
|
|
- ubuntu
|
|
- debian
|
|
|
|
hashistack_supported_distribution_versions:
|
|
debian:
|
|
- "11"
|
|
- "12"
|
|
ubuntu:
|
|
- "20.04"
|
|
- "22.04"
|
|
|
|
preflight_enable_host_ntp_checks: true
|
|
vault_required_ports: [8200, 8201]
|
|
consul_required_ports: [8300, 8301, 8302, 8500, 8501, 8502, 8503, 8600]
|
|
nomad_required_ports: []
|
|
|
|
##########################
|
|
# Nomad options ##########
|
|
##########################
|
|
|
|
hashi_nomad_cni_plugins_install: true
|
|
hashi_nomad_start_service: true
|
|
hashi_nomad_cni_plugins_version: latest
|
|
hashi_nomad_cni_plugins_install_path: /opt/cni/bin
|
|
hashi_nomad_version: latest
|
|
hashi_nomad_deploy_method: host # deployment method, either host or docker
|
|
hashi_nomad_env_variables: {}
|
|
hashi_nomad_data_dir: /opt/nomad
|
|
hashi_nomad_extra_files: false
|
|
hashi_nomad_extra_files_src: /tmp/extra_files
|
|
hashi_nomad_extra_files_dst: /etc/nomad.d/extra_files
|
|
hashi_nomad_configuration: {}
|
|
|
|
##########################
|
|
# Consul options #########
|
|
##########################
|
|
|
|
consul_domain: consul
|
|
consul_datacenter: dc1
|
|
consul_primary_datacenter: dc1
|
|
consul_leave_on_terminate: true
|
|
consul_rejoin_after_leave: true
|
|
consul_enable_script_checks: true
|
|
|
|
##############################
|
|
# consul address configuration
|
|
##############################
|
|
|
|
consul_address_configuration:
|
|
# The address to which Consul will bind client interfaces,
|
|
# including the HTTP and DNS servers.
|
|
client_addr: "0.0.0.0"
|
|
# The address that should be bound to for internal cluster communications.
|
|
bind_addr: "{{ api_interface_address }}"
|
|
# The advertise address is used to change the address that we advertise to other nodes in the cluster.
|
|
advertise_addr: "{{ api_interface_address }}"
|
|
|
|
##########################
|
|
# consul ACL configuration
|
|
##########################
|
|
|
|
consul_acl_configuration:
|
|
enabled: false
|
|
default_policy: "allow" # can be allow or deny
|
|
enable_token_persistence: true
|
|
|
|
#####################
|
|
# extra configuration
|
|
#####################
|
|
|
|
consul_extra_configuration: {}
|
|
|
|
##########################
|
|
# consul DNS configuration
|
|
##########################
|
|
|
|
consul_dns_configuration:
|
|
allow_stale: true
|
|
enable_truncate: true
|
|
only_passing: true
|
|
|
|
hashi_consul_start_service: true
|
|
hashi_consul_version: latest
|
|
hashi_consul_deploy_method: "{{ deployment_method }}"
|
|
hashi_consul_env_variables: {}
|
|
hashi_cosul_config_dir: "/etc/consul.d"
|
|
hashi_consul_data_dir: "/opt/consul"
|
|
hashi_consul_extra_files: false
|
|
hashi_consul_extra_files_src: "{{ sub_configuration_directories.consul_servers }}/config"
|
|
hashi_consul_extra_files_dst: "{{ hashi_consul_config_dir }}/config"
|
|
hashi_consul_envoy_install: false
|
|
hashi_consul_envoy_version: latest
|
|
hashi_consul_configuration:
|
|
domain: "{{ consul_domain }}"
|
|
datacenter: "{{ consul_datacenter }}"
|
|
primary_datacenter: "{{ consul_primary_datacenter }}"
|
|
data_dir: "{{ hashi_consul_data_dir }}"
|
|
encrypt: "{{ 'mysupersecretgossipencryptionkey'|b64encode }}"
|
|
server: "{{ 'consul_servers' in group_names }}"
|
|
retry_join: "{{
|
|
groups['consul_servers'] |
|
|
map('extract', hostvars, ['consul_address_configuration', 'bind_addr']) |
|
|
list |
|
|
to_json |
|
|
from_json
|
|
}}"
|
|
ui_config:
|
|
enabled: true
|
|
connect:
|
|
enabled: false
|
|
leave_on_terminate: true
|
|
rejoin_after_leave: true
|
|
enable_script_checks: true
|
|
enable_syslog: true
|
|
log_level: INFO
|
|
acl: "{{ consul_acl_configuration }}"
|
|
dns_config: "{{ consul_dns_configuration }}"
|
|
ports:
|
|
dns: 8600
|
|
http: 8500
|
|
https: -1
|
|
grpc: 8502
|
|
grpc_tls: 8503
|
|
server: 8300
|
|
serf_lan: 8301
|
|
serf_wan: 8302
|
|
sidecar_min_port: 21000
|
|
sidecar_max_port: 21255
|
|
expose_min_port: 21500
|
|
expose_max_port: 21755
|
|
|
|
# this is used to circumvent jinja limitation to convert string to integer
|
|
hashi_consul_configuration_string: |
|
|
bootstrap_expect: {{ (groups['consul_servers'] | length) }}
|
|
|
|
##########################
|
|
# Vault options ##########
|
|
##########################
|
|
|
|
vault_cluster_name: vault
|
|
vault_enable_ui: true
|
|
vault_seal_configuration:
|
|
key_shares: 3
|
|
key_threshold: 2
|
|
|
|
#########
|
|
# storage
|
|
#########
|
|
vault_storage_configuration:
|
|
raft:
|
|
path: "{{ hashi_vault_data_dir }}/data"
|
|
node_id: "{{ ansible_hostname }}"
|
|
retry_join: |
|
|
[
|
|
{% for host in groups['vault_servers'] %}
|
|
{
|
|
'leader_api_addr': 'http://{{ hostvars[host].api_interface_address }}:8200'
|
|
}{% if not loop.last %},{% endif %}
|
|
{% endfor %}
|
|
]
|
|
|
|
##########
|
|
# listener
|
|
##########
|
|
vault_enable_tls: false
|
|
vault_listener_configuration:
|
|
tcp:
|
|
address: "0.0.0.0:8200"
|
|
tls_disable: true
|
|
|
|
vault_tls_listener_configuration:
|
|
tcp:
|
|
tls_disable: false
|
|
tls_cert_file: "{{ hashi_vault_extra_files_dst }}/tls/cert.pem"
|
|
tls_key_file: "{{ hashi_vault_extra_files_dst }}/tls/key.pem"
|
|
|
|
vault_extra_listener_configuration: {}
|
|
|
|
######################
|
|
# service registration
|
|
######################
|
|
|
|
vault_enable_service_registration: false
|
|
vault_service_registration_configuration:
|
|
consul:
|
|
address: "127.0.0.1:8500"
|
|
scheme: "http"
|
|
|
|
#########
|
|
# plugins
|
|
#########
|
|
vault_enable_plugins: true
|
|
vault_plugin_directory: "{{ hashi_vault_extra_files_dst }}/plugin"
|
|
|
|
#########
|
|
# logging
|
|
#########
|
|
vault_enable_log_to_file: false
|
|
vault_logging_configuration:
|
|
log_level: info
|
|
log_format: standard
|
|
log_rotate_duration: 24h
|
|
log_rotate_max_files: 30
|
|
|
|
#########################
|
|
# vault container volumes
|
|
#########################
|
|
extra_vault_container_volumes: []
|
|
|
|
#####################
|
|
# extra configuration
|
|
#####################
|
|
|
|
vault_extra_configuration: {}
|
|
|
|
###############
|
|
# configuration
|
|
###############
|
|
hashi_vault_start_service: true
|
|
hashi_vault_version: latest
|
|
hashi_vault_deploy_method: "{{ deployment_method }}"
|
|
hashi_vault_env_variables: {}
|
|
hashi_vault_config_dir: "/etc/vault.d"
|
|
hashi_vault_data_dir: "/opt/vault"
|
|
hashi_vault_extra_files: true
|
|
hashi_vault_extra_files_src: "{{ sub_configuration_directories.vault_servers }}/config"
|
|
hashi_vault_extra_files_dst: "{{ hashi_vault_config_dir }}/config"
|
|
hashi_vault_extra_container_volumes: "{{ default_container_extra_volumes | union(extra_vault_container_volumes) | unique }}"
|
|
hashi_vault_configuration:
|
|
cluster_name: "{{ vault_cluster_name }}"
|
|
cluster_addr: "http://{{ api_interface_address }}:8201"
|
|
api_addr: "http://{{ api_interface_address }}:8200"
|
|
ui: "{{ vault_enable_ui }}"
|
|
disable_mlock: false
|
|
disable_cache: false
|
|
listener: "{{ vault_listener_configuration }}"
|
|
storage: "{{ vault_storage_configuration }}"
|