feat(snipe_it): add ansible role for deployment
This commit was merged in pull request #10.
	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