From 1dbb9eac4cd8f075d4069de59ce07aceb335efb0 Mon Sep 17 00:00:00 2001 From: uumas Date: Sun, 28 Jul 2024 00:45:20 +0300 Subject: [PATCH] Support deleting vhosts --- roles/vhost/defaults/main.yml | 3 +++ roles/vhost/meta/argument_specs.yml | 19 ++++++++++++++----- roles/vhost/tasks/caddy.yml | 1 + 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/roles/vhost/defaults/main.yml b/roles/vhost/defaults/main.yml index 5296292..ba0dde8 100644 --- a/roles/vhost/defaults/main.yml +++ b/roles/vhost/defaults/main.yml @@ -1,5 +1,8 @@ --- +vhost_state: present +vhost_type: "{{ vhost_state }}" +vhost_domains: [] web_server: caddy vhost_locations: [] diff --git a/roles/vhost/meta/argument_specs.yml b/roles/vhost/meta/argument_specs.yml index acdb0e4..69cc904 100644 --- a/roles/vhost/meta/argument_specs.yml +++ b/roles/vhost/meta/argument_specs.yml @@ -8,16 +8,25 @@ argument_specs: description: A unique identifier for this vhost. Not visible to end users. type: str required: true + vhost_state: + description: Whether the vhost should exist or not + type: str + required: false + default: present + choices: + - present + - absent vhost_type: type: str - required: true + required: "{{ vhost_state == 'present' }}" choices: - reverse_proxy - redirect - respond + - absent vhost_domains: type: list - required: true + required: "{{ vhost_state == 'present' }}" elements: str web_server: description: Defines which server software to use for vhost. This role does nothing if set to none @@ -47,7 +56,7 @@ argument_specs: proxy_target_port: description: Port where to proxy requests to. Only applicable if vhost_type is reverse_proxy type: int - required: "{{ vhost_type == 'reverse_proxy' }}" + required: "{{ vhost_state == 'present' and vhost_type == 'reverse_proxy' }}" proxy_target_host: description: Host where to proxy requests to. Only applicable if vhost_type is reverse_proxy type: str @@ -65,7 +74,7 @@ argument_specs: redirect_target: description: "Only applicable if vhost_type is redirect. Example: https://www.domain.tld/location" type: str - required: "{{ vhost_type == 'redirect' }}" + required: "{{ vhost_state == 'present' and vhost_type == 'redirect' }}" redirect_preserve_path: description: Whether to keep the original request path type: bool @@ -83,7 +92,7 @@ argument_specs: respond_content: description: Content to respond with. Json content can be set as yaml as long as respond_content_type is set to json type: str - required: "{{ vhost_type == 'respond' }}" + required: "{{ vhost_state == 'present' and vhost_type == 'respond' }}" respond_content_type: description: Type of the respond content type: str diff --git a/roles/vhost/tasks/caddy.yml b/roles/vhost/tasks/caddy.yml index 3b27424..c23360c 100644 --- a/roles/vhost/tasks/caddy.yml +++ b/roles/vhost/tasks/caddy.yml @@ -40,4 +40,5 @@ } validate: 'caddy validate --config %s --adapter caddyfile' backup: true + state: "{{ vhost_state }}" notify: Reload caddy