Make haproxy role more generic

This makes the haproxy role more generic so we can run another (or
potentially even more) haproxy instance(s) to manage other services.

The config file is moved to a variable for the haproxy role.  The
gitea specific config is then installed for the gitea-lb service by a
new gitea-lb role.

statsd reporting is made optional with an argument.  This
enables/disables the service in the docker compose.

Role documenation is updated.

Needed-By: https://review.opendev.org/678159
Change-Id: I3506ebbed9dda17d910001e71b17a865eba4225d
This commit is contained in:
Ian Wienand 2019-08-22 17:05:20 +10:00
parent 81155d6e8f
commit f29aa2da16
10 changed files with 67 additions and 9 deletions

View File

@ -1,4 +1,4 @@
haproxy_listeners:
gitea_lb_listeners:
- name: balance_git_http
bind:
- ':::80'

View File

@ -0,0 +1,9 @@
Install the gitea-lb services
This configures haproxy
**Role Variables**
.. zuul:rolevar:: gitea_lb_listeners
The backends to configure

View File

@ -0,0 +1,5 @@
- name: Install haproxy with gitea config
include_role:
name: haproxy
vars:
haproxy_config_template: gitea-haproxy.cfg.j2

View File

@ -20,7 +20,7 @@ defaults
timeout server 2m
timeout check 10s
{% for listener in haproxy_listeners %}
{% for listener in gitea_lb_listeners %}
listen {{ listener.name }}
{% for bind in listener.bind %}
bind {{ bind }}

View File

@ -1 +1,16 @@
Install, configure, and run a haproxy server.
**Role Variables**
.. zuul:rolevar:: haproxy_config_template
:type: string
:default: Undefined
The config template to install for haproxy. Must be defined.
.. zuul:rolevar:: haproxy_run_statsd
:type: string
:default: True
Run the ``haproxy-statsd`` docker container to report back-end
stats to graphite.opendev.org

View File

@ -0,0 +1 @@
haproxy_run_statsd: True

View File

@ -2,10 +2,7 @@
package:
name: socat
state: present
- name: Synchronize docker-compose directory
synchronize:
src: docker/
dest: /etc/haproxy-docker/
- name: Ensure registry volume directories exists
file:
state: directory
@ -15,19 +12,47 @@
loop:
- etc
- run
- name: Ensure haproxy config template available
assert:
that:
- haproxy_config_template is defined
- name: Write haproxy config file
template:
src: haproxy.cfg.j2
src: '{{ haproxy_config_template }}'
dest: /var/haproxy/etc/haproxy.cfg
owner: 1000
group: 1000
mode: 0644
- name: Ensure docker compose configuration directory
file:
path: /etc/haproxy-docker
state: directory
owner: root
group: root
mode: 0755
- name: Install docker-compose configuration
template:
src: docker-compose.yaml.j2
dest: /etc/haproxy-docker/docker-compose.yaml
owner: root
group: root
mode: 0644
notify: Reload haproxy
- name: Run docker-compose pull
shell:
cmd: docker-compose pull
chdir: /etc/haproxy-docker/
- name: Run docker-compose up
shell:
cmd: docker-compose up -d
chdir: /etc/haproxy-docker/
- name: Run docker prune to cleanup unneeded images
shell:
cmd: docker image prune -f

View File

@ -42,6 +42,8 @@ services:
driver: syslog
options:
tag: "docker-haproxy"
{% if haproxy_run_statsd %}
haproxy-statsd:
restart: always
image: docker.io/opendevorg/haproxy-statsd:latest
@ -56,3 +58,4 @@ services:
driver: syslog
options:
tag: "docker-haproxy-statsd"
{% endif %}

View File

@ -3,4 +3,4 @@
roles:
- iptables
- install-docker
- haproxy
- gitea-lb

View File

@ -1,4 +1,4 @@
haproxy_listeners:
gitea_lb_listeners:
- name: balance_git_http
bind:
- ":::80"