Creates a docker swarm cluster. With portainer and haproxy https://docs.docker.com/engine/swarm/
Go to file
Andrea Dell'Amico 8a7939175e
HAPROXY listen on ipv4 only by default.
2024-11-20 13:05:36 +01:00
.vscode Run portainer without haproxy. 2023-05-26 16:27:39 +02:00
defaults HAPROXY listen on ipv4 only by default. 2024-11-20 13:05:36 +01:00
handlers Remove the handler for cAdvisor. 2023-05-29 14:17:57 +02:00
meta Run portainer without haproxy. 2023-05-26 16:27:39 +02:00
tasks cadvisor moved into the 'docker' role. 2023-05-29 13:39:12 +02:00
templates HAPROXY listen on ipv4 only by default. 2024-11-20 13:05:36 +01:00
tests Initial commit 2020-09-24 16:01:51 +02:00
vars Support plain http haproxy listener. 2023-10-06 16:08:01 +02:00
.gitignore Initial commit 2020-09-24 16:01:51 +02:00
LICENSE Initial commit 2020-09-24 16:01:51 +02:00
README.md Give the option to add some arbtrary http-request checks. 2024-03-29 16:02:54 +01:00

README.md

Role Name

A role that configures a docker swarm cluster, adding Portainer CE and HAPROXY

Role Variables

The most important variables are listed below:

docker_swarm_cluster_haproxy_install: true
# mesh, keepalive, global
docker_swarm_haproxy_installation_type: 'keepalive'
docker_swarm_haproxy_networks:
  - '{{ docker_swarm_portainer_network }}'
#
docker_swarm_expose_api_via_haproxy: false
docker_swarm_expose_api_hostname: 'swarm.example.com'
# Portainer
docker_swarm_cluster_portainer_install: true
docker_swarm_portainer_hostname: 'portainer-swarm.example.com'
docker_swarm_portainer_additional_constraints: []
#  - 'node.hostname != docker01'
docker_swarm_portainer_nfs_volume: false
docker_swarm_portainer_nfs_type: 'nfs4'
docker_swarm_portainer_nfs_o: 'nfsvers=4,addr=127.0.0.1,rw,nolock,soft'
docker_swarm_portainer_nfs_device: ':/tmp'

docker_swarm_portainer_network: 'agent_network'
docker_swarm_portainer_http_port: '9000'
docker_swarm_portainer_service_port: '8000'

docker_swarm_haproxy_additional_services: []
#  - { acl_name: 'service', acl_rule: 'hdr_dom(host) -i service.example.com', service_name: 'service-', service_replica_num: '1', service_port: '9999', service_overlay_network: 'service-network', http_redirect_to_https: True }

HAPROXY configuration

docker_swarm_haproxy_plain_http_global_acl_rules allows the definition of arbitrary acl with the corresponding http-request rules, for the plain http listener docker_swarm_haproxy_global_acl_rules allows the definition of arbitrary acl with the corresponding http-request rules, for the https listener

haproxy_docker_swarm_additional_services is the dictionary that contains the backends definitions and their acls

A plain http listener can be defined, using the following variables. The syntax of haproxy_docker_swarm_plain_http_services is identical to the haproxy_docker_swarm_additional_services one.

haproxy_docker_swarm_plain_http_listener: true
haproxy_docker_swarm_plain_http_port: 8080
haproxy_docker_swarm_plain_http_services: []

Dependencies

  • docker
  • keepalived, when haproxy is installed in HA host mode

License

EUPL-1.2

Author Information

Andrea DellAmico, andrea.dellamico@isti.cnr.it