service: Move mount variable definitions form set_fact to vars
This commit is contained in:
@@ -2,10 +2,6 @@
|
|||||||
- name: Validate inputs
|
- name: Validate inputs
|
||||||
ansible.builtin.import_tasks: validation.yaml
|
ansible.builtin.import_tasks: validation.yaml
|
||||||
|
|
||||||
- name: Initialize variables
|
|
||||||
ansible.builtin.set_fact:
|
|
||||||
_service_container_mounts: []
|
|
||||||
|
|
||||||
- name: Database for {{ service_name }}
|
- name: Database for {{ service_name }}
|
||||||
ansible.builtin.include_tasks: database.yaml
|
ansible.builtin.include_tasks: database.yaml
|
||||||
when: _service_setup_database
|
when: _service_setup_database
|
||||||
@@ -18,9 +14,9 @@
|
|||||||
ansible.builtin.include_tasks: secrets.yaml
|
ansible.builtin.include_tasks: secrets.yaml
|
||||||
when: _service_container_secrets | length > 0
|
when: _service_container_secrets | length > 0
|
||||||
|
|
||||||
- name: Mounts for {{ service_name }}
|
- name: Template mounts for {{ service_name }}
|
||||||
ansible.builtin.include_tasks: mounts.yaml
|
ansible.builtin.include_tasks: templates.yaml
|
||||||
when: service_container_mounts | length > 0
|
when: _service_template_mounts | length > 0
|
||||||
|
|
||||||
- name: Additional containers for {{ service_name }}
|
- name: Additional containers for {{ service_name }}
|
||||||
ansible.builtin.include_tasks: additional.yaml
|
ansible.builtin.include_tasks: additional.yaml
|
||||||
|
|||||||
@@ -1,32 +0,0 @@
|
|||||||
---
|
|
||||||
- name: Set container named mounts
|
|
||||||
ansible.builtin.set_fact:
|
|
||||||
_service_container_mounts: >
|
|
||||||
{{ _service_container_mounts +
|
|
||||||
[mount | combine({'source': service_name + '-' + mount.source})] }}
|
|
||||||
when: mount.type == 'volume'
|
|
||||||
|
|
||||||
- name: Set container named mounts
|
|
||||||
ansible.builtin.set_fact:
|
|
||||||
_service_container_mounts: "{{ _service_container_mounts + [mount] }}"
|
|
||||||
when: mount.type == 'bind'
|
|
||||||
|
|
||||||
- name: Template mounts
|
|
||||||
when: mount.type == 'template'
|
|
||||||
block:
|
|
||||||
- name: Set template host path
|
|
||||||
ansible.builtin.set_fact:
|
|
||||||
_service_template_host_path: "{{ _service_host_directory }}/mounts/{{ (mount.source | split('.'))[0:-1] | join('.') }}" # Strip .j2 extension
|
|
||||||
|
|
||||||
- name: Template files for template mounts
|
|
||||||
ansible.builtin.template:
|
|
||||||
src: "{{ mount.source }}"
|
|
||||||
dest: "{{ _service_template_host_path }}"
|
|
||||||
mode: "0644"
|
|
||||||
notify: "Restart container service {{ service_name }}"
|
|
||||||
|
|
||||||
- name: Set container template mounts
|
|
||||||
ansible.builtin.set_fact:
|
|
||||||
_service_container_mounts: >
|
|
||||||
{{ _service_container_mounts +
|
|
||||||
[{'readonly': true} | combine(mount) | combine({'type': 'bind', 'source': _service_template_host_path})] }}
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
---
|
|
||||||
- name: Create template mount directories under /srv
|
|
||||||
when: _service_template_mounts | length > 0
|
|
||||||
block:
|
|
||||||
- name: Create directory {{ _service_host_directory }}
|
|
||||||
ansible.builtin.file:
|
|
||||||
path: "{{ _service_host_directory }}"
|
|
||||||
state: directory
|
|
||||||
mode: "0755"
|
|
||||||
|
|
||||||
- name: Create directory {{ _service_host_directory + '/mounts' }}
|
|
||||||
ansible.builtin.file:
|
|
||||||
path: "{{ _service_host_directory }}/mounts"
|
|
||||||
state: directory
|
|
||||||
mode: "0700"
|
|
||||||
|
|
||||||
- name: Set mount definitions for {{ service_name }}
|
|
||||||
ansible.builtin.include_tasks: mount.yaml
|
|
||||||
loop: "{{ service_container_mounts }}"
|
|
||||||
loop_control:
|
|
||||||
loop_var: mount
|
|
||||||
20
roles/service/tasks/templates.yaml
Normal file
20
roles/service/tasks/templates.yaml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
- name: Create directory {{ _service_host_directory }}
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: "{{ _service_host_directory }}"
|
||||||
|
state: directory
|
||||||
|
mode: "0755"
|
||||||
|
|
||||||
|
- name: Create directory {{ _service_host_directory + '/mounts' }}
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: "{{ _service_host_directory }}/mounts"
|
||||||
|
state: directory
|
||||||
|
mode: "0700"
|
||||||
|
|
||||||
|
- name: Template files for template mounts
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: "{{ item[0].source }}"
|
||||||
|
dest: "{{ item[1].source }}"
|
||||||
|
mode: "0644"
|
||||||
|
notify: "Restart container service {{ service_name }}"
|
||||||
|
loop: "{{ _service_template_mounts | zip(_service_container_template_mounts) }}"
|
||||||
@@ -1,7 +1,42 @@
|
|||||||
---
|
---
|
||||||
_service_template_mounts: "{{ service_container_mounts | selectattr('type', '==', 'template') | list }}"
|
_service_volume_mounts: "{{ service_container_mounts | selectattr('type', '==', 'volume') }}"
|
||||||
|
_service_template_mounts: "{{ service_container_mounts | selectattr('type', '==', 'template') }}"
|
||||||
_service_host_directory: "/srv/{{ service_name }}"
|
_service_host_directory: "/srv/{{ service_name }}"
|
||||||
|
|
||||||
|
_service_container_volume_mounts: >-
|
||||||
|
{{
|
||||||
|
_service_volume_mounts |
|
||||||
|
zip(
|
||||||
|
_service_volume_mounts |
|
||||||
|
map(attribute='source') |
|
||||||
|
map('regex_replace', '^', service_name ~ '-') |
|
||||||
|
map('community.general.dict_kv', 'source')
|
||||||
|
) |
|
||||||
|
map('combine')
|
||||||
|
}}
|
||||||
|
_service_container_bind_mounts: "{{ service_container_mounts | selectattr('type', '==', 'bind') }}"
|
||||||
|
_service_container_template_mounts: >-
|
||||||
|
{{
|
||||||
|
([{'readonly': true}] * _service_template_mounts | length) |
|
||||||
|
zip(
|
||||||
|
_service_template_mounts,
|
||||||
|
_service_template_mounts |
|
||||||
|
map(attribute='source') |
|
||||||
|
map('regex_replace', '\.j2$', '') |
|
||||||
|
map('regex_replace', '^', _service_host_directory ~ '/mounts/') |
|
||||||
|
map('community.general.dict_kv', 'source'),
|
||||||
|
([{'type': 'bind'}] * _service_template_mounts | length)
|
||||||
|
) |
|
||||||
|
map('combine')
|
||||||
|
}}
|
||||||
|
|
||||||
|
_service_container_mounts: >-
|
||||||
|
{{
|
||||||
|
_service_container_volume_mounts +
|
||||||
|
_service_container_bind_mounts +
|
||||||
|
_service_container_template_mounts
|
||||||
|
}}
|
||||||
|
|
||||||
_service_setup_database: "{{ service_database_type != 'none' }}"
|
_service_setup_database: "{{ service_database_type != 'none' }}"
|
||||||
_service_database_name: "{{ service_name }}-{{ service_database_type }}"
|
_service_database_name: "{{ service_name }}-{{ service_database_type }}"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user