Skip to content

Commit 37290ce

Browse files
author
Stuart Williams
committed
Add resolvers configuration
1 parent 4383ebc commit 37290ce

File tree

5 files changed

+80
-6
lines changed

5 files changed

+80
-6
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ Role Variables
2626
* `haproxy_defaults`
2727

2828
Default settings for frontends, backends, and listen proxies.
29+
* `haproxy_resolvers`
30+
31+
A list of HAProxy resolvers.
2932
* `haproxy_backends`
3033

3134
A list of HAProxy backends.

defaults/main.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ haproxy_defaults:
6767
- code: 504
6868
file: /etc/haproxy/errors/504.http
6969

70+
haproxy_resolvers: []
7071
haproxy_backends: []
7172
haproxy_frontends: []
7273
haproxy_listen: []

tasks/configure.yml

Lines changed: 46 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,33 @@
11
---
22

3+
## ASSEMBLE CONFIG - RESOLVERS
4+
5+
- name: 'Create directory for the resolvers'
6+
file:
7+
path: "{{ haproxy_config_dir }}/resolvers.d"
8+
state: directory
9+
10+
- name: "List files for the resolvers"
11+
find:
12+
paths: "{{ haproxy_config_dir }}/resolvers.d"
13+
patterns: "*.cfg"
14+
register: directory_contents
15+
changed_when: false
16+
17+
- name: "Remove unmanaged files for the resolvers"
18+
file:
19+
path: "{{ item.path }}"
20+
state: absent
21+
when: (item.path | basename) not in (haproxy_resolvers | json_query('[*].name') | map('regex_replace', '(.*)', '\\1.cfg') | list)
22+
with_items: "{{ directory_contents.files }}"
23+
24+
- name: 'Build up the resolvers'
25+
template:
26+
src: "resolvers.cfg"
27+
dest: "{{ haproxy_config_dir }}/resolvers.d/{{ item.name }}.cfg"
28+
with_items: "{{ haproxy_resolvers }}"
29+
when: haproxy_resolvers is defined
30+
331
## ASSEMBLE CONFIG - FRONTEND
432

533
- name: 'Create directory for the frontend'
@@ -112,8 +140,15 @@
112140

113141
## ASSEMBLE CONFIG - GLOBAL & DEFAULT
114142

115-
- name: 'Create the compiled folder'
116-
file: path={{ haproxy_config_dir }}/compiled state=directory
143+
- name: 'Delete the compiled folder'
144+
file:
145+
path: "{{ haproxy_config_dir }}/compiled"
146+
state: absent
147+
148+
- name: 'Create the compiled folder'
149+
file:
150+
path: "{{ haproxy_config_dir }}/compiled"
151+
state: directory
117152

118153
- name: 'Build up the global config'
119154
template:
@@ -130,25 +165,30 @@
130165

131166
## ASSEMBLE FINAL CONFIG
132167

168+
- name: 'Assemble the resolvers sections configuration file'
169+
assemble:
170+
src: "{{ haproxy_config_dir }}/resolvers.d"
171+
dest: "{{ haproxy_config_dir }}/compiled/03-resolvers.cfg"
172+
133173
- name: 'Assemble the backends configuration file'
134174
assemble:
135175
src: "{{ haproxy_config_dir }}/backends.d"
136-
dest: "{{ haproxy_config_dir }}/compiled/03-backends.cfg"
176+
dest: "{{ haproxy_config_dir }}/compiled/04-backends.cfg"
137177

138178
- name: 'Assemble the frontends configuration file'
139179
assemble:
140180
src: "{{ haproxy_config_dir }}/frontends.d"
141-
dest: "{{ haproxy_config_dir }}/compiled/04-frontends.cfg"
181+
dest: "{{ haproxy_config_dir }}/compiled/05-frontends.cfg"
142182

143183
- name: 'Assemble the listen sections configuration file'
144184
assemble:
145185
src: "{{ haproxy_config_dir }}/listen.d"
146-
dest: "{{ haproxy_config_dir }}/compiled/05-listen.cfg"
186+
dest: "{{ haproxy_config_dir }}/compiled/06-listen.cfg"
147187

148188
- name: 'Assemble the userlists sections configuration file'
149189
assemble:
150190
src: "{{ haproxy_config_dir }}/userlists.d"
151-
dest: "{{ haproxy_config_dir }}/compiled/06-userlists.cfg"
191+
dest: "{{ haproxy_config_dir }}/compiled/07-userlists.cfg"
152192

153193
- name: 'Assemble the final configuration file'
154194
assemble:

templates/resolvers.cfg

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#{{ ansible_managed }}
2+
resolvers {{ item.name }}
3+
{% if item.nameservers is defined -%}
4+
{%- for nameserver in item.nameservers -%}
5+
nameserver {{ nameserver.name }} {{ nameserver.ip }}:{{ nameserver.port }}
6+
{% endfor -%}
7+
{% endif -%}
8+
{% if item.hold is defined -%}
9+
{%- for hold in item.hold -%}
10+
hold {{ hold.status }} {{ hold.period }}
11+
{% endfor -%}
12+
{% endif -%}
13+
{% if item.resolve_retries is defined -%}
14+
resolve_retries {{ item.resolve_retries }}
15+
{% endif -%}
16+
{% if item.timeout_retry is defined -%}
17+
timeout retry {{ timeout.timeout_retry }}
18+
{% endif -%}

vars/main.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,18 @@ empty: true
6363
# expect:
6464
# send_state:
6565
#
66+
#haproxy_resolvers:
67+
# - name:
68+
# nameservers:
69+
# - name:
70+
# ip:
71+
# port:
72+
# hold:
73+
# - status:
74+
# period:
75+
# resolve_retries:
76+
# timeout_retry:
77+
#
6678
#haproxy_frontends:
6779
# - name:
6880
# ip:

0 commit comments

Comments
 (0)