feat(hydrogen): add ansible role for deployment using docker
This commit is contained in:
33
roles/hydrogen/tasks/deploy-docker.yml
Normal file
33
roles/hydrogen/tasks/deploy-docker.yml
Normal 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 }}"
|
57
roles/hydrogen/tasks/main.yml
Normal file
57
roles/hydrogen/tasks/main.yml
Normal 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"
|
Reference in New Issue
Block a user