feat(caddy_site): add ansible role for configuring sites using caddy
This commit is contained in:
7
roles/caddy_site/README.md
Normal file
7
roles/caddy_site/README.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# `finallycoffee.base.caddy_site` ansible role
|
||||
|
||||
Provision a single site configuration in caddy.
|
||||
|
||||
Set `caddy_site_name` as a unique
|
||||
site identifier (needs to be a valid filename) and `caddy_site_config`
|
||||
to contain the actual `Caddyfile` contents.
|
||||
13
roles/caddy_site/defaults/main.yml
Normal file
13
roles/caddy_site/defaults/main.yml
Normal file
@@ -0,0 +1,13 @@
|
||||
---
|
||||
caddy_site_name: ~
|
||||
caddy_site_config: ~
|
||||
caddy_site_state: "present"
|
||||
|
||||
caddy_site_configs: "/etc/caddy/sites.d"
|
||||
caddy_site_config_dir: >-2
|
||||
{{ caddy_site_configs }}/{{ caddy_site_name }}
|
||||
caddy_site_config_file: >-2
|
||||
{{ caddy_site_config_dir }}/Caddyfile
|
||||
|
||||
caddy_site_owner: "caddy"
|
||||
caddy_site_group: "caddy"
|
||||
11
roles/caddy_site/meta/main.yml
Normal file
11
roles/caddy_site/meta/main.yml
Normal file
@@ -0,0 +1,11 @@
|
||||
---
|
||||
allow_duplicates: true
|
||||
dependencies: []
|
||||
galaxy_info:
|
||||
role_name: caddy_site
|
||||
description: Deploy a sites' configuration in caddy
|
||||
galaxy_tags:
|
||||
- caddy
|
||||
- zerossl
|
||||
- http
|
||||
- webserver
|
||||
26
roles/caddy_site/tasks/main.yml
Normal file
26
roles/caddy_site/tasks/main.yml
Normal file
@@ -0,0 +1,26 @@
|
||||
---
|
||||
- name: Fail if required variables are not populated
|
||||
ansible.builtin.fail:
|
||||
msg: "Either `caddy_site_name` or `caddy_site_config` is not provided"
|
||||
when: >-2
|
||||
(caddy_site_name | ansible.builtin.type_debug == 'NoneType')
|
||||
or
|
||||
(caddy_site_config | ansible.builtin.type_debug == 'NoneType')
|
||||
|
||||
- name: Ensure directory for caddy site config '{{ caddy_site_name }}' is {{ caddy_site_state }}
|
||||
ansible.builtin.file:
|
||||
path: "{{ caddy_site_config_dir }}"
|
||||
state: >-2
|
||||
{{ (caddy_site_state == 'present') | ternary('directory', 'absent') }}
|
||||
owner: "{{ caddy_site_owner }}"
|
||||
group: "{{ caddy_site_group }}"
|
||||
mode: "0750"
|
||||
|
||||
- name: Ensure caddy site configuration is templated
|
||||
ansible.builtin.copy:
|
||||
dest: "{{ caddy_site_config_file }}"
|
||||
content: "{{ caddy_site_config }}"
|
||||
owner: "{{ caddy_site_owner }}"
|
||||
group: "{{ caddy_site_group }}"
|
||||
mode: "0640"
|
||||
when: caddy_site_state == 'present'
|
||||
Reference in New Issue
Block a user