From 8238e2c27c4062b8a98cb75b7b3a50ef87fb3832 Mon Sep 17 00:00:00 2001 From: fejao <mail@fejao.de> Date: Wed, 12 Feb 2025 17:35:13 +0000 Subject: [PATCH] Adding role clone repositories submodule --- .gitlab-ci.yml | 4 +- .gitmodules | 3 + ci-cd/playbooks/03_clone_repositories.yml | 3 +- ci-cd/templates/all-roles-b4-merge.yml | 2 +- ...nfodesk-deployment-role-clone-repositories | 1 + roles/c3infodesk-deployment-role-dependencies | 2 +- roles/clone_repositories/README.md | 126 ---------------- roles/clone_repositories/defaults/main.yml | 14 -- roles/clone_repositories/meta/main.yml | 16 --- roles/clone_repositories/molecule/README.md | 42 ------ .../molecule/default/converge.yml | 35 ----- .../molecule/default/molecule.yml | 68 --------- .../molecule/default/verify.yml | 134 ------------------ roles/clone_repositories/tasks/main.yml | 10 -- roles/clone_repositories/tasks/printer.yml | 37 ----- 15 files changed, 10 insertions(+), 487 deletions(-) create mode 160000 roles/c3infodesk-deployment-role-clone-repositories delete mode 100644 roles/clone_repositories/README.md delete mode 100644 roles/clone_repositories/defaults/main.yml delete mode 100644 roles/clone_repositories/meta/main.yml delete mode 100644 roles/clone_repositories/molecule/README.md delete mode 100644 roles/clone_repositories/molecule/default/converge.yml delete mode 100644 roles/clone_repositories/molecule/default/molecule.yml delete mode 100644 roles/clone_repositories/molecule/default/verify.yml delete mode 100644 roles/clone_repositories/tasks/main.yml delete mode 100644 roles/clone_repositories/tasks/printer.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a4403ad..c4e7fd9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -63,8 +63,8 @@ include: ### BEFORE MREGE REQUEST - local: ci-cd/templates/all-roles-b4-merge.yml rules: - # - if: $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "master" - - if: $CI_COMMIT_REF_NAME == "main" + - if: $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "main" + # - if: $CI_COMMIT_REF_NAME == "main" #### # rules: # ### WORKS diff --git a/.gitmodules b/.gitmodules index d76bb98..009d026 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,3 +4,6 @@ [submodule "roles/c3infodesk-deployment-role-dependencies"] path = roles/c3infodesk-deployment-role-dependencies url = git@git.cccv.de:fejao/c3infodesk-deployment-role-dependencies.git +[submodule "roles/c3infodesk-deployment-role-clone-repositories"] + path = roles/c3infodesk-deployment-role-clone-repositories + url = git@git.cccv.de:fejao/c3infodesk-deployment-role-clone-repositories.git diff --git a/ci-cd/playbooks/03_clone_repositories.yml b/ci-cd/playbooks/03_clone_repositories.yml index 49d7171..8ff5c8a 100644 --- a/ci-cd/playbooks/03_clone_repositories.yml +++ b/ci-cd/playbooks/03_clone_repositories.yml @@ -5,4 +5,5 @@ hosts: - example_servers_group roles: - - roles/clone_repositories + # - roles/clone_repositories + - roles/c3infodesk-deployment-role-clone-repositories diff --git a/ci-cd/templates/all-roles-b4-merge.yml b/ci-cd/templates/all-roles-b4-merge.yml index 8776af7..8539a42 100644 --- a/ci-cd/templates/all-roles-b4-merge.yml +++ b/ci-cd/templates/all-roles-b4-merge.yml @@ -12,7 +12,7 @@ variables: include: - local: ci-cd/templates/role-test.yml - local: ci-cd/templates/role-dependencies.yml - # - local: ci-cd/templates/role-clone-repositories.yml + - local: ci-cd/templates/role-clone-repositories.yml # - local: ci-cd/templates/role-docker-images.yml # - local: ci-cd/templates/role-docker-containers.yml # - local: ci-cd/templates/role-oh-my-bash.yml diff --git a/roles/c3infodesk-deployment-role-clone-repositories b/roles/c3infodesk-deployment-role-clone-repositories new file mode 160000 index 0000000..78e237c --- /dev/null +++ b/roles/c3infodesk-deployment-role-clone-repositories @@ -0,0 +1 @@ +Subproject commit 78e237cf0cde7aa64ea21f4a17d4964bfbf57433 diff --git a/roles/c3infodesk-deployment-role-dependencies b/roles/c3infodesk-deployment-role-dependencies index 0c1e74b..a2ed974 160000 --- a/roles/c3infodesk-deployment-role-dependencies +++ b/roles/c3infodesk-deployment-role-dependencies @@ -1 +1 @@ -Subproject commit 0c1e74bbb71bce7827c0a4b9dd713fc24c12d61e +Subproject commit a2ed9743b99077c3093b982db76bb69ecff8cd07 diff --git a/roles/clone_repositories/README.md b/roles/clone_repositories/README.md deleted file mode 100644 index 358087b..0000000 --- a/roles/clone_repositories/README.md +++ /dev/null @@ -1,126 +0,0 @@ -# clone_repositories role - -This ansible-role for dealing with cloning the repositories necessary for deploying the system used from **c3infodesk**. - -## 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. - - **c3infodesk_printer_repo_new_branch_name**: DEFAULT="test_branch" - - The branch name that it will be checked-out for avoiding updating the **main** branch - -- ### From: inventories/group_vars/<TARGET_GROUP> - - **c3infodesk_printer_folder**: DEFAULT="Coding/c3infodesk-printer" - - The folder where to clone the repositories - -- ### From: roles/clone-repositories/defaults/main.yml - - **c3infodesk_printer_repo_clone**: DEFAULT=true - - If it should or not clone the repository. - - **c3infodesk_printer_repo_url**: DEFAULT="https://git.cccv.de/fejao/c3infodesk-printer.git" - - The repository to be cloned. - - **c3infodesk_printer_repo_new_branch_name**: DEFAULT="new_branch_name" - - The branch name to be set after cloning the repository. - - -## Dependencies -The role dependencies are: - - [dependencies(role)](roles/dependencies/README.md) - - -## Example Playbook - -- ### Using the provided example - For using the example playbook **[playbooks/examples/example_03_clone_repositories.yml](https://git.cccv.de/fejao/c3infodesk-deployment/-/blob/main/playbooks/examples/example_03_clone_repositories.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_03_clone_repositories.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/clone_repositories - ``` - - 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/clone_repositories/defaults/main.yml b/roles/clone_repositories/defaults/main.yml deleted file mode 100644 index d4b58de..0000000 --- a/roles/clone_repositories/defaults/main.yml +++ /dev/null @@ -1,14 +0,0 @@ ---- -# defaults file for clone-repository - -### -### SET ON inventories/group_vars !!! DON'T CHANGE THIS HERE !!! -### -# c3infodesk_printer_folder - -### -### LOCAL -### -c3infodesk_printer_repo_clone: true -c3infodesk_printer_repo_url: "https://git.cccv.de/fejao/c3infodesk-printer.git" -c3infodesk_printer_repo_new_branch_name: "new_branch_name" diff --git a/roles/clone_repositories/meta/main.yml b/roles/clone_repositories/meta/main.yml deleted file mode 100644 index 5d54698..0000000 --- a/roles/clone_repositories/meta/main.yml +++ /dev/null @@ -1,16 +0,0 @@ ---- - -galaxy_info: - role_name: clone_repositories - description: Role to clone the repositories used from c3InfoDesk sytems - author: fejao - company: cccv.de - license: "MIT / BSD" - min_ansible_version: '2.10' - galaxy_tags: [] - -# dependencies: [] - # List your role dependencies here, one per line. Be sure to remove the '[]' above, - # if you add dependencies to this list. -dependencies: - - role: dependencies diff --git a/roles/clone_repositories/molecule/README.md b/roles/clone_repositories/molecule/README.md deleted file mode 100644 index d3a37f1..0000000 --- a/roles/clone_repositories/molecule/README.md +++ /dev/null @@ -1,42 +0,0 @@ -## ansible molecule tests for role: clone_repositories - - - -## 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/clone_repositories/molecule/default/converge.yml b/roles/clone_repositories/molecule/default/converge.yml deleted file mode 100644 index 00147c2..0000000 --- a/roles/clone_repositories/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 | VERIFY | PRE-TASKS | VARIABLES | From -> ../../../../roles/dependencies/defaults - ansible.builtin.include_vars: - dir: ../../../../roles/dependencies/defaults - 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 'clone_repositories' role. - ansible.builtin.include_role: - name: clone_repositories diff --git a/roles/clone_repositories/molecule/default/molecule.yml b/roles/clone_repositories/molecule/default/molecule.yml deleted file mode 100644 index 3e6bd7e..0000000 --- a/roles/clone_repositories/molecule/default/molecule.yml +++ /dev/null @@ -1,68 +0,0 @@ ---- - -dependency: - name: galaxy - -driver: - name: docker - -platforms: - - name: molecule_clone_repositories - ### 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/clone_repositories/molecule/default/verify.yml b/roles/clone_repositories/molecule/default/verify.yml deleted file mode 100644 index 96e66b7..0000000 --- a/roles/clone_repositories/molecule/default/verify.yml +++ /dev/null @@ -1,134 +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 -> ../../../../roles/dependencies/defaults - ansible.builtin.include_vars: - dir: ../../../../roles/dependencies/defaults - 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" - - ### - ### TESTS - CLONE REPOSITORY - PRINTER - ### - - name: MOLECULE | VERIFY | TEST | Get if the repository was cloned. - ansible.builtin.git: - repo: "{{ c3infodesk_printer_repo_url }}" - dest: "{{ c3infodesk_printer_folder }}" - version: main - clone: false - update: false - register: check_repository - - - name: MOLECULE | VERIFY | TEST | Checking if the repository was cloned. - ansible.builtin.debug: - msg: "Repository: '{{ c3infodesk_printer_repo_url }}' cloned..." - failed_when: check_repository.changed | bool diff --git a/roles/clone_repositories/tasks/main.yml b/roles/clone_repositories/tasks/main.yml deleted file mode 100644 index d7dbff4..0000000 --- a/roles/clone_repositories/tasks/main.yml +++ /dev/null @@ -1,10 +0,0 @@ ---- -# tasks file for clone-repository - -- name: Clone the printer repository - ansible.builtin.import_tasks: printer.yml - when: c3infodesk_printer_repo_clone | bool - -# - name: Clone the questions repository -# ansible.builtin.import_tasks: questions.yml -# when: repo_c3infodesk_clone_questions | bool diff --git a/roles/clone_repositories/tasks/printer.yml b/roles/clone_repositories/tasks/printer.yml deleted file mode 100644 index ff56ad4..0000000 --- a/roles/clone_repositories/tasks/printer.yml +++ /dev/null @@ -1,37 +0,0 @@ ---- -# tasks file for clone-repository from c3infodesk printer - -- name: PRINTER | Checking if the repository already exists - ansible.builtin.git: - repo: "{{ c3infodesk_printer_repo_url }}" - dest: "{{ c3infodesk_printer_folder }}" - version: main - clone: false - update: false - register: check_repository - -- name: PRINTER | Check repository exists answer - ansible.builtin.debug: - msg: "Repository already exists on target" - when: not check_repository.changed - -- name: PRINTER | Clone the printer repository - ansible.builtin.git: - repo: "{{ c3infodesk_printer_repo_url }}" - dest: "{{ c3infodesk_printer_folder }}" - version: main - depth: 1 - when: - - check_repository.before is defined - - check_repository.before == None - -- name: PRINTER | Creates and changes to new branch on cloned repository - ansible.builtin.command: - cmd: "git checkout -b '{{ c3infodesk_printer_repo_new_branch_name }}'" - args: - chdir: "{{ c3infodesk_printer_folder }}" - when: - - check_repository.before is defined - - check_repository.before == None - register: ret_change_branch - changed_when: ret_change_branch.rc != 0 -- GitLab