Private
Public Access
2
0

optimizations

This commit is contained in:
2026-02-05 09:53:38 +03:00
parent eecd5e9972
commit bbec8d35c5
8 changed files with 60 additions and 83 deletions

View File

@@ -2,9 +2,15 @@ vms = {
proxy1 = { proxy1 = {
disk = "20g" disk = "20g"
}, },
waf1 = {}, waf1 = {
waf2 = {}, cpus = 4
waf3 = {}, },
waf2 = {
cpus = 4
},
waf3 = {
cpus = 4
},
sql1 = {}, sql1 = {},
nfs1 = {}, nfs1 = {},
www1 = {}, www1 = {},

View File

@@ -40,6 +40,8 @@ caddy_system_user: "{{ caddy_my_name }}"
caddy_system_group: "{{ caddy_my_name }}" caddy_system_group: "{{ caddy_my_name }}"
caddy_home_dir: "/opt/{{ caddy_my_name }}" caddy_home_dir: "/opt/{{ caddy_my_name }}"
caddy_config_dir: "/etc/{{ caddy_my_name }}" caddy_config_dir: "/etc/{{ caddy_my_name }}"
caddy_crs_plugins_dir: "{{ caddy_config_dir }}/crs-plugins"
caddy_sites_dir: "{{ caddy_config_dir }}/sites"
caddy_log_dir: "/var/log/{{ caddy_my_name }}" caddy_log_dir: "/var/log/{{ caddy_my_name }}"
# OWASP CRS plugins that will can be actived per site. # OWASP CRS plugins that will can be actived per site.

View File

@@ -1,8 +1,8 @@
- name: Reload systemd
ansible.builtin.service:
daemon_reload: true
- name: Restart Caddy - name: Restart Caddy
ansible.builtin.service: ansible.builtin.service:
name: "{{ caddy_my_name }}" name: "{{ caddy_my_name }}"
state: "restarted" state: "restarted"
# - name: Update GeoIP databases
# ansible.builtin.command:
# cmd: "/usr/bin/geoipupdate"

View File

@@ -5,7 +5,7 @@
- name: Create sites config directories - name: Create sites config directories
loop: "{{ caddy_sites }}" loop: "{{ caddy_sites }}"
ansible.builtin.file: ansible.builtin.file:
path: "{{ caddy_config_dir }}/sites/{{ item.id }}" path: "{{ caddy_sites_dir }}/{{ item.id }}"
state: "directory" state: "directory"
group: "{{ caddy_system_group }}" group: "{{ caddy_system_group }}"
mode: "0750" mode: "0750"
@@ -16,7 +16,7 @@
loop_var: "site" loop_var: "site"
ansible.builtin.template: ansible.builtin.template:
src: "templates/coraza.conf" src: "templates/coraza.conf"
dest: "{{ caddy_config_dir }}/sites/{{ site.id }}/coraza.conf" dest: "{{ caddy_sites_dir }}/{{ site.id }}/coraza.conf"
group: "{{ caddy_system_group }}" group: "{{ caddy_system_group }}"
mode: "0640" mode: "0640"
notify: notify:
@@ -28,7 +28,7 @@
loop_var: "site" loop_var: "site"
ansible.builtin.template: ansible.builtin.template:
src: "templates/crs-setup.conf" src: "templates/crs-setup.conf"
dest: "{{ caddy_config_dir }}/sites/{{ site.id }}/crs-setup.conf" dest: "{{ caddy_sites_dir }}/{{ site.id }}/crs-setup.conf"
group: "{{ caddy_system_group }}" group: "{{ caddy_system_group }}"
mode: "0640" mode: "0640"
notify: notify:
@@ -40,7 +40,7 @@
loop_var: "site" loop_var: "site"
ansible.builtin.template: ansible.builtin.template:
src: "templates/exclusions-request-before.conf" src: "templates/exclusions-request-before.conf"
dest: "{{ caddy_config_dir }}/sites/{{ site.id }}/exclusions-request-before.conf" dest: "{{ caddy_sites_dir }}/{{ site.id }}/exclusions-request-before.conf"
group: "{{ caddy_system_group }}" group: "{{ caddy_system_group }}"
mode: "0640" mode: "0640"
notify: notify:
@@ -52,7 +52,7 @@
loop_var: "site" loop_var: "site"
ansible.builtin.template: ansible.builtin.template:
src: "templates/exclusions-response-after.conf" src: "templates/exclusions-response-after.conf"
dest: "{{ caddy_config_dir }}/sites/{{ site.id }}/exclusions-response-after.conf" dest: "{{ caddy_sites_dir }}/{{ site.id }}/exclusions-response-after.conf"
group: "{{ caddy_system_group }}" group: "{{ caddy_system_group }}"
mode: "0640" mode: "0640"
notify: notify:
@@ -81,4 +81,3 @@
name: "{{ caddy_my_name }}" name: "{{ caddy_my_name }}"
state: "started" state: "started"
enabled: true enabled: true
daemon_reload: true

View File

@@ -15,6 +15,9 @@
ansible.builtin.unarchive: ansible.builtin.unarchive:
src: "https://go.dev/dl/go{{ caddy_go_version }}.linux-amd64.tar.gz" src: "https://go.dev/dl/go{{ caddy_go_version }}.linux-amd64.tar.gz"
dest: "/usr/local/go-{{ caddy_go_version }}" dest: "/usr/local/go-{{ caddy_go_version }}"
creates: "/usr/local/go-{{ caddy_go_version }}/bin/go"
extra_opts:
- "--strip-components=1"
remote_src: true remote_src: true
- name: Create xcaddy directory - name: Create xcaddy directory
@@ -27,6 +30,7 @@
ansible.builtin.unarchive: ansible.builtin.unarchive:
src: "https://github.com/caddyserver/xcaddy/releases/download/v{{ caddy_xcaddy_version }}/xcaddy_{{ caddy_xcaddy_version }}_linux_amd64.tar.gz" src: "https://github.com/caddyserver/xcaddy/releases/download/v{{ caddy_xcaddy_version }}/xcaddy_{{ caddy_xcaddy_version }}_linux_amd64.tar.gz"
dest: "/usr/local/xcaddy-{{ caddy_xcaddy_version }}" dest: "/usr/local/xcaddy-{{ caddy_xcaddy_version }}"
creates: "/usr/local/xcaddy-{{ caddy_xcaddy_version }}/xcaddy"
remote_src: true remote_src: true
- name: Create Caddy build command - name: Create Caddy build command
@@ -44,8 +48,8 @@
ansible.builtin.copy: ansible.builtin.copy:
dest: "/usr/local/bin/.caddy.{{ caddy_my_name }}.build" dest: "/usr/local/bin/.caddy.{{ caddy_my_name }}.build"
content: > content: >
XCADDY_WHICH_GO=/usr/local/go-{{ caddy_go_version }}/go/bin/go XCADDY_WHICH_GO=/usr/local/go-{{ caddy_go_version }}/bin/go
{{ caddy_build_command }}" {{ caddy_build_command }}
mode: "0644" mode: "0644"
register: caddy_test_caddy_version register: caddy_test_caddy_version
@@ -53,7 +57,7 @@
# noqa: no-handler # noqa: no-handler
when: "caddy_test_caddy_version.changed" when: "caddy_test_caddy_version.changed"
environment: environment:
XCADDY_WHICH_GO: "/usr/local/go-{{ caddy_go_version }}/go/bin/go" XCADDY_WHICH_GO: "/usr/local/go-{{ caddy_go_version }}/bin/go"
ansible.builtin.command: ansible.builtin.command:
cmd: "{{ caddy_build_command }}" cmd: "{{ caddy_build_command }}"
creates: "{{ caddy_binary }}" creates: "{{ caddy_binary }}"
@@ -83,8 +87,8 @@
mode: "{{ item.mode | default('0750') }}" mode: "{{ item.mode | default('0750') }}"
loop: loop:
- path: "{{ caddy_config_dir }}" - path: "{{ caddy_config_dir }}"
- path: "{{ caddy_config_dir }}/crs-plugins" - path: "{{ caddy_crs_plugins_dir }}"
- path: "{{ caddy_config_dir }}/sites" - path: "{{ caddy_sites_dir }}"
- path: "{{ caddy_log_dir }}" - path: "{{ caddy_log_dir }}"
mode: "0770" mode: "0770"
- path: "{{ caddy_home_dir }}/geoip2" - path: "{{ caddy_home_dir }}/geoip2"
@@ -95,14 +99,33 @@
ansible.builtin.unarchive: ansible.builtin.unarchive:
src: "https://github.com/coreruleset/coreruleset/archive/refs/tags/v{{ item }}.tar.gz" src: "https://github.com/coreruleset/coreruleset/archive/refs/tags/v{{ item }}.tar.gz"
dest: "{{ caddy_config_dir }}" dest: "{{ caddy_config_dir }}"
creates: "{{ caddy_config_dir }}/coreruleset-{{ item }}/rules/"
group: "{{ caddy_system_group }}" group: "{{ caddy_system_group }}"
remote_src: true remote_src: true
- name: Install plugins - name: Install plugins
loop: "{{ caddy_crs_plugins }}" loop: "{{ caddy_crs_plugins }}"
loop_control: ansible.builtin.unarchive:
loop_var: "plugin" src: "https://github.com/{{ item.provider | default('coreruleset') }}/{{ item.name }}-plugin/archive/refs/tags/v{{ item.version }}.tar.gz"
ansible.builtin.include_tasks: "caddy_install_plugin.yml" 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 }}"
- name: Deploy caddy service file - name: Deploy caddy service file
ansible.builtin.template: ansible.builtin.template:
@@ -110,4 +133,5 @@
dest: "/etc/systemd/system/{{ caddy_my_name }}.service" dest: "/etc/systemd/system/{{ caddy_my_name }}.service"
mode: "0644" mode: "0644"
notify: notify:
- "Reload systemd"
- "Restart Caddy" - "Restart Caddy"

View File

@@ -1,55 +0,0 @@
- name: Download plugin {{ plugin.name }}
ansible.builtin.get_url:
url: "https://github.com/{{ plugin.provider | default('coreruleset') }}/{{ plugin.name }}-plugin/archive/refs/tags/v{{ plugin.version }}.tar.gz"
dest: "/usr/local/src/"
mode: "0644"
register: "caddy_plugin_downloaded"
- name: Deploy plugin {{ plugin.name }}
# noqa: no-handler
when: "caddy_plugin_downloaded.changed"
block:
- name: Get temp dir {{ plugin.name }}
ansible.builtin.tempfile:
state: "directory"
register: "caddy_temp_plugin_dir"
- name: Unarchive plugin {{ plugin.name }}
ansible.builtin.unarchive:
src: "/usr/local/src/{{ plugin.name }}-plugin-{{ plugin.version }}.tar.gz"
dest: "{{ caddy_temp_plugin_dir.path }}"
remote_src: true
- name: Copy plugin files {{ plugin.name }}
ansible.builtin.copy:
src: "{{ caddy_temp_plugin_dir.path }}/{{ plugin.name }}-plugin-{{ plugin.version }}/plugins/"
dest: "{{ caddy_config_dir }}/crs-plugins/"
mode: "0644"
# directory_mode: "0750"
group: "{{ caddy_system_group }}"
remote_src: true
notify:
- "Restart Caddy"
- name: Create after config {{ plugin.name }}
when: "not(plugin.has_after_config | default(false))"
ansible.builtin.copy:
content: ""
dest: "{{ caddy_config_dir }}/crs-plugins/{{ plugin.name }}-after.conf"
mode: "0644"
group: "{{ caddy_system_group }}"
# FIXME: bad hack, why is it required?
- name: Adjust plugins diretory permissions
ansible.builtin.file:
path: "{{ caddy_config_dir }}/crs-plugins"
state: "directory"
group: "{{ caddy_system_group }}"
mode: "0750"
- name: Delete temp dir {{ plugin.name }}
when: "caddy_temp_plugin_dir.path is defined"
ansible.builtin.file:
path: "{{ caddy_temp_plugin_dir.path }}"
state: "absent"

View File

@@ -202,17 +202,17 @@
coraza_waf @not_whitelisted { coraza_waf @not_whitelisted {
load_owasp_crs load_owasp_crs
directives ` directives `
Include "{{ caddy_config_dir }}/sites/{{ site.id }}/coraza.conf" Include "{{ caddy_sites_dir }}/{{ site.id }}/coraza.conf"
Include "{{ caddy_config_dir }}/sites/{{ site.id }}/crs-setup.conf" Include "{{ caddy_sites_dir }}/{{ site.id }}/crs-setup.conf"
{% for plugin in site.crs_plugins | default(caddy_sites_defaults.crs_plugins) %} {% for plugin in site.crs_plugins | default(caddy_sites_defaults.crs_plugins) %}
Include "{{ caddy_config_dir }}/crs-plugins/{{ plugin }}-config.conf" Include "{{ caddy_crs_plugins_dir }}/{{ plugin }}-config.conf"
Include "{{ caddy_config_dir }}/crs-plugins/{{ plugin }}-before.conf" Include "{{ caddy_crs_plugins_dir }}/{{ plugin }}-before.conf"
{% endfor %} {% endfor %}
Include "{{ caddy_config_dir }}/sites/{{ site.id }}/exclusions-request-before.conf" Include "{{ caddy_sites_dir }}/{{ site.id }}/exclusions-request-before.conf"
Include "{{ caddy_config_dir }}/coreruleset-{{ site.crs_version | default(caddy_sites_defaults.crs_version) }}/rules/*.conf" Include "{{ caddy_config_dir }}/coreruleset-{{ site.crs_version | default(caddy_sites_defaults.crs_version) }}/rules/*.conf"
Include "{{ caddy_config_dir }}/sites/{{ site.id }}/exclusions-response-after.conf" Include "{{ caddy_sites_dir }}/{{ site.id }}/exclusions-response-after.conf"
{% for plugin in site.crs_plugins | default(caddy_sites_defaults.crs_plugins) %} {% for plugin in site.crs_plugins | default(caddy_sites_defaults.crs_plugins) %}
Include "{{ caddy_config_dir }}/crs-plugins/{{ plugin }}-after.conf" Include "{{ caddy_crs_plugins_dir }}/{{ plugin }}-after.conf"
{% endfor %} {% endfor %}
SecRuleEngine On SecRuleEngine On
` `

View File

@@ -20,6 +20,7 @@
ansible.builtin.unarchive: ansible.builtin.unarchive:
src: "https://releases.hashicorp.com/consul/{{ consul_version }}/consul_{{ consul_version }}_linux_amd64.zip" src: "https://releases.hashicorp.com/consul/{{ consul_version }}/consul_{{ consul_version }}_linux_amd64.zip"
dest: "/usr/local/consul-{{ consul_version }}" dest: "/usr/local/consul-{{ consul_version }}"
creates: "/usr/local/consul-{{ consul_version }}/consul"
remote_src: true remote_src: true
notify: notify:
- "Restart Consul" - "Restart Consul"