Private
Public Access
2
0
Files

139 lines
4.3 KiB
YAML
Raw Permalink Normal View History

2026-01-14 11:03:59 +03:00
- name: Install requirements
2026-01-23 14:08:31 +03:00
ansible.builtin.package:
2026-01-14 11:03:59 +03:00
name:
- "git"
- "libnss3-tools"
2026-01-20 12:27:03 +03:00
- "ssl-cert"
2026-01-14 11:03:59 +03:00
- name: Create Go directory
ansible.builtin.file:
2026-01-20 12:27:03 +03:00
path: "/usr/local/go-{{ caddy_go_version }}"
2026-01-14 11:03:59 +03:00
state: "directory"
mode: "0755"
- name: Install Go
ansible.builtin.unarchive:
2026-01-20 12:27:03 +03:00
src: "https://go.dev/dl/go{{ caddy_go_version }}.linux-amd64.tar.gz"
dest: "/usr/local/go-{{ caddy_go_version }}"
2026-02-05 09:53:38 +03:00
creates: "/usr/local/go-{{ caddy_go_version }}/bin/go"
extra_opts:
- "--strip-components=1"
2026-01-14 11:03:59 +03:00
remote_src: true
2026-01-19 15:06:34 +03:00
- name: Create xcaddy directory
ansible.builtin.file:
2026-01-20 12:27:03 +03:00
path: "/usr/local/xcaddy-{{ caddy_xcaddy_version }}"
2026-01-19 15:06:34 +03:00
state: "directory"
mode: "0755"
2026-01-14 11:03:59 +03:00
- name: Install xcaddy
2026-01-19 15:06:34 +03:00
ansible.builtin.unarchive:
2026-01-23 11:21:13 +03:00
src: "https://github.com/caddyserver/xcaddy/releases/download/v{{ caddy_xcaddy_version }}/xcaddy_{{ caddy_xcaddy_version }}_linux_amd64.tar.gz"
2026-01-20 12:27:03 +03:00
dest: "/usr/local/xcaddy-{{ caddy_xcaddy_version }}"
2026-02-05 09:53:38 +03:00
creates: "/usr/local/xcaddy-{{ caddy_xcaddy_version }}/xcaddy"
2026-01-19 15:06:34 +03:00
remote_src: true
2026-01-14 11:03:59 +03:00
- name: Create Caddy build command
ansible.builtin.set_fact:
2026-01-20 12:27:03 +03:00
caddy_build_command: >
2026-01-23 11:21:13 +03:00
/usr/local/xcaddy-{{ caddy_xcaddy_version }}/xcaddy build v{{ caddy_version }}
2026-01-19 15:06:34 +03:00
--with github.com/pteich/caddy-tlsconsul
--with github.com/corazawaf/coraza-caddy/{{ caddy_coraza_caddy_version }}
2026-01-14 11:03:59 +03:00
--with github.com/mholt/caddy-ratelimit
--with github.com/steffenbusch/caddy-bot-barrier
2026-01-23 14:08:31 +03:00
--with github.com/zhangjiayin/caddy-geoip2
--output {{ caddy_binary }}
2026-01-14 11:03:59 +03:00
2026-01-23 11:21:13 +03:00
- name: Remember and test Caddy version
2026-01-14 11:03:59 +03:00
ansible.builtin.copy:
dest: "/usr/local/bin/.caddy.{{ caddy_my_name }}.build"
2026-01-23 11:21:13 +03:00
content: >
2026-02-05 09:53:38 +03:00
XCADDY_WHICH_GO=/usr/local/go-{{ caddy_go_version }}/bin/go
{{ caddy_build_command }}
2026-01-14 11:03:59 +03:00
mode: "0644"
2026-01-20 12:27:03 +03:00
register: caddy_test_caddy_version
2026-01-14 11:03:59 +03:00
- name: Build Caddy
# noqa: no-handler
2026-01-20 12:27:03 +03:00
when: "caddy_test_caddy_version.changed"
2026-01-23 11:21:13 +03:00
environment:
2026-02-05 09:53:38 +03:00
XCADDY_WHICH_GO: "/usr/local/go-{{ caddy_go_version }}/bin/go"
2026-01-14 11:03:59 +03:00
ansible.builtin.command:
2026-01-20 12:27:03 +03:00
cmd: "{{ caddy_build_command }}"
creates: "{{ caddy_binary }}"
2026-01-14 11:03:59 +03:00
notify:
- "Restart Caddy"
2026-01-20 12:27:03 +03:00
- name: Create Caddy system group
2026-01-14 11:03:59 +03:00
ansible.builtin.group:
2026-01-20 12:27:03 +03:00
name: "{{ caddy_system_group }}"
2026-01-14 11:03:59 +03:00
system: true
2026-01-20 12:27:03 +03:00
- name: Create Caddy system user
2026-01-14 11:03:59 +03:00
ansible.builtin.user:
2026-01-20 12:27:03 +03:00
name: "{{ caddy_system_user }}"
group: "{{ caddy_system_group }}"
2026-01-14 11:03:59 +03:00
groups: ["ssl-cert"]
password: "!"
system: true
2026-02-12 06:47:41 +01:00
shell: "/usr/sbin/nologin"
2026-01-20 12:27:03 +03:00
home: "{{ caddy_home_dir }}"
2026-01-14 11:03:59 +03:00
- name: Create Caddy directories
2026-01-14 11:03:59 +03:00
ansible.builtin.file:
path: "{{ item.path }}"
2026-01-14 11:03:59 +03:00
state: "directory"
owner: "{{ item.owner | default('root') }}"
2026-01-20 12:27:03 +03:00
group: "{{ caddy_system_group }}"
mode: "{{ item.mode | default('0750') }}"
2026-01-14 11:03:59 +03:00
loop:
- path: "{{ caddy_config_dir }}"
2026-02-05 09:53:38 +03:00
- path: "{{ caddy_crs_plugins_dir }}"
- path: "{{ caddy_sites_dir }}"
- path: "{{ caddy_log_dir }}"
mode: "0770"
- path: "{{ caddy_home_dir }}/geoip2"
owner: "{{ caddy_system_user }}"
2026-01-14 11:03:59 +03:00
- name: Install OWASP CRS
2026-01-23 11:21:13 +03:00
loop: "{{ caddy_owasp_crs_versions }}"
2026-01-14 11:03:59 +03:00
ansible.builtin.unarchive:
2026-01-23 11:21:13 +03:00
src: "https://github.com/coreruleset/coreruleset/archive/refs/tags/v{{ item }}.tar.gz"
2026-01-20 12:27:03 +03:00
dest: "{{ caddy_config_dir }}"
2026-02-05 09:53:38 +03:00
creates: "{{ caddy_config_dir }}/coreruleset-{{ item }}/rules/"
2026-01-20 12:27:03 +03:00
group: "{{ caddy_system_group }}"
2026-01-14 11:03:59 +03:00
remote_src: true
- name: Install plugins
2026-01-20 12:27:03 +03:00
loop: "{{ caddy_crs_plugins }}"
2026-02-05 09:53:38 +03:00
ansible.builtin.unarchive:
src: "https://github.com/{{ item.provider | default('coreruleset') }}/{{ item.name }}-plugin/archive/refs/tags/v{{ item.version }}.tar.gz"
dest: "{{ caddy_crs_plugins_dir }}"
creates: "{{ caddy_crs_plugins_dir }}/{{ item.name }}-config.conf"
include:
- "*.conf"
extra_opts:
- "--strip-components=2"
- "--wildcards"
mode: "0644"
group: "{{ caddy_system_group }}"
remote_src: true
- name: Create plugins after config
loop: "{{ caddy_crs_plugins }}"
when: "not(item.has_after_config | default(false))"
ansible.builtin.copy:
content: ""
dest: "{{ caddy_crs_plugins_dir }}/{{ item.name }}-after.conf"
mode: "0644"
group: "{{ caddy_system_group }}"
2026-01-14 11:03:59 +03:00
- name: Deploy caddy service file
ansible.builtin.template:
src: "templates/caddy.service"
2026-01-23 11:21:13 +03:00
dest: "/etc/systemd/system/{{ caddy_my_name }}.service"
2026-01-14 11:03:59 +03:00
mode: "0644"
notify:
2026-02-05 09:53:38 +03:00
- "Reload systemd"
2026-01-14 11:03:59 +03:00
- "Restart Caddy"