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 - name: balance_git_http
bind: bind:
- ':::80' - ':::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 server 2m
timeout check 10s timeout check 10s
{% for listener in haproxy_listeners %} {% for listener in gitea_lb_listeners %}
listen {{ listener.name }} listen {{ listener.name }}
{% for bind in listener.bind %} {% for bind in listener.bind %}
bind {{ bind }} bind {{ bind }}

View File

@ -1 +1,16 @@
Install, configure, and run a haproxy server. 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: package:
name: socat name: socat
state: present state: present
- name: Synchronize docker-compose directory
synchronize:
src: docker/
dest: /etc/haproxy-docker/
- name: Ensure registry volume directories exists - name: Ensure registry volume directories exists
file: file:
state: directory state: directory
@ -15,19 +12,47 @@
loop: loop:
- etc - etc
- run - run
- name: Ensure haproxy config template available
assert:
that:
- haproxy_config_template is defined
- name: Write haproxy config file - name: Write haproxy config file
template: template:
src: haproxy.cfg.j2 src: '{{ haproxy_config_template }}'
dest: /var/haproxy/etc/haproxy.cfg 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 notify: Reload haproxy
- name: Run docker-compose pull - name: Run docker-compose pull
shell: shell:
cmd: docker-compose pull cmd: docker-compose pull
chdir: /etc/haproxy-docker/ chdir: /etc/haproxy-docker/
- name: Run docker-compose up - name: Run docker-compose up
shell: shell:
cmd: docker-compose up -d cmd: docker-compose up -d
chdir: /etc/haproxy-docker/ chdir: /etc/haproxy-docker/
- name: Run docker prune to cleanup unneeded images - name: Run docker prune to cleanup unneeded images
shell: shell:
cmd: docker image prune -f cmd: docker image prune -f

View File

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

View File

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

View File

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