--- - name: Ensure HAProxy base directory exists ansible.builtin.file: path: "{{ haproxy_conf_dir }}" state: directory owner: "{{ haproxy_user }}" group: "{{ haproxy_group }}" mode: "0755" - name: Ensure HAProxy subdirectories exist ansible.builtin.file: path: "{{ haproxy_conf_dir }}/{{ item }}" state: directory owner: "{{ haproxy_user }}" group: "{{ haproxy_group }}" mode: "0755" loop: - frontends - backends - backends/console - backends/xray - backends/fallback - maps - certs - scripts - logs - name: Deploy HAProxy configuration files ansible.builtin.copy: src: "etc/haproxy/{{ item.src }}" dest: "{{ haproxy_conf_dir }}/{{ item.dest | default(item.src) }}" owner: "{{ haproxy_user }}" group: "{{ haproxy_group }}" mode: "{{ item.mode | default('0644') }}" loop: - { src: "haproxy.cfg" } - { src: "global.cfg" } - { src: "frontends/fe_443.cfg" } - { src: "frontends/fe_stats.cfg" } - { src: "backends/console/bk_cn.cfg" } - { src: "backends/console/bk_global.cfg" } - { src: "backends/xray/bk_xray_jp.cfg" } - { src: "backends/xray/bk_xray_sg.cfg" } - { src: "backends/xray/bk_xray_hk.cfg" } - { src: "backends/fallback/bk_blackhole.cfg" } - { src: "maps/sni_backend.map" } - { src: "maps/sni.map" } - { src: "certs/.gitkeep" } - { src: "logs/.gitkeep" } - { src: "scripts/reload.sh", mode: "0755" } notify: reload haproxy