271 lines
9.1 KiB
YAML
271 lines
9.1 KiB
YAML
---
|
|
argument_specs:
|
|
main:
|
|
short_description: Sets up a vhost
|
|
description:
|
|
- Sets up a vhost on a web server.
|
|
- Supports reverse proxies, redirects and simple resonses.
|
|
- Currently only supports caddy.
|
|
options:
|
|
vhost_id:
|
|
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:
|
|
description: Required if vhost_state is present
|
|
type: str
|
|
required: false
|
|
choices:
|
|
- reverse_proxy
|
|
- redirect
|
|
- respond
|
|
- absent
|
|
vhost_domains:
|
|
description: Required if vhost_state is present
|
|
type: list
|
|
required: false
|
|
elements: str
|
|
vhost_web_server:
|
|
description: Defines which server software to use for vhost. This role does nothing if set to none.
|
|
type: str
|
|
required: false
|
|
default: caddy
|
|
choices:
|
|
- caddy
|
|
- none
|
|
vhost_headers:
|
|
description: Dict of response headers and their values
|
|
type: dict
|
|
required: false
|
|
default: {}
|
|
vhost_delete_headers:
|
|
description: List of reponse headers to delete
|
|
type: list
|
|
elements: str
|
|
required: false
|
|
default: []
|
|
|
|
vhost_basicauth:
|
|
description: Whether to require basic auth for the vhost
|
|
type: bool
|
|
required: false
|
|
default: false
|
|
vhost_basicauth_users:
|
|
description: A dict of basic auth users and their password hashes. Required if vhost_basicauth is true
|
|
type: dict
|
|
required: false
|
|
default: {}
|
|
|
|
vhost_proxy_target_netproto:
|
|
description:
|
|
- Network protocol to use for proxy requests.
|
|
- Only applicable if vhost_type is reverse_proxy.
|
|
type: str
|
|
required: false
|
|
default: tcp
|
|
choices:
|
|
- tcp
|
|
- unix
|
|
vhost_proxy_target_protocol:
|
|
description:
|
|
- Transport protocol (scheme) to use for proxy requests.
|
|
- Only applicable if vhost_type is reverse_proxy.
|
|
type: str
|
|
required: false
|
|
default: http
|
|
choices:
|
|
- http
|
|
- https
|
|
vhost_proxy_target_host:
|
|
description:
|
|
- Host where to proxy requests to.
|
|
- Only applicable if vhost_type is reverse_proxy and vhost_proxy_target_netproto is tcp.
|
|
type: str
|
|
required: false
|
|
default: localhost
|
|
vhost_proxy_target_port:
|
|
description:
|
|
- Port where to proxy requests to.
|
|
- Only applicable if vhost_type is reverse_proxy and vhost_proxy_target_netproto is tcp.
|
|
type: int
|
|
required: false
|
|
vhost_proxy_target_socket:
|
|
description:
|
|
- Unix socket path to proxy requests to.
|
|
- Only applicable if vhost_type is reverse_proxy and vhost_proxy_target_netproto is unix.
|
|
type: str
|
|
required: false
|
|
vhost_proxy_delete_headers:
|
|
description: List of headers to delete from proxied requests
|
|
type: list
|
|
elements: str
|
|
required: false
|
|
default: []
|
|
|
|
vhost_redirect_target:
|
|
description: "Only applicable if vhost_type is redirect. Example: https://www.domain.tld/location"
|
|
type: str
|
|
required: false
|
|
vhost_redirect_preserve_path:
|
|
description: Whether to keep the original request path
|
|
type: bool
|
|
required: false
|
|
default: false
|
|
vhost_redirect_preserve_query:
|
|
description: Whether to keep the original request query string
|
|
type: bool
|
|
required: false
|
|
default: "{{ vhost_redirect_preserve_path }}"
|
|
redirect_type:
|
|
description: Only applicable if vhost_type is redirect
|
|
type: str
|
|
required: false
|
|
default: temporary
|
|
choices:
|
|
- temporary
|
|
- permanent
|
|
|
|
vhost_respond_content:
|
|
description: Content to respond with. Json content can be set as yaml as long as vhost_respond_content_type is set to json
|
|
type: str
|
|
required: false
|
|
vhost_respond_content_type:
|
|
description: Type of the respond content
|
|
type: str
|
|
required: false
|
|
default: plain
|
|
choices:
|
|
- plain
|
|
- json
|
|
|
|
vhost_locations:
|
|
description: List of locations to handle differently from the default for vhost
|
|
type: list
|
|
required: false
|
|
default: []
|
|
elements: dict
|
|
options:
|
|
path:
|
|
description: Path to match. Only supports full paths for now.
|
|
type: str
|
|
required: true
|
|
type:
|
|
type: str
|
|
required: false
|
|
default: "{{ vhost_type }}"
|
|
choices:
|
|
- reverse_proxy
|
|
- redirect
|
|
- respond
|
|
headers:
|
|
description: Dict of response headers and their values
|
|
type: dict
|
|
required: false
|
|
default: "{{ vhost_headers }}"
|
|
delete_headers:
|
|
description: List of response headers to delete
|
|
type: list
|
|
elements: str
|
|
required: false
|
|
default: "{{ vhost_delete_headers }}"
|
|
|
|
basicauth:
|
|
description: Whether to require basic auth for the location
|
|
type: bool
|
|
required: false
|
|
default: "{{ vhost_basicauth }}"
|
|
basicauth_users:
|
|
description: A dict of basic auth users and their password hashes. Required if basicauth is true
|
|
type: dict
|
|
default: "{{ vhost_basicauth_users }}"
|
|
|
|
proxy_target_netproto:
|
|
description:
|
|
- Network protocol to use for proxy requests.
|
|
- Only applicable if type is reverse_proxy.
|
|
type: str
|
|
required: false
|
|
default: "{{ vhost_proxy_target_netproto }}"
|
|
choices:
|
|
- tcp
|
|
- unix
|
|
proxy_target_protocol:
|
|
description:
|
|
- Transport protocol (scheme) to use for proxy requests.
|
|
- Only applicable if type is reverse_proxy.
|
|
type: str
|
|
required: false
|
|
default: "{{ vhost_proxy_target_protocol }}"
|
|
choices:
|
|
- http
|
|
- https
|
|
proxy_target_host:
|
|
description: Host where to proxy requests to. Only applicable if type is reverse_proxy
|
|
type: str
|
|
required: false
|
|
default: "{{ vhost_proxy_target_host }}"
|
|
proxy_target_port:
|
|
description: Port where to proxy requests to. Only applicable if type is reverse_proxy.
|
|
type: int
|
|
required: false
|
|
default: "{{ vhost_proxy_target_port if vhost_type == 'reverse_proxy' and vhost_proxy_target_netproto == 'tcp' else 0 }}"
|
|
proxy_target_socket:
|
|
description:
|
|
- Unix socket path to proxy requests to.
|
|
- Only applicable if type is reverse_proxy and proxy_target_netproto is unix.
|
|
type: str
|
|
required: false
|
|
default: "{{ vhost_proxy_target_socket if vhost_type == 'reverse_proxy' and vhost_proxy_target_netproto == 'unix' else '' }}"
|
|
proxy_delete_headers:
|
|
description: List of request headers to delete from proxied requests
|
|
type: list
|
|
elements: str
|
|
required: false
|
|
default: "{{ vhost_proxy_delete_headers }}"
|
|
|
|
redirect_target:
|
|
description: "Only applicable if vhost_type is redirect. Example: https://www.domain.tld/location"
|
|
type: str
|
|
required: false
|
|
default: "{{ vhost_redirect_target if vhost_type == 'redirect' else '' }}"
|
|
redirect_preserve_path:
|
|
description: Whether to keep the original request path
|
|
type: bool
|
|
required: false
|
|
default: "{{ vhost_redirect_preserve_path }}"
|
|
redirect_preserve_query:
|
|
description: Whether to keep the original request query string
|
|
type: bool
|
|
required: false
|
|
default: "{{ vhost_redirect_preserve_query }}"
|
|
redirect_type:
|
|
description: Only applicable if vhost_type is redirect
|
|
type: str
|
|
required: false
|
|
default: "{{ vhost_redirect_type }}"
|
|
choices:
|
|
- temporary
|
|
- permanent
|
|
|
|
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: false
|
|
default: "{{ vhost_respond_content if vhost_type == 'respond' else '' }}"
|
|
respond_content_type:
|
|
description: Type of the respond content
|
|
type: str
|
|
required: false
|
|
default: "{{ vhost_respond_content_type }}"
|
|
choices:
|
|
- plain
|
|
- json
|