diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c01900b5ef38ba9ea7ebf30008a587839c3531d9..b868d7541bd6ab435edd46ce20a3cbff7ad33284 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -60,6 +60,10 @@ include: - local: ci-cd/templates/role-oh-my-bash.yml rules: - if: '$RUN_UPSTREAM_FOR_ROLE_OH_MY_BASH == "true"' + ### BEFORE MREGE REQUEST + - local: ci-cd/templates/all-roles-b4-merge.yml + rules: + - if: $CI_PIPELINE_SOURCE == "merge_request_event" ### ### TEST PARSED VARS FROM UPSTREAM diff --git a/.gitmodules b/.gitmodules index bff688b1b1694d5dbac3335b2453aaa4de564a3f..d76bb98581a055c3a96ea5ebe7d0d4fcf9520b28 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "roles/c3infodesk-deployment-role-test"] - path = roles/c3infodesk-deployment-role-test - url = git@git.cccv.de:fejao/c3infodesk-deployment-role-test.git + path = roles/c3infodesk-deployment-role-test + url = git@git.cccv.de:fejao/c3infodesk-deployment-role-test.git +[submodule "roles/c3infodesk-deployment-role-dependencies"] + path = roles/c3infodesk-deployment-role-dependencies + url = git@git.cccv.de:fejao/c3infodesk-deployment-role-dependencies.git diff --git a/ci-cd/templates/all-roles-b4-merge.yml b/ci-cd/templates/all-roles-b4-merge.yml new file mode 100644 index 0000000000000000000000000000000000000000..461127e638503270b35bfb73076fa29a8773a606 --- /dev/null +++ b/ci-cd/templates/all-roles-b4-merge.yml @@ -0,0 +1,42 @@ +--- + +### +### VARIABLES +### +variables: + AUTHOR: fejao + # RUN_UPSTREAM_FOR_ROLE_TEST: true + # RUN_UPSTREAM_FOR_ROLE_DEPENDENCIES: true + # RUN_UPSTREAM_FOR_ROLE_CLONE_REPOSITORIES: true + # RUN_UPSTREAM_FOR_ROLE_DOCKER_IMAGES: true + # RUN_UPSTREAM_FOR_ROLE_DOCKER_CONTAINERS: true + # RUN_UPSTREAM_FOR_ROLE_OH_MY_BASH: true + +### +### INCLUDE +### +include: + ### ROLE TEST + - local: ci-cd/templates/role-test.yml + # rules: + # - if: '$RUN_UPSTREAM_FOR_ROLE_TEST == "true"' + ### ROLE DEPENDENCIES + - local: ci-cd/templates/role-dependencies.yml + # rules: + # - if: '$RUN_UPSTREAM_FOR_ROLE_DEPENDENCIES == "true"' + ### ROLE CLONE-REPOSITORIES + - local: ci-cd/templates/role-clone-repositories.yml + # rules: + # - if: '$RUN_UPSTREAM_FOR_ROLE_CLONE_REPOSITORIES == "true"' + ### ROLE DOCKER-IMAGES + - local: ci-cd/templates/role-docker-images.yml + # rules: + # - if: '$RUN_UPSTREAM_FOR_ROLE_DOCKER_IMAGES == "true"' + ### ROLE DOCKER-CONTAINERS + - local: ci-cd/templates/role-docker-containers.yml + # rules: + # - if: '$RUN_UPSTREAM_FOR_ROLE_DOCKER_CONTAINERS == "true"' + ### ROLE OH-MY-BASH + - local: ci-cd/templates/role-oh-my-bash.yml + # rules: + # - if: '$RUN_UPSTREAM_FOR_ROLE_OH_MY_BASH == "true"' diff --git a/roles/c3infodesk-deployment-role-dependencies b/roles/c3infodesk-deployment-role-dependencies new file mode 160000 index 0000000000000000000000000000000000000000..0c1e74bbb71bce7827c0a4b9dd713fc24c12d61e --- /dev/null +++ b/roles/c3infodesk-deployment-role-dependencies @@ -0,0 +1 @@ +Subproject commit 0c1e74bbb71bce7827c0a4b9dd713fc24c12d61e diff --git a/roles/c3infodesk-deployment-role-test b/roles/c3infodesk-deployment-role-test index ddc45d25c366878dd3f92136c54d4852562342c6..796e6c8f9f2088ab2c4ff69d3280bf053e64b6c9 160000 --- a/roles/c3infodesk-deployment-role-test +++ b/roles/c3infodesk-deployment-role-test @@ -1 +1 @@ -Subproject commit ddc45d25c366878dd3f92136c54d4852562342c6 +Subproject commit 796e6c8f9f2088ab2c4ff69d3280bf053e64b6c9 diff --git a/roles/dependencies/README.md b/roles/dependencies/README.md deleted file mode 100644 index 2d630898335cf08fbd81d59684fa15f989d954c7..0000000000000000000000000000000000000000 --- a/roles/dependencies/README.md +++ /dev/null @@ -1,167 +0,0 @@ -# dependencies role - - -This ansible-role for dealing with installing the dependencies for deploying the system used from **c3infodesk**. - -## Mentions -This role uses great part of it from [geerlingguy](https://github.com/geerlingguy) for installing **docker** at the target host. - -The original code used can be found at: [https://github.com/geerlingguy/ansible-role-docker](https://github.com/geerlingguy/ansible-role-docker) - -## Requirements -- To have [ansible](https://docs.ansible.com/ansible/latest/installation_guide/installation_distros.html) installed at your system. - - -## Configuration -You need to set some configuration for this to work -- ### ansible.cfg - You have to edit the **ansible.cfg** file to your needs for accessing your target. - - #### remote_user - You need to set the **remote_user** configuration for accessing the target host. - - Example: [remote_user](https://git.cccv.de/fejao/c3infodesk-deployment/-/blob/main/ansible.cfg#L227) - -- ### HOST_VARS - In order to access your target host, you need to create/edit your **inventories/host_vars/<YOUR_HOST_NAME>.yml** - - #### ansible_become_pass - You need to set the **sudo** password from the user setted on **remote_user** for installing packages and etc. at the target. - - Example: [ansible_become_pass](https://git.cccv.de/fejao/c3infodesk-deployment/-/blob/main/inventories/host_vars/example_server.yml#L5) - -- ### HOSTS - You need to provide a **group** in which your target belongs to with the same name setted for **inventories/host_vars/<YOUR_HOST_NAME>.yml**. - - There you can add/edit the target address/IP. - - Example: [hosts](https://git.cccv.de/fejao/c3infodesk-deployment/-/blob/main/inventories/hosts) - -## Role Variables -Here are the variables setted: - -- ### From: inventories/host_vars/<TARGET_NAME> - Here are the variables that you should be changing for your own deployment. - - **docker_users**: DEFAULT="[test-user]" - - The users to be added to the docker group. - - These users should should contain at least the same user setted on **ansible.cfg** at the **remote_user** - - **ansible_become_pass**: DEFAULT="Please change this" - - The password used from the user setted on **ansible.cfg** at the **remote_user** - - -- ### From: inventories/group_vars/<TARGET_GROUP> - This role needs no variable setted on **group_vars** - -- ### From: roles/clone-repositories/defaults/main.yml - Here are the variables used for this role. Please don't change then here but instead in **inventories/host_vars/<TARGET_NAME>** - - - **docker_users** - - **ansible_become_pass** - - **os_dependencies_packages** - - **docker_edition** - - **docker_packages** - - **docker_packages_state** - - **docker_obsolete_packages** - - **docker_obsolete_packages** - - **docker_service_manage** - - **docker_service_state** - - **docker_service_enabled** - - **docker_restart_handler_state** - - **docker_install_compose_plugin** - - **docker_compose_package** - - **docker_compose_package_state** - - **docker_install_compose** - - **docker_compose_version** - - **docker_compose_arch** - - **docker_compose_url** - - **docker_compose_path** - - **docker_add_repo** - - **docker_apt_release_channel** - - **docker_apt_ansible_distribution** - - **docker_apt_arch** - - **docker_apt_repository** - - **docker_apt_ignore_key_error** - - **docker_apt_gpg_key** - - **docker_apt_gpg_key_checksum** - - **docker_apt_filename** - - **docker_yum_repo_url** - - **docker_yum_repo_enable_nightly** - - **docker_yum_repo_enable_test** - - **docker_yum_gpg_key** - - **docker_daemon_options** - -- ### From: roles/dependencies/vars/main.yml - - **docker_packages** - - **docker_compose_package** - - -## Dependencies -This role have no dependency from any another role. - - -## Example Playbook - -- ### Using the provided example - For using the example playbook **[playbooks/examples/example_02_dependencies.yml](https://git.cccv.de/fejao/c3infodesk-deployment/-/blob/main/playbooks/examples/example_02_dependencies.yml)** file you only need to: - - Change the user at the **[ansible.cfg](https://git.cccv.de/fejao/c3infodesk-deployment/-/blob/main/ansible.cfg)** file at the field **[remote_user](https://git.cccv.de/fejao/c3infodesk-deployment/-/blob/main/ansible.cfg#L227)** for acessing your target. - - Update the file **[inventories/host_vars/example_server.yml](https://git.cccv.de/fejao/c3infodesk-deployment/-/blob/main/inventories/host_vars/example_server.yml)** and change the value for **[ansible_become_pass](https://git.cccv.de/fejao/c3infodesk-deployment/-/blob/main/inventories/host_vars/example_server.yml#L5)** from the **[remote_user](https://git.cccv.de/fejao/c3infodesk-deployment/-/blob/main/ansible.cfg#L227)** - - Update the **[inventories/hosts](https://git.cccv.de/fejao/c3infodesk-deployment/-/blob/main/inventories/hosts)** file and change the **[example_server](https://git.cccv.de/fejao/c3infodesk-deployment/-/blob/main/inventories/hosts#L2)** with the IP address from your target. - - And run the command: - ```bash - ansible-playbook -i inventories/hosts playbooks/examples/example_02_dependencies.yml - ``` - -- ### Setting your own example - After setting your variables at **inventories/host_vars/<HOST_NAME>**, you can add this role to your playbook as a regular role. - - Here is an example using the **<HOST_NAME>** as **test_servers** - - ```yaml - - hosts: - - test_servers - roles: - - roles/dependencies - ``` - - And call the playbook as: - - ```bash - ansible-playbook -i <INVENTORY> <PLAYBOOK_NAME>.yml - ``` - -## Testing -You can test this locally using **DIND (docker in docker)** at your own computer using [ansible molecule](https://ansible.readthedocs.io/projects/molecule/installation/) - -- ### Testing requirements - You need docker installed at your system and the [ansible molecule](https://ansible.readthedocs.io/projects/molecule/installation/). - - You might have to set DIND at your system, for linux, you can create the file **/etc/docker/daemon.json** - - And add the content and restart docker. - - ```json - { - "exec-opts": ["native.cgroupdriver=systemd"], - "features": { - "buildkit": true - }, - "experimental": true, - "cgroup-parent": "docker.slice" - } - ``` - -- ### Using molecule - Just go to the root of the role **roles/dependencies** and run the command: - - ```bash - molecule test - ``` - - -## License - -MIT / BSD - - -## Author Information - - [https://chaos.social/@fejao](https://chaos.social/@fejao) diff --git a/roles/dependencies/defaults/main.yml b/roles/dependencies/defaults/main.yml deleted file mode 100644 index 8215573e85d68e6e1be98582c06a5dd83aa6c5fe..0000000000000000000000000000000000000000 --- a/roles/dependencies/defaults/main.yml +++ /dev/null @@ -1,89 +0,0 @@ ---- -# defaults file for dependencies - - -### -### DEPLOYMENT USER -### -# This should be the password from the deployment user setted on ansible.cfg -ansible_become_pass: "UPDATE THIS FOR THE HOSTS" - -# A list of users who will be added to the docker group. -docker_users: [] - -### -### install_packages.yml -### -os_dependencies_packages: - - bash-completion - - git - - htop - - vim - - tree - -### -### install_docker.yml -### -docker_installed: false -# Edition can be one of: 'ce' (Community Edition) or 'ee' (Enterprise Edition). -docker_edition: 'ce' -docker_packages: - - "docker-{{ docker_edition }}" - - "docker-{{ docker_edition }}-cli" - - "docker-{{ docker_edition }}-rootless-extras" - - "containerd.io" - - docker-buildx-plugin -docker_packages_state: present -docker_obsolete_packages: - - docker - - docker.io - - docker-engine - - docker-doc - - podman-docker - - containerd - - runc - -# Service options. -docker_service_manage: true -docker_service_state: started -docker_service_enabled: true -docker_restart_handler_state: restarted - -# Docker Compose Plugin options. -docker_install_compose_plugin: true -docker_compose_package: docker-compose-plugin -docker_compose_package_state: present - -# Docker Compose options. -docker_install_compose: false -docker_compose_version: "v2.32.1" -docker_compose_arch: "{{ ansible_architecture }}" -docker_compose_url: "https://github.com/docker/compose/releases/download/{{ docker_compose_version }}/docker-compose-linux-{{ docker_compose_arch }}" -docker_compose_path: /usr/local/bin/docker-compose - -# Enable repo setup -docker_add_repo: true - -# Docker repo URL. -docker_repo_url: https://download.docker.com/linux - -# Used only for Debian/Ubuntu/Pop!_OS/Linux Mint. Switch 'stable' to 'nightly' if needed. -docker_apt_release_channel: stable -# docker_apt_ansible_distribution is a workaround for Ubuntu variants which can't be identified as such by Ansible, -# and is only necessary until Docker officially supports them. -docker_apt_ansible_distribution: "{{ 'ubuntu' if ansible_distribution in ['Pop!_OS', 'Linux Mint'] else ansible_distribution }}" -docker_apt_arch: "{{ 'arm64' if ansible_architecture == 'aarch64' else 'armhf' if ansible_architecture == 'armv7l' else 'amd64' }}" -docker_apt_repository: "deb [arch={{ docker_apt_arch }} signed-by=/etc/apt/keyrings/docker.asc] {{ docker_repo_url }}/{{ docker_apt_ansible_distribution | lower }} {{ ansible_distribution_release }} {{ docker_apt_release_channel }}" -docker_apt_ignore_key_error: true -docker_apt_gpg_key: "{{ docker_repo_url }}/{{ docker_apt_ansible_distribution | lower }}/gpg" -docker_apt_gpg_key_checksum: "sha256:1500c1f56fa9e26b9b8f42452a553675796ade0807cdce11975eb98170b3a570" -docker_apt_filename: "docker" - -# Used only for RedHat/CentOS/Fedora. -docker_yum_repo_url: "{{ docker_repo_url }}/{{ (ansible_distribution == 'Fedora') | ternary('fedora', 'centos') }}/docker-{{ docker_edition }}.repo" -docker_yum_repo_enable_nightly: '0' -docker_yum_repo_enable_test: '0' -docker_yum_gpg_key: "{{ docker_repo_url }}/centos/gpg" - -# Docker daemon options as a dict -docker_daemon_options: {} diff --git a/roles/dependencies/handlers/main.yml b/roles/dependencies/handlers/main.yml deleted file mode 100644 index d8fd57c8982df0d502c0958f370177863581820b..0000000000000000000000000000000000000000 --- a/roles/dependencies/handlers/main.yml +++ /dev/null @@ -1,10 +0,0 @@ ---- -# handlers file for dependencies - -- name: HANDLER_RESTART_DOCKER - ansible.builtin.systemd_service: - name: docker - state: restarted - daemon_reload: true - when: docker_service_manage | bool - become: true diff --git a/roles/dependencies/meta/main.yml b/roles/dependencies/meta/main.yml deleted file mode 100644 index 38d2833842ee1e86498fa393be66c0f392468926..0000000000000000000000000000000000000000 --- a/roles/dependencies/meta/main.yml +++ /dev/null @@ -1,12 +0,0 @@ ---- - -galaxy_info: - role_name: dependencies - description: Role to install the dependencies from the c3InfoDesk sytems - author: fejao - company: cccv.de - license: "MIT / BSD" - min_ansible_version: '2.10' - galaxy_tags: [] - -dependencies: [] diff --git a/roles/dependencies/molecule/README.md b/roles/dependencies/molecule/README.md deleted file mode 100644 index 81b4e594682041e986452b5fb75098d0b27dd499..0000000000000000000000000000000000000000 --- a/roles/dependencies/molecule/README.md +++ /dev/null @@ -1,42 +0,0 @@ -## ansible molecule tests for role: dependencies - - - -## Why to use it -It's allways a good idea to test your things. - -With **ansible molecule** you can test your role locally without the need of using a **real server** but a local **docker container**. - -## Dependencies - -- ### molecule - You need to have [ansible molecule](https://ansible.readthedocs.io/projects/molecule/installation/) installed. - -- ### DIND (docker in docker) - For using the tests, you will to have **docker** installed locally and and set it for using **DIND (docker in docker)** - - - - ### DIND linux - You have to create/edit the file **/etc/docker/daemon.json** with the content: - - ```json - { - "exec-opts": ["native.cgroupdriver=systemd"], - "features": { - "buildkit": true - }, - "experimental": true, - "cgroup-parent": "docker.slice" - } - ``` - - -## Configuration -There's not much for configuring for using the tests - -## Running the tests -For running the **molecule tests** you just need to run the command: - -```bash -molecule test -``` diff --git a/roles/dependencies/molecule/default/converge.yml b/roles/dependencies/molecule/default/converge.yml deleted file mode 100644 index ac4c198229d0263c654f00d8570df63ead5d98c6..0000000000000000000000000000000000000000 --- a/roles/dependencies/molecule/default/converge.yml +++ /dev/null @@ -1,35 +0,0 @@ ---- - -- name: MOLECULE | Converge - hosts: all - pre_tasks: - - name: MOLECULE | COVERGE | PRE-TASKS | VARIABLES | From -> ../../defaults - ansible.builtin.include_vars: - dir: ../../defaults - depth: 1 - extensions: - - 'yml' - - - name: MOLECULE | COVERGE | PRE-TASKS | VARIABLES | From -> ../../vars - ansible.builtin.include_vars: - dir: ../../vars - depth: 1 - extensions: - - 'yml' - - - name: MOLECULE | COVERGE | PRE-TASKS | VARIABLES | From -> ../../../../inventories/group_vars - ansible.builtin.include_vars: - dir: ../../../../inventories/group_vars - extensions: - - 'yml' - - - name: MOLECULE | COVERGE | PRE-TASKS | VARIABLES | From -> ../../../../inventories/host_vars - ansible.builtin.include_vars: - dir: ../../../../inventories/host_vars - extensions: - - 'yml' - - tasks: - - name: MOLECULE | CONVERGE | Call the 'dependencies' role. - ansible.builtin.include_role: - name: dependencies diff --git a/roles/dependencies/molecule/default/molecule.yml b/roles/dependencies/molecule/default/molecule.yml deleted file mode 100644 index cbd61d519013582cc5a352afce62bf81fa07c64e..0000000000000000000000000000000000000000 --- a/roles/dependencies/molecule/default/molecule.yml +++ /dev/null @@ -1,68 +0,0 @@ ---- - -dependency: - name: galaxy - -driver: - name: docker - -platforms: - - name: molecule_dependencies - ### At the moment I'm not running at the latest kernel, please use always with a older kernel than the host - # image: docker.io/geerlingguy/docker-ubuntu2204-ansible - image: geerlingguy/docker-ubuntu2204-ansible:latest - command: /usr/sbin/init - pre_build_image: true - cgroupns_mode: host - privileged: true - volumes: - - /sys/fs/cgroup:/sys/fs/cgroup:rw - - /var/lib/containerd - -provisioner: - name: ansible - -lint: | - ansible-lint --exclude molecule/default/ - -scenario: - name: default - create_sequence: - - dependency - - create - - prepare - check_sequence: - - dependency - - cleanup - - destroy - - create - - prepare - - converge - - check - - destroy - converge_sequence: - - dependency - - create - - prepare - - converge - destroy_sequence: - - dependency - - cleanup - - destroy - test_sequence: - # - lint - # - dependency - # - cleanup - - destroy - - syntax - - create - # - prepare - - converge - - verify - - idempotence - # - side_effect - # - cleanup - - destroy - -verifier: - name: ansible diff --git a/roles/dependencies/molecule/default/verify.yml b/roles/dependencies/molecule/default/verify.yml deleted file mode 100644 index 0e486c2907906f8064418c03c2883e960009c734..0000000000000000000000000000000000000000 --- a/roles/dependencies/molecule/default/verify.yml +++ /dev/null @@ -1,117 +0,0 @@ ---- - -- name: VERIFY | Test role for debugging variables - hosts: all - vars: - package_name_docker: 'docker' - package_name_docker_ce: 'docker-ce' - package_name_docker_compose: 'docker-compose' - package_name_docker_compose_plugin: 'docker-compose-plugin' - - pre_tasks: - - name: MOLECULE | VERIFY | PRE-TASKS | VARIABLES | From -> ../../defaults - ansible.builtin.include_vars: - dir: ../../defaults - depth: 1 - extensions: - - 'yml' - - - name: MOLECULE | VERIFY | PRE-TASKS | VARIABLES | From -> ../../vars - ansible.builtin.include_vars: - dir: ../../vars - depth: 1 - extensions: - - 'yml' - - - name: MOLECULE | VERIFY | PRE-TASKS | VARIABLES | From -> ../../../../inventories/group_vars - ansible.builtin.include_vars: - dir: ../../../../inventories/group_vars - extensions: - - 'yml' - - - name: MOLECULE | VERIFY | PRE-TASKS | VARIABLES | From -> ../../../../inventories/host_vars - ansible.builtin.include_vars: - dir: ../../../../inventories/host_vars - extensions: - - 'yml' - - tasks: - ### - ### POPULATE - ### - - name: MOLECULE | VERIFY | POPULATE | Gather the package facts - ansible.builtin.package_facts: - manager: auto - - # - name: MOLECULE | VERIFY | POPULATE | Gather service facts - # ansible.builtin.service_facts: - - ### - ### TESTS - PACKAGES - ### - - name: MOLECULE | VERIFY | TEST | Check that the packages from 'os_dependencies_packages' are installed. - ansible.builtin.debug: - msg: "Package: '{{ package_name }}' is installed" - loop: "{{ os_dependencies_packages }}" - loop_control: - loop_var: package_name - failed_when: package_name not in ansible_facts.packages - - - name: MOLECULE | VERIFY | TEST | Check that docker is installed. - ansible.builtin.debug: - msg: "Package: 'docker' is installed" - failed_when: - - package_name_docker not in ansible_facts.packages - - package_name_docker_ce not in ansible_facts.packages - - - name: MOLECULE | VERIFY | TEST | Check that docker-compose is installed. - ansible.builtin.debug: - msg: "Package: 'docker-cokmpose' is installed" - failed_when: - - package_name_docker_compose not in ansible_facts.packages - - package_name_docker_compose_plugin not in ansible_facts.packages - - ### - ### TESTS - DOCKER - ### - - name: MOLECULE | VERIFY | TEST | Get docker service state. - ansible.builtin.systemd: - name: "docker" - register: docker_service - - - name: MOLECULE | VERIFY | TEST | Check that docker is running. - ansible.builtin.debug: - msg: "Docker IS running..." - failed_when: "'active' != docker_service.status.ActiveState" - - ### - ### TESTS - ADDED USERS - ### - - name: MOLECULE | VERIFY | TEST | Get added users infos. - ansible.builtin.user: - name: "{{ item }}" - loop: "{{ docker_users }}" - check_mode: true - register: test_users - - - name: MOLECULE | VERIFY | TEST | Check if users exists - ansible.builtin.debug: - msg: "User {{ item.item }} {{ 'exists' if item.state | d('') == 'present' else 'does not exist' }}" - loop: "{{ test_users.results }}" - loop_control: - label: "{{ item.item }}" - - - name: MOLECULE | VERIFY | TEST | Get the groups that the users belongs to. - ansible.builtin.command: - cmd: "id -Gn {{ item.item }}" - loop: "{{ test_users.results }}" - loop_control: - label: "{{ item.item }}" - register: user_groups - changed_when: false - - - name: MOLECULE | VERIFY | TEST | Check that the users are at the 'docker' group. - ansible.builtin.debug: - msg: "User '{{ item.item.item }}' belongs to the docker group" - with_items: "{{ user_groups.results }}" - failed_when: "'docker' not in item.stdout" diff --git a/roles/dependencies/tasks/docker/install_compose.yml b/roles/dependencies/tasks/docker/install_compose.yml deleted file mode 100644 index 8c353a4d865dd5750b28aa3db478e60e277ef63e..0000000000000000000000000000000000000000 --- a/roles/dependencies/tasks/docker/install_compose.yml +++ /dev/null @@ -1,32 +0,0 @@ ---- -- name: DOCKER | COMPOSE | Check current docker-compose version. - ansible.builtin.command: "{{ docker_compose_path }} --version" - register: docker_compose_vsn - check_mode: false - changed_when: false - failed_when: false - -- name: Setting the docker compose version - ansible.builtin.set_fact: - docker_compose_current_version: "{{ docker_compose_vsn.stdout | regex_search('(\\d+(\\.\\d+)+)') }}" - when: > - docker_compose_vsn.stdout is defined - and (docker_compose_vsn.stdout | length > 0) - -- name: DOCKER | COMPOSE | Delete existing docker-compose version if it's different. - ansible.builtin.file: - path: "{{ docker_compose_path }}" - state: absent - when: > - docker_compose_current_version is defined - and (docker_compose_version | regex_replace('v', '')) not in docker_compose_current_version - -- name: DOCKER | COMPOSE | Install Docker Compose (if configured). - ansible.builtin.get_url: - url: "{{ docker_compose_url }}" - dest: "{{ docker_compose_path }}" - mode: "0755" - when: > - (docker_compose_current_version is not defined) - or (docker_compose_current_version | length == 0) - or (docker_compose_current_version is version((docker_compose_version | regex_replace('v', '')), '<')) diff --git a/roles/dependencies/tasks/docker/install_docker_users.yml b/roles/dependencies/tasks/docker/install_docker_users.yml deleted file mode 100644 index 2f78a6582af901806d5d261c6ddfaf7946f1a692..0000000000000000000000000000000000000000 --- a/roles/dependencies/tasks/docker/install_docker_users.yml +++ /dev/null @@ -1,12 +0,0 @@ ---- - -- name: DOCKER | USERS | Ensure docker users are added to the docker group. - ansible.builtin.user: - name: "{{ item }}" - groups: docker - append: true - with_items: "{{ docker_users }}" - become: true - -- name: DOCKER | USERS | Reset ssh connection to apply user changes. - ansible.builtin.meta: reset_connection diff --git a/roles/dependencies/tasks/docker/setup-Debian.yml b/roles/dependencies/tasks/docker/setup-Debian.yml deleted file mode 100644 index 883545067c7e3ce29a404bec1164b623f26bb8ac..0000000000000000000000000000000000000000 --- a/roles/dependencies/tasks/docker/setup-Debian.yml +++ /dev/null @@ -1,74 +0,0 @@ ---- -- name: DOCKER | DEBIAN | Ensure apt key is not present in trusted.gpg.d - ansible.builtin.file: - path: /etc/apt/trusted.gpg.d/docker.asc - state: absent - -- name: DOCKER | DEBIAN | Ensure old apt source list is not present in /etc/apt/sources.list.d - ansible.builtin.file: - path: /etc/apt/sources.list.d/download_docker_com_linux_ubuntu.list - state: absent - -- name: DOCKER | DEBIAN | Ensure the repo referencing the previous trusted.gpg.d key is not present - ansible.builtin.apt_repository: - repo: "deb [arch={{ docker_apt_arch }} signed-by=/etc/apt/trusted.gpg.d/docker.asc] {{ docker_repo_url }}/{{ docker_apt_ansible_distribution | lower }} {{ ansible_distribution_release }} {{ docker_apt_release_channel }}" - state: absent - filename: "{{ docker_apt_filename }}" - update_cache: true - when: docker_add_repo | bool - -# See https://docs.docker.com/engine/install/debian/#uninstall-old-versions -- name: DOCKER | DEBIAN | Ensure old versions of Docker are not installed. - ansible.builtin.package: - name: "{{ docker_obsolete_packages }}" - state: absent - -- name: DOCKER | DEBIAN | Ensure dependencies are installed. - become: true - ansible.builtin.apt: - name: - - apt-transport-https - - ca-certificates - state: present - when: docker_add_repo | bool - -- name: DOCKER | DEBIAN | Ensure directory exists for /etc/apt/keyrings - ansible.builtin.file: - path: /etc/apt/keyrings - state: directory - mode: "0755" - -- name: DOCKER | DEBIAN | Add Docker apt key. - ansible.builtin.get_url: - url: "{{ docker_apt_gpg_key }}" - dest: /etc/apt/keyrings/docker.asc - mode: "0644" - force: false - checksum: "{{ docker_apt_gpg_key_checksum | default(omit) }}" - register: add_repository_key - ignore_errors: "{{ docker_apt_ignore_key_error }}" - when: docker_add_repo | bool - become: true - -- name: DOCKER | DEBIAN | Ensure curl is present (on older systems without SNI). - ansible.builtin.apt: - name: curl - state: present - when: add_repository_key is failed and docker_add_repo | bool - -- name: DOCKER | DEBIAN | Add Docker apt key (alternative for older systems without SNI). - ansible.builtin.shell: > - set -o pipefail && - curl -sSL {{ docker_apt_gpg_key }} | apt-key add - - when: add_repository_key is failed and docker_add_repo | bool - register: ret_add_docker_key - changed_when: ret_add_docker_key.rc != 0 - -- name: DOCKER | DEBIAN | Add Docker repository. - ansible.builtin.apt_repository: - repo: "{{ docker_apt_repository }}" - state: present - filename: "{{ docker_apt_filename }}" - update_cache: true - when: docker_add_repo | bool - become: true diff --git a/roles/dependencies/tasks/docker/setup-RedHat.yml b/roles/dependencies/tasks/docker/setup-RedHat.yml deleted file mode 100644 index 228585f3a44f1d753f36b79bc36463f227a56e2a..0000000000000000000000000000000000000000 --- a/roles/dependencies/tasks/docker/setup-RedHat.yml +++ /dev/null @@ -1,61 +0,0 @@ ---- -- name: DOCKER | RED-HAT | Ensure old versions of Docker are not installed. - ansible.builtin.package: - name: - - docker - - docker-common - - docker-engine - state: absent - -- name: DOCKER | RED-HAT | Add Docker GPG key. - ansible.builtin.rpm_key: - key: "{{ docker_yum_gpg_key }}" - state: present - when: docker_add_repo | bool - -- name: DOCKER | RED-HAT | Add Docker repository. - ansible.builtin.get_url: - url: "{{ docker_yum_repo_url }}" - dest: '/etc/yum.repos.d/docker-{{ docker_edition }}.repo' - owner: root - group: root - mode: "0644" - when: docker_add_repo | bool - -- name: DOCKER | RED-HAT | Configure Docker Nightly repo. - community.general.ini_file: - dest: '/etc/yum.repos.d/docker-{{ docker_edition }}.repo' - section: 'docker-{{ docker_edition }}-nightly' - option: enabled - value: '{{ docker_yum_repo_enable_nightly }}' - mode: "0644" - no_extra_spaces: true - when: docker_add_repo | bool - -- name: DOCKER | RED-HAT | Configure Docker Test repo. - community.general.ini_file: - dest: '/etc/yum.repos.d/docker-{{ docker_edition }}.repo' - section: 'docker-{{ docker_edition }}-test' - option: enabled - value: '{{ docker_yum_repo_enable_test }}' - mode: "0644" - no_extra_spaces: true - when: docker_add_repo | bool - -- name: DOCKER | RED-HAT | Configure containerd on RHEL 8. - when: ansible_distribution_major_version | int == 8 - block: - - name: Ensure runc is not installed. - ansible.builtin.package: - name: runc - state: absent - - - name: Ensure container-selinux is installed. - ansible.builtin.package: - name: container-selinux - state: present - - - name: Ensure containerd.io is installed. - ansible.builtin.package: - name: containerd.io - state: present diff --git a/roles/dependencies/tasks/install_docker.yml b/roles/dependencies/tasks/install_docker.yml deleted file mode 100644 index 745b0461fa72e89c451a6fc605399ad98e6169c2..0000000000000000000000000000000000000000 --- a/roles/dependencies/tasks/install_docker.yml +++ /dev/null @@ -1,112 +0,0 @@ ---- - -- name: DOCKER | Load OS-specific vars. - ansible.builtin.include_vars: "{{ lookup('first_found', params) }}" - vars: - params: - files: - - '{{ ansible_distribution }}.yml' - - '{{ ansible_os_family }}.yml' - - main.yml - paths: - - 'vars' - -- name: DOCKER | Installing for RedHat OS family - ansible.builtin.include_tasks: docker/setup-RedHat.yml - when: ansible_os_family == 'RedHat' - -- name: DOCKER | Installing for Debian OS family - ansible.builtin.include_tasks: docker/setup-Debian.yml - when: ansible_os_family == 'Debian' - -- name: DOCKER | Install Docker packages. - ansible.builtin.package: - name: "{{ docker_packages }}" - state: "{{ docker_packages_state }}" - notify: HANDLER_RESTART_DOCKER - ignore_errors: "{{ ansible_check_mode }}" - when: "ansible_version.full is version_compare('2.12', '<') or ansible_os_family not in ['RedHat', 'Debian']" - become: true - -- name: DOCKER | Install Docker packages (with downgrade option). - ansible.builtin.package: - name: "{{ docker_packages }}" - state: "{{ docker_packages_state }}" - allow_downgrade: true - notify: HANDLER_RESTART_DOCKER - ignore_errors: "{{ ansible_check_mode }}" - when: "ansible_version.full is version_compare('2.12', '>=') and ansible_os_family in ['RedHat', 'Debian']" - become: true - -- name: DOCKER | Install docker-compose plugin. - ansible.builtin.package: - name: "{{ docker_compose_package }}" - state: "{{ docker_compose_package_state }}" - notify: HANDLER_RESTART_DOCKER - ignore_errors: "{{ ansible_check_mode }}" - when: - - docker_install_compose_plugin | bool - - ansible_version.full is version_compare('2.12', '<') or ansible_os_family not in ['RedHat', 'Debian'] - become: true - -- name: DOCKER | Install docker-compose-plugin (with downgrade option). - ansible.builtin.package: - name: "{{ docker_compose_package }}" - state: "{{ docker_compose_package_state }}" - allow_downgrade: true - notify: HANDLER_RESTART_DOCKER - ignore_errors: "{{ ansible_check_mode }}" - when: - - docker_install_compose_plugin | bool - - ansible_version.full is version_compare('2.12', '>=') - - ansible_os_family in ['RedHat', 'Debian'] - become: true - -- name: DOCKER | Ensure /etc/docker/ directory exists. - ansible.builtin.file: - path: /etc/docker - state: directory - mode: "0755" - when: docker_daemon_options.keys() | length > 0 - -- name: DOCKER | Configure Docker daemon options. - ansible.builtin.copy: - content: "{{ docker_daemon_options | to_nice_json }}" - dest: /etc/docker/daemon.json - mode: "0644" - when: docker_daemon_options.keys() | length > 0 - notify: HANDLER_RESTART_DOCKER - -- name: DOCKER | Ensure Docker is started and enabled at boot. - ansible.builtin.service: - name: docker - state: "{{ docker_service_state }}" - enabled: "{{ docker_service_enabled }}" - ignore_errors: "{{ ansible_check_mode }}" - when: docker_service_manage | bool - -- name: DOCKER | Ensure handlers are notified now to avoid firewall conflicts. - ansible.builtin.meta: flush_handlers - -- name: Installing 'docker compose' - ansible.builtin.include_tasks: docker/install_compose.yml - when: docker_install_compose | bool - -- name: DOCKER | Get docker group info using getent. - ansible.builtin.getent: - database: group - key: docker - split: ':' - when: docker_users | length > 0 - -- name: DOCKER | Check if there are any users to add to the docker group. - ansible.builtin.set_fact: - at_least_one_user_to_modify: true - when: - - docker_users | length > 0 - - item not in ansible_facts.getent_group["docker"][2] - with_items: "{{ docker_users }}" - -- name: DOCKER | Adding users to the docker group - ansible.builtin.include_tasks: docker/install_docker_users.yml - when: at_least_one_user_to_modify is defined diff --git a/roles/dependencies/tasks/install_packages.yml b/roles/dependencies/tasks/install_packages.yml deleted file mode 100644 index 5e7390fa9b05ece0ee0d9cb4791c48030ce6197d..0000000000000000000000000000000000000000 --- a/roles/dependencies/tasks/install_packages.yml +++ /dev/null @@ -1,11 +0,0 @@ ---- - -- name: INSTALL_PACKAGES | Installing the packages from list - ansible.builtin.package: - name: "{{ package_name }}" - state: present - update_cache: true - loop: "{{ os_dependencies_packages }}" - loop_control: - loop_var: package_name - become: true diff --git a/roles/dependencies/tasks/main.yml b/roles/dependencies/tasks/main.yml deleted file mode 100644 index 25bbb59e00dd938ff5ecd1a57d65e39cd97e2f2b..0000000000000000000000000000000000000000 --- a/roles/dependencies/tasks/main.yml +++ /dev/null @@ -1,21 +0,0 @@ ---- -# tasks file for dependencies - -- name: Importing the 'install_packages.yml' tasks - ansible.builtin.import_tasks: install_packages.yml - -- name: Get docker service state. - ansible.builtin.systemd: - name: "docker" - register: docker_service - -- name: Set fact if docker already installed and active. - ansible.builtin.set_fact: - docker_installed: true - when: - - docker_service is defined - - "'active' == docker_service.status.ActiveState" - -- name: Importing the 'install_docker.yml' tasks if docker not installed. - ansible.builtin.import_tasks: install_docker.yml - when: docker_installed | bool is false diff --git a/roles/dependencies/vars/Alpine.yml b/roles/dependencies/vars/Alpine.yml deleted file mode 100755 index b81917a45af1b332b9d6a11511234aa0fd54c88b..0000000000000000000000000000000000000000 --- a/roles/dependencies/vars/Alpine.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -docker_packages: "docker" diff --git a/roles/dependencies/vars/Archlinux.yml b/roles/dependencies/vars/Archlinux.yml deleted file mode 100644 index f68d962a7f3dd95c3d28fa64710251025b813a8f..0000000000000000000000000000000000000000 --- a/roles/dependencies/vars/Archlinux.yml +++ /dev/null @@ -1,3 +0,0 @@ ---- -docker_packages: "docker" -docker_compose_package: docker-compose diff --git a/roles/dependencies/vars/main.yml b/roles/dependencies/vars/main.yml deleted file mode 100755 index 805232bfe70d4a3f0d907113245ae54dfa1ba5a9..0000000000000000000000000000000000000000 --- a/roles/dependencies/vars/main.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -# Empty file