diff --git a/ansible/playbooks/docker_copy.yml b/ansible/playbooks/docker_copy.yml new file mode 100644 index 0000000..deddd87 --- /dev/null +++ b/ansible/playbooks/docker_copy.yml @@ -0,0 +1,8 @@ +- hosts: all + become: true + vars: + folder_name: n8n + + roles: + - role: docker + config_flavor: copy diff --git a/ansible/roles/docker/defaults/main.yml b/ansible/roles/docker/defaults/main.yml new file mode 100644 index 0000000..80f2098 --- /dev/null +++ b/ansible/roles/docker/defaults/main.yml @@ -0,0 +1,15 @@ +docker_comparisons: + env: strict + labels: strict + +docker_image_name_mismatch: recreate + +docker_state: started + +docker_restart_policy: unless-stopped + +docker_pull: "missing" + +gather_facts: true + +config_flavor: none \ No newline at end of file diff --git a/ansible/roles/docker/tasks/docker_copy.yml b/ansible/roles/docker/tasks/docker_copy.yml new file mode 100644 index 0000000..57bcffd --- /dev/null +++ b/ansible/roles/docker/tasks/docker_copy.yml @@ -0,0 +1,17 @@ +--- +# Copy directory recursively to remote host + +- name: Copy project directory to remote + ansible.builtin.synchronize: + src: ../compose/{{ folder_name }} + dest: /home/cloud/ + mode: push + + +- name: Start Compose stack + community.docker.docker_compose_v2: + project_src: /home/cloud/{{ folder_name }} + build: always + pull: always + state: present + diff --git a/ansible/roles/docker/tasks/docker_destroy.yml b/ansible/roles/docker/tasks/docker_destroy.yml new file mode 100644 index 0000000..b52c01a --- /dev/null +++ b/ansible/roles/docker/tasks/docker_destroy.yml @@ -0,0 +1,27 @@ +- name: Get running containers + docker_host_info: + containers: yes + register: docker_info + +- name: Stop running containers + docker_container: + name: "{{ item }}" + state: stopped + loop: "{{ docker_info.containers | map(attribute='Id') | list }}" + +- name: Remove Stoped docker containers + shell: | + docker rm $(docker ps -a -q); + when: docker_info.containers != 0 + +- name: Get details of all images + docker_host_info: + images: yes + verbose_output: yes + register: image_info + +- name: Remove all images + docker_image: + name: "{{ item }}" + state: absent + loop: "{{ image_info.images | map(attribute='Id') | list }}" \ No newline at end of file diff --git a/ansible/roles/docker/tasks/docker_install.yml b/ansible/roles/docker/tasks/docker_install.yml new file mode 100644 index 0000000..b7396de --- /dev/null +++ b/ansible/roles/docker/tasks/docker_install.yml @@ -0,0 +1,23 @@ +- name: Install gpg + ansible.builtin.apt: + name: gpg + +- name: Add Docker repository key + ansible.builtin.apt_key: + url: https://download.docker.com/linux/{{ ansible_distribution | lower }}/gpg + keyring: /etc/apt/trusted.gpg.d/docker.gpg + +- name: Add Docker repository + ansible.builtin.apt_repository: + # Use HTTP to enable apt-cacher + repo: deb http://download.docker.com/linux/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} stable + filename: docker + +- name: Install Docker + ansible.builtin.apt: + name: "{{ item }}" + loop: + - docker-ce + - docker-ce-cli + - containerd.io + diff --git a/ansible/roles/docker/tasks/main.yml b/ansible/roles/docker/tasks/main.yml new file mode 100644 index 0000000..4ee4577 --- /dev/null +++ b/ansible/roles/docker/tasks/main.yml @@ -0,0 +1,17 @@ +--- +- name: Docker Install + include_tasks: docker_install.yml + when: config_flavor == "install" + +- name: Docker Stop & Destroy + include_tasks: docker_destroy.yml + when: config_flavor == "destroy" + + +- name: Docker Transfer Compose to Remote Host + include_tasks: docker_copy.yml + when: config_flavor == "copy" + +##### +# You need to set up each docker playbook to a config flavor or look for an input module and assign config_flavor to it +###### \ No newline at end of file diff --git a/compose/.env b/compose/n8n/.env similarity index 100% rename from compose/.env rename to compose/n8n/.env diff --git a/compose/docker-compose.yml b/compose/n8n/docker-compose.yml similarity index 100% rename from compose/docker-compose.yml rename to compose/n8n/docker-compose.yml