feat(hydrogen): add ansible role for deployment using docker

This commit is contained in:
2024-10-04 15:52:34 +02:00
parent 0a8d128205
commit 7aa6ba6f27
10 changed files with 196 additions and 0 deletions

View File

@ -0,0 +1,33 @@
---
- name: Ensure container image '{{ hydrogen_container_image }}' is {{ hydrogen_state }} on host
community.docker.docker_image:
name: "{{ hydrogen_container_image }}"
state: "{{ hydrogen_state }}"
source: "{{ hydrogen_container_image_source }}"
force_source: >-2
{{ hydrogen_container_image_force_source }}
register: hydrogen_container_image_info
until: hydrogen_container_image_info is success
retries: 5
delay: 3
- name: Ensure hydrogen container '{{ hydrogen_container_name }}' is {{ hydrogen_container_state }}
community.docker.docker_container:
name: "{{ hydrogen_container_name }}"
image: "{{ hydrogen_container_image }}"
env: "{{ hydrogen_container_env | default(omit, true) }}"
user: "{{ hydrogen_container_user }}"
ports: "{{ hydrogen_container_ports | default(omit, true) }}"
labels: "{{ hydrogen_container_labels | default(omit, true) }}"
ulimits: "{{ hydrogen_container_ulimits | default(omit, true) }}"
volumes: "{{ hydrogen_container_volumes }}"
networks: "{{ hydrogen_container_networks | default(omit, true) }}"
purge_networks: >-2
{{ hydrogen_container_purge_networks | default(omit, true) }}
dns_servers: >-2
{{ hydrogen_container_dns_servers | default(omit, true) }}
etc_hosts: >-2
{{ hydrogen_container_etc_hosts | default(omit, true) }}
restart_policy: >-2
{{ hydrogen_container_restart_policy | default(omit, true) }}
state: "{{ hydrogen_container_state }}"

View File

@ -0,0 +1,57 @@
---
- name: Check if deployment method is supported
ansible.builtin.fail:
msg: >-2
Deployment method '{{ hydrogen_deployment_method }}'
is not supported. Support methods are
{{ hydrogen_deployment_methods | join(', ') }}.
when: hydrogen_deployment_method not in hydrogen_deployment_methods
- name: Check if state is supported
ansible.builtin.fail:
msg: >-2
State '{{ hydrogen_state }}' is not supported.
Supported states are: {{ hydrogen_states | join(', ') }}
when: hydrogen_state not in hydrogen_states
- name: Ensure hydrogen user '{{ hydrogen_user }}' is {{ hydrogen_state }}
ansible.builtin.user:
name: "{{ hydrogen_user }}"
system: "{{ hydrogen_user_system | default(true, true) }}"
groups: "{{ hydrogen_user_groups | default(omit, true) }}"
append: >-2
{{ hydrogen_user_append_groups
| default(hydrogen_user_groups | default([]) | length > 0, true)
| bool
}}
state: "{{ hydrogen_state }}"
register: hydrogen_user_info
- name: Ensure hydrogen config file is {{ hydrogen_state }}
ansible.builtin.file:
path: "{{ hydrogen_config_file }}"
state: "{{ hydrogen_state }}"
when: hydrogen_state == 'absent'
- name: Ensure hydrogen config folder is {{ hydrogen_state }}
ansible.builtin.file:
path: "{{ hydrogen_config_file | ansible.builtin.basename }}"
state: >-2
{{ (hydrogen_state == 'present')
| ternary('directory', 'absent') }}
owner: "{{ hydrogen_run_user_id }}"
group: "{{ hydrogen_run_group_id }}"
mode: "0755"
- name: Ensure hydrogen config file is {{ hydrogen_state }}
ansible.builtin.copy:
dest: "{{ hydrogen_config_file }}"
content: "{{ hydrogen_config | to_nice_json }}"
owner: "{{ hydrogen_run_user_id }}"
group: "{{ hydrogen_run_group_id }}"
mode: "0640"
when: hydrogen_state == 'present'
- name: Deploy using {{ hydrogen_deployment_method }}
ansible.builtin.include_tasks:
file: "deploy-{{ hydrogen_deployment_method }}.yml"