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
-![fejao logo](../../files/from_authors/fejao_logo_circle.png "fejao") [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