feat(snipe_it): add ansible role for deployment
This commit is contained in:
14
roles/snipe_it/tasks/check.yml
Normal file
14
roles/snipe_it/tasks/check.yml
Normal file
@ -0,0 +1,14 @@
|
||||
---
|
||||
- name: Ensure state is valid
|
||||
ansible.builtin.fail:
|
||||
msg: >-2
|
||||
Unsupported state '{{ snipe_it_state }}'!
|
||||
Supported states are {{ snipe_it_states | join(', ') }}.
|
||||
when: snipe_it_state is not in snipe_it_states
|
||||
|
||||
- name: Ensure deployment method is valid
|
||||
ansible.builtin.fail:
|
||||
msg: >-2
|
||||
Unsupported deployment_method '{{ snipe_it_deployment_method }}'!
|
||||
Supported values are {{ snipe_it_deployment_methods | join(', ') }}.
|
||||
when: snipe_it_deployment_method is not in snipe_it_deployment_methods
|
30
roles/snipe_it/tasks/deploy-docker.yml
Normal file
30
roles/snipe_it/tasks/deploy-docker.yml
Normal file
@ -0,0 +1,30 @@
|
||||
---
|
||||
- name: Ensure container image '{{ snipe_it_container_image }}' is {{ snipe_it_state }}
|
||||
community.docker.docker_image:
|
||||
name: "{{ snipe_it_container_image }}"
|
||||
state: "{{ snipe_it_state }}"
|
||||
source: "{{ snipe_it_container_image_source }}"
|
||||
force_source: "{{ snipe_it_container_image_force_source }}"
|
||||
register: snipe_it_container_image_info
|
||||
until: snipe_it_container_image_info is success
|
||||
retries: 5
|
||||
delay: 3
|
||||
|
||||
- name: Ensure container '{{ snipe_it_container_name }}' is {{ snipe_it_container_state }}
|
||||
community.docker.docker_container:
|
||||
name: "{{ snipe_it_container_name }}"
|
||||
image: "{{ snipe_it_container_image }}"
|
||||
env_file: "{{ snipe_it_env_file }}"
|
||||
env: "{{ snipe_it_container_env | default(omit, true) }}"
|
||||
user: "{{ snipe_it_container_user | default(omit, true) }}"
|
||||
ports: "{{ snipe_it_container_ports | default(omit, true) }}"
|
||||
labels: "{{ snipe_it_container_labels | default(omit, true) }}"
|
||||
volumes: "{{ snipe_it_container_volumes | default(omit, true) }}"
|
||||
networks: "{{ snipe_it_container_networks | default(omit, true) }}"
|
||||
etc_hosts: "{{ snipe_it_container_etc_hosts | default(omit, true) }}"
|
||||
dns_servers: "{{ snipe_it_container_dns_servers | default(omit, true) }}"
|
||||
network_mode: "{{ snipe_it_container_network_mode | default(omit, true) }}"
|
||||
restart_policy: >-2
|
||||
{{ snipe_it_container_restart_policy | default(omit, true) }}
|
||||
recreate: "{{ snipe_it_container_recreate | default(omit, true) }}"
|
||||
state: "{{ snipe_it_container_state }}"
|
59
roles/snipe_it/tasks/main.yml
Normal file
59
roles/snipe_it/tasks/main.yml
Normal file
@ -0,0 +1,59 @@
|
||||
---
|
||||
- name: Check preconditions
|
||||
ansible.builtin.include_tasks:
|
||||
file: "check.yml"
|
||||
|
||||
- name: Ensure snipe-it user '{{ snipe_it_user }}' is {{ snipe_it_state }}
|
||||
ansible.builtin.user:
|
||||
name: "{{ snipe_it_user }}"
|
||||
state: "{{ snipe_it_state }}"
|
||||
system: "{{ snipe_it_user_system | default(true, true) }}"
|
||||
create_home: "{{ snipe_it_user_create_home | default(false, true) }}"
|
||||
groups: "{{ snipe_it_user_groups | default(omit, true) }}"
|
||||
append: >-2
|
||||
{{
|
||||
snipe_it_user_groups_append | default(
|
||||
snipe_it_user_groups | default([], true) | length > 0,
|
||||
true,
|
||||
)
|
||||
}}
|
||||
register: snipe_it_user_info
|
||||
|
||||
- name: Ensure snipe-it environment file is {{ snipe_it_state }}
|
||||
ansible.builtin.file:
|
||||
path: "{{ snipe_it_env_file }}"
|
||||
state: "{{ snipe_it_state }}"
|
||||
when: snipe_it_state == 'absent'
|
||||
|
||||
- name: Ensure snipe-it config directory is {{ snipe_it_state }}
|
||||
ansible.builtin.file:
|
||||
path: "{{ snipe_it_env_file | dirname }}"
|
||||
state: "{{ (snipe_it_state == 'present') | ternary('directory', 'absent') }}"
|
||||
owner: "{{ snipe_it_run_user_id }}"
|
||||
group: "{{ snipe_it_run_group_id }}"
|
||||
mode: "0755"
|
||||
when: snipe_it_state == 'present'
|
||||
|
||||
- name: Ensure snipe-it data directory '{{ snipe_it_data_directory }}' is {{ snipe_it_state }}
|
||||
ansible.builtin.file:
|
||||
path: "{{ snipe_it_data_directory }}"
|
||||
state: "{{ (snipe_it_state == 'present') | ternary('directory', 'absent') }}"
|
||||
owner: "{{ snipe_it_run_user_id }}"
|
||||
group: "{{ snipe_it_run_group_id }}"
|
||||
mode: "0755"
|
||||
|
||||
- name: Ensure snipe-it environment file is templated
|
||||
ansible.builtin.copy:
|
||||
content: |+2
|
||||
{% for entry in snipe_it_merged_config | dict2items %}
|
||||
{{ entry.key }}={{ entry.value }}
|
||||
{% endfor %}
|
||||
dest: "{{ snipe_it_env_file }}"
|
||||
owner: "{{ snipe_it_run_user_id }}"
|
||||
group: "{{ snipe_it_run_group_id }}"
|
||||
mode: "0640"
|
||||
when: snipe_it_state == 'present'
|
||||
|
||||
- name: Deploy using {{ snipe_it_deployment_method }}
|
||||
ansible.builtin.include_tasks:
|
||||
file: "deploy-{{ snipe_it_deployment_method }}.yml"
|
Reference in New Issue
Block a user