Browse Source

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
changes/03/677903/10
Ian Wienand 3 years ago
parent
commit
f29aa2da16
  1. 2
      inventory/service/group_vars/gitea-lb.yaml
  2. 9
      playbooks/roles/gitea-lb/README.rst
  3. 5
      playbooks/roles/gitea-lb/tasks/main.yaml
  4. 2
      playbooks/roles/gitea-lb/templates/gitea-haproxy.cfg.j2
  5. 15
      playbooks/roles/haproxy/README.rst
  6. 1
      playbooks/roles/haproxy/defaults/main.yaml
  7. 35
      playbooks/roles/haproxy/tasks/main.yaml
  8. 3
      playbooks/roles/haproxy/templates/docker-compose.yaml.j2
  9. 2
      playbooks/service-gitea-lb.yaml
  10. 2
      playbooks/zuul/templates/group_vars/gitea-lb.yaml.j2

2
inventory/service/group_vars/gitea-lb.yaml

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

9
playbooks/roles/gitea-lb/README.rst

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

5
playbooks/roles/gitea-lb/tasks/main.yaml

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

2
playbooks/roles/haproxy/templates/haproxy.cfg.j2 → playbooks/roles/gitea-lb/templates/gitea-haproxy.cfg.j2

@ -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 }}

15
playbooks/roles/haproxy/README.rst

@ -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

1
playbooks/roles/haproxy/defaults/main.yaml

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

35
playbooks/roles/haproxy/tasks/main.yaml

@ -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

3
playbooks/roles/haproxy/files/docker/docker-compose.yaml → playbooks/roles/haproxy/templates/docker-compose.yaml.j2

@ -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 %}

2
playbooks/service-gitea-lb.yaml

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

2
playbooks/zuul/templates/group_vars/gitea-lb.yaml.j2

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

Loading…
Cancel
Save