--- - name: Install HAProxy package: name: haproxy state: present notify: - Restart HAProxy - name: Create HAProxy group group: name: haproxy gid: 20001 notify: - Restart HAProxy - name: Create HAProxy user user: name: haproxy uid: 20001 group: haproxy create_home: no home: /var/empty notify: - Restart HAProxy - name: Create HAProxy service directories file: path: '/etc/s6-rc/service/{{ item }}' state: directory owner: root group: wheel mode: 0755 with_items: - haproxy - haproxy/env - haproxy/data - haproxy-log - haproxy-log/env - name: Generate HAProxy service scripts template: dest: '/etc/s6-rc/service/{{ item }}' src: '{{ item }}.j2' mode: 0555 owner: root group: wheel with_items: - haproxy/run - haproxy/finish - haproxy/data/check - haproxy-log/run - haproxy-log/finish notify: - Reload s6-rc - Restart HAProxy - name: Generate HAProxy service configuration copy: dest: '/etc/s6-rc/service/{{ item.name }}' content: '{{ item.content }}' mode: 0444 owner: root group: wheel loop_control: label: '{{ item.name }} = {{ item.content }}' notify: - Reload s6-rc - Restart HAProxy with_items: - name: haproxy/type content: longrun - name: haproxy/notification-fd content: 3 - name: haproxy/producer-for content: haproxy-log - name: haproxy/env/NAME content: haproxy - name: haproxy/env/PATH content: /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/root/bin - name: haproxy/env/BIND_V4 content: '{{ haproxy_v4 }}' - name: haproxy/env/BIND_V6 content: '{{ haproxy_v6 }}' - name: haproxy-log/type content: longrun - name: haproxy-log/notification-fd content: 3 - name: haproxy-log/consumer-for content: haproxy - name: haproxy-log/env/NAME content: haproxy - name: haproxy-log/env/PATH content: /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/root/bin - name: haproxy-log/env/MODE content: '750' - name: haproxy-log/env/USER content: s6-log - name: haproxy-log/env/GROUP content: s6-log - name: haproxy-log/env/DIR content: /var/log/haproxy - name: Create HAProxy configuration directory file: path: /usr/local/etc/haproxy state: directory owner: root group: wheel mode: 0755 - name: Configure HAProxy template: dest: '/usr/local/etc/haproxy/{{ item }}' src: '{{ item }}.j2' owner: root group: wheel mode: 0444 notify: - Reload HAProxy with_items: - defaults.cfg - global.cfg - http.cfg - name: Config HAProxy HTTP backends template: dest: '/usr/local/etc/haproxy/http_{{ item.host }}.cfg' src: http_host.cfg.j2 owner: root group: wheel mode: 0444 notify: - Reload HAProxy with_items: '{{ haproxy_http }}' - name: Enable HAProxy HTTP backends lineinfile: path: /usr/local/etc/haproxy/http.map regex: '^{{ item.host }} ' line: '{{ item.host }} http_{{ item.host }}' notify: - Reload HAProxy with_items: '{{ haproxy_http }}' - name: Make sure the http map exists command: env touch /usr/local/etc/haproxy/http.map args: creates: /usr/local/etc/haproxy/http.map notify: - Reload HAProxy - name: Flush handlers meta: flush_handlers