From 3dd43752550e5ec1154a6442325cce764cdea22a Mon Sep 17 00:00:00 2001
From: fejao <mail@fejao.de>
Date: Mon, 27 Jan 2025 16:59:54 +0100
Subject: [PATCH 1/6] Fixed ansible-lint for role test

---
 .ansible-lint                | 132 +++++++++++++++++++++++++++++++++++
 .yamllint                    |  49 +++++++++++++
 playbook_example_01_test.yml |   7 +-
 roles/test/tasks/main.yml    |   1 +
 4 files changed, 186 insertions(+), 3 deletions(-)
 create mode 100644 .ansible-lint
 create mode 100644 .yamllint

diff --git a/.ansible-lint b/.ansible-lint
new file mode 100644
index 0000000..34214a6
--- /dev/null
+++ b/.ansible-lint
@@ -0,0 +1,132 @@
+---
+# .ansible-lint
+
+profile: null # min, basic, moderate,safety, shared, production
+
+# Allows dumping of results in SARIF format
+# sarif_file: result.sarif
+
+# exclude_paths included in this file are parsed relative to this file's location
+# and not relative to the CWD of execution. CLI arguments passed to the --exclude
+# option are parsed relative to the CWD of execution.
+exclude_paths:
+  - .cache/ # implicit unless exclude_paths is defined in config
+  - test/fixtures/formatting-before/
+  - test/fixtures/formatting-prettier/
+# parseable: true
+# quiet: true
+# strict: true
+# verbosity: 1
+
+# Mock modules or roles in order to pass ansible-playbook --syntax-check
+mock_modules:
+  - zuul_return
+  # note the foo.bar is invalid as being neither a module or a collection
+  - fake_namespace.fake_collection.fake_module
+  - fake_namespace.fake_collection.fake_module.fake_submodule
+mock_roles:
+  - mocked_role
+  - author.role_name # old standalone galaxy role
+  - fake_namespace.fake_collection.fake_role # role within a collection
+
+# Enable checking of loop variable prefixes in roles
+loop_var_prefix: "^(__|{role}_)"
+
+# Enforce variable names to follow pattern below, in addition to Ansible own
+# requirements, like avoiding python identifiers. To disable add `var-naming`
+# to skip_list.
+var_naming_pattern: "^[a-z_][a-z0-9_]*$"
+###
+# var-naming: false
+
+use_default_rules: true
+# Load custom rules from this specific folder
+# rulesdir:
+#   - ./rule/directory/
+
+# Ansible-lint is able to recognize and load skip rules stored inside
+# `.ansible-lint-ignore` (or `.config/ansible-lint-ignore.txt`) files.
+# To skip a rule just enter filename and tag, like "playbook.yml package-latest"
+# on a new line.
+# Optionally you can add comments after the tag, prefixed by "#". We discourage
+# the use of skip_list below because that will hide violations from the output.
+# When putting ignores inside the ignore file, they are marked as ignored, but
+# still visible, making it easier to address later.
+skip_list:
+  - skip_this_tag
+  - var-naming[no-role-prefix]
+
+# Ansible-lint does not automatically load rules that have the 'opt-in' tag.
+# You must enable opt-in rules by listing each rule 'id' below.
+enable_list:
+  - args
+  - empty-string-compare # opt-in
+  - no-log-password # opt-in
+  - no-same-owner # opt-in
+  - name[prefix] # opt-in
+  - galaxy-version-incorrect # opt-in
+  # add yaml here if you want to avoid ignoring yaml checks when yamllint
+  # library is missing. Normally its absence just skips using that rule.
+  - yaml
+# Report only a subset of tags and fully ignore any others
+# tags:
+#   - jinja[spacing]
+
+# Ansible-lint does not fail on warnings from the rules or tags listed below
+warn_list:
+  - skip_this_tag
+  - experimental # experimental is included in the implicit list
+  # - role-name
+  # - yaml[document-start]  # you can also use sub-rule matches
+
+# Some rules can transform files to fix (or make it easier to fix) identified
+# errors. `ansible-lint --fix` will reformat YAML files and run these transforms.
+# By default it will run all transforms (effectively `write_list: ["all"]`).
+# You can disable running transforms by setting `write_list: ["none"]`.
+# Or only enable a subset of rule transforms by listing rules/tags here.
+# write_list:
+#   - all
+
+# Offline mode disables installation of requirements.yml and schema refreshing
+offline: true
+
+# Define required Ansible's variables to satisfy syntax check
+extra_vars:
+  foo: bar
+  multiline_string_variable: |
+    line1
+    line2
+  complex_variable: ":{;\t$()"
+
+# Uncomment to enforce action validation with tasks, usually is not
+# needed as Ansible syntax check also covers it.
+# skip_action_validation: false
+
+# List of additional kind:pattern to be added at the top of the default
+# match list, first match determines the file kind.
+kinds:
+  # - playbook: "**/examples/*.{yml,yaml}"
+  # - galaxy: "**/folder/galaxy.yml"
+  # - tasks: "**/tasks/*.yml"
+  # - vars: "**/vars/*.yml"
+  # - meta: "**/meta/main.yml"
+  - yaml: "**/*.yaml-too"
+
+# List of additional collections to allow in only-builtins rule.
+# only_builtins_allow_collections:
+#   - example_ns.example_collection
+
+# List of additions modules to allow in only-builtins rule.
+# only_builtins_allow_modules:
+#   - example_module
+
+# Allow setting custom prefix for name[prefix] rule
+task_name_prefix: "{stem} | "
+# Complexity related settings
+
+# Limit the depth of the nested blocks:
+# max_block_depth: 20
+
+# Also recognize these versions of Ansible as supported:
+# supported_ansible_also:
+#   - "2.18"
\ No newline at end of file
diff --git a/.yamllint b/.yamllint
new file mode 100644
index 0000000..b786aa3
--- /dev/null
+++ b/.yamllint
@@ -0,0 +1,49 @@
+---
+
+# https://ansible.readthedocs.io/projects/lint/rules/yaml/
+
+yaml-files:
+  - '*.yaml'
+  - '*.yml'
+  - '.yamllint'
+
+rules:
+  anchors: enable
+  # braces: enable
+  # braces: disable
+  braces:
+    max-spaces-inside: 1
+  brackets: enable
+  colons: enable
+  commas: enable
+  comments:
+    level: warning
+    min-spaces-from-content: 1
+  comments-indentation: false
+  document-end: disable
+  document-start:
+    level: warning
+  empty-lines: enable
+  empty-values: disable
+  float-values: disable
+  hyphens: enable
+  # indentation: enable
+  indentation: disable
+  key-duplicates: enable
+  key-ordering: disable
+  # line-length: enable
+  line-length:
+    # max: 160
+    max: 320
+  new-line-at-end-of-file: enable
+  new-lines: enable
+  # octal-values: disable
+  quoted-strings: disable
+  trailing-spaces: enable
+  truthy:
+    level: warning
+  ####
+  # var_naming_pattern: "^[a-z_][a-z0-9_]*$"
+  # var-naming: disable
+  # var-naming:
+  #   no-role-prefix: disable
diff --git a/playbook_example_01_test.yml b/playbook_example_01_test.yml
index be558c9..da345d6 100644
--- a/playbook_example_01_test.yml
+++ b/playbook_example_01_test.yml
@@ -1,7 +1,8 @@
 ---
-# Runs example for
+# Runs the role test
 
-- hosts:
-  - example_servers_group
+- name: Playbook for running the role 'test'
+  hosts:
+    - example_servers_group
   roles:
     - test
diff --git a/roles/test/tasks/main.yml b/roles/test/tasks/main.yml
index 6e81d9c..231332e 100644
--- a/roles/test/tasks/main.yml
+++ b/roles/test/tasks/main.yml
@@ -27,6 +27,7 @@
   ansible.builtin.command:
     cmd: ls -hal /
   register: ret_list_folder
+  changed_when: ret_list_folder.rc != 0
 
 - name: Shows output from listing folder
   ansible.builtin.debug:
-- 
GitLab


From 875b69cf51cabb0af2910fe2c0337159583625d5 Mon Sep 17 00:00:00 2001
From: fejao <mail@fejao.de>
Date: Mon, 27 Jan 2025 19:55:43 +0100
Subject: [PATCH 2/6] Fixed lint from 'dependencies' role

---
 .ansible-lint                                 | 14 +--
 .yamllint                                     |  3 +-
 playbook_example_02_dependencies.yml          |  5 +-
 roles/clone_repositories/meta/main.yml        |  2 +-
 roles/dependencies/defaults/main.yml          |  2 +-
 roles/dependencies/handlers/main.yml          | 10 +-
 roles/dependencies/meta/main.yml              |  6 +-
 .../tasks/docker/install_compose.yml          | 11 ++-
 .../tasks/docker/install_docker_users.yml     |  5 +-
 .../tasks/docker/setup-Debian.yml             | 19 ++--
 .../tasks/docker/setup-RedHat.yml             | 94 +++++++++----------
 roles/dependencies/tasks/install_docker.yml   | 63 +++++++------
 roles/dependencies/tasks/install_packages.yml | 10 +-
 roles/dependencies/tasks/main.yml             |  7 +-
 roles/docker_containers/meta/main.yml         |  2 +-
 roles/docker_images/meta/main.yml             |  2 +-
 16 files changed, 139 insertions(+), 116 deletions(-)

diff --git a/.ansible-lint b/.ansible-lint
index 34214a6..c381cc1 100644
--- a/.ansible-lint
+++ b/.ansible-lint
@@ -30,14 +30,13 @@ mock_roles:
   - fake_namespace.fake_collection.fake_role # role within a collection
 
 # Enable checking of loop variable prefixes in roles
-loop_var_prefix: "^(__|{role}_)"
+# loop_var_prefix: "^(__|{role}_)"
+loop_var_prefix: "^[a-z_][a-z0-9_]*$"
 
 # Enforce variable names to follow pattern below, in addition to Ansible own
 # requirements, like avoiding python identifiers. To disable add `var-naming`
 # to skip_list.
 var_naming_pattern: "^[a-z_][a-z0-9_]*$"
-###
-# var-naming: false
 
 use_default_rules: true
 # Load custom rules from this specific folder
@@ -55,6 +54,9 @@ use_default_rules: true
 skip_list:
   - skip_this_tag
   - var-naming[no-role-prefix]
+  - loop-var-prefix[missing]
+  ### Sometimes, it is need to run as command...
+  - command-instead-of-module
 
 # Ansible-lint does not automatically load rules that have the 'opt-in' tag.
 # You must enable opt-in rules by listing each rule 'id' below.
@@ -63,7 +65,7 @@ enable_list:
   - empty-string-compare # opt-in
   - no-log-password # opt-in
   - no-same-owner # opt-in
-  - name[prefix] # opt-in
+  # - name[prefix] # opt-in
   - galaxy-version-incorrect # opt-in
   # add yaml here if you want to avoid ignoring yaml checks when yamllint
   # library is missing. Normally its absence just skips using that rule.
@@ -75,7 +77,7 @@ enable_list:
 # Ansible-lint does not fail on warnings from the rules or tags listed below
 warn_list:
   - skip_this_tag
-  - experimental # experimental is included in the implicit list
+  # - experimental # experimental is included in the implicit list
   # - role-name
   # - yaml[document-start]  # you can also use sub-rule matches
 
@@ -121,7 +123,7 @@ kinds:
 #   - example_module
 
 # Allow setting custom prefix for name[prefix] rule
-task_name_prefix: "{stem} | "
+# task_name_prefix: "{stem} | "
 # Complexity related settings
 
 # Limit the depth of the nested blocks:
diff --git a/.yamllint b/.yamllint
index b786aa3..2382bed 100644
--- a/.yamllint
+++ b/.yamllint
@@ -34,7 +34,8 @@ rules:
   # line-length: enable
   line-length:
     # max: 160
-    max: 320
+    ### roles/dependencies/defaults/main.yml:72 --> 232 characters
+    max: 240
   new-line-at-end-of-file: enable
   new-lines: enable
   # octal-values: disable
diff --git a/playbook_example_02_dependencies.yml b/playbook_example_02_dependencies.yml
index 3e456c1..d9c9808 100644
--- a/playbook_example_02_dependencies.yml
+++ b/playbook_example_02_dependencies.yml
@@ -1,7 +1,8 @@
 ---
 # Runs example for
 
-- hosts:
-  - example_servers_group
+- name: Playbook for running the role 'dependencies'
+  hosts:
+    - example_servers_group
   roles:
     - dependencies
diff --git a/roles/clone_repositories/meta/main.yml b/roles/clone_repositories/meta/main.yml
index 6de0edd..a566122 100644
--- a/roles/clone_repositories/meta/main.yml
+++ b/roles/clone_repositories/meta/main.yml
@@ -3,7 +3,7 @@ galaxy_info:
   description: Role to clone the repositories used from c3InfoDesk sytems
   author: fejao
   company: cccv.de
-  license: license (GPL-2.0-or-later, MIT, etc)
+  license: MIT
   min_ansible_version: 2.10
   galaxy_tags: []
 
diff --git a/roles/dependencies/defaults/main.yml b/roles/dependencies/defaults/main.yml
index 5616e16..8513b66 100644
--- a/roles/dependencies/defaults/main.yml
+++ b/roles/dependencies/defaults/main.yml
@@ -76,7 +76,7 @@ docker_apt_gpg_key_checksum: "sha256:1500c1f56fa9e26b9b8f42452a553675796ade0807c
 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_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"
diff --git a/roles/dependencies/handlers/main.yml b/roles/dependencies/handlers/main.yml
index 7eee98a..d8fd57c 100644
--- a/roles/dependencies/handlers/main.yml
+++ b/roles/dependencies/handlers/main.yml
@@ -1,14 +1,10 @@
 ---
 # handlers file for dependencies
 
-- name: handler_restart_docker
+- name: HANDLER_RESTART_DOCKER
   ansible.builtin.systemd_service:
     name: docker
     state: restarted
-    # daemon_reload: true
-  ###
-  ### THIS IS GETTING TIMEOUT
-  ###
-  # ignore_errors: "{{ ansible_check_mode }}"
-  ignore_errors: true
+    daemon_reload: true
   when: docker_service_manage | bool
+  become: true
diff --git a/roles/dependencies/meta/main.yml b/roles/dependencies/meta/main.yml
index 1fbb987..69e69d0 100644
--- a/roles/dependencies/meta/main.yml
+++ b/roles/dependencies/meta/main.yml
@@ -1,10 +1,12 @@
+---
+
 galaxy_info:
   role_name: dependencies
   description: Role to install the dependencies from the c3InfoDesk sytems
   author: fejao
   company: cccv.de
-  license: license (GPL-2.0-or-later, MIT, etc)
-  min_ansible_version: 2.10
+  license: MIT
+  min_ansible_version: '2.10'
   galaxy_tags: []
 
 dependencies: []
diff --git a/roles/dependencies/tasks/docker/install_compose.yml b/roles/dependencies/tasks/docker/install_compose.yml
index 38705d0..8c353a4 100644
--- a/roles/dependencies/tasks/docker/install_compose.yml
+++ b/roles/dependencies/tasks/docker/install_compose.yml
@@ -1,19 +1,20 @@
 ---
 - name: DOCKER | COMPOSE | Check current docker-compose version.
-  command: "{{ docker_compose_path }} --version"
+  ansible.builtin.command: "{{ docker_compose_path }} --version"
   register: docker_compose_vsn
   check_mode: false
   changed_when: false
   failed_when: false
 
-- set_fact:
+- 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.
-  file:
+  ansible.builtin.file:
     path: "{{ docker_compose_path }}"
     state: absent
   when: >
@@ -21,10 +22,10 @@
     and (docker_compose_version | regex_replace('v', '')) not in docker_compose_current_version
 
 - name: DOCKER | COMPOSE | Install Docker Compose (if configured).
-  get_url:
+  ansible.builtin.get_url:
     url: "{{ docker_compose_url }}"
     dest: "{{ docker_compose_path }}"
-    mode: 0755
+    mode: "0755"
   when: >
     (docker_compose_current_version is not defined)
     or (docker_compose_current_version | length == 0)
diff --git a/roles/dependencies/tasks/docker/install_docker_users.yml b/roles/dependencies/tasks/docker/install_docker_users.yml
index 6304a0a..2f78a65 100644
--- a/roles/dependencies/tasks/docker/install_docker_users.yml
+++ b/roles/dependencies/tasks/docker/install_docker_users.yml
@@ -1,6 +1,7 @@
 ---
+
 - name: DOCKER | USERS | Ensure docker users are added to the docker group.
-  user:
+  ansible.builtin.user:
     name: "{{ item }}"
     groups: docker
     append: true
@@ -8,4 +9,4 @@
   become: true
 
 - name: DOCKER | USERS | Reset ssh connection to apply user changes.
-  meta: reset_connection
+  ansible.builtin.meta: reset_connection
diff --git a/roles/dependencies/tasks/docker/setup-Debian.yml b/roles/dependencies/tasks/docker/setup-Debian.yml
index afdc406..8835450 100644
--- a/roles/dependencies/tasks/docker/setup-Debian.yml
+++ b/roles/dependencies/tasks/docker/setup-Debian.yml
@@ -10,7 +10,7 @@
     state: absent
 
 - name: DOCKER | DEBIAN | Ensure the repo referencing the previous trusted.gpg.d key is not present
-  apt_repository:
+  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 }}"
@@ -19,13 +19,13 @@
 
 # See https://docs.docker.com/engine/install/debian/#uninstall-old-versions
 - name: DOCKER | DEBIAN | Ensure old versions of Docker are not installed.
-  package:
+  ansible.builtin.package:
     name: "{{ docker_obsolete_packages }}"
     state: absent
 
 - name: DOCKER | DEBIAN | Ensure dependencies are installed.
   become: true
-  apt:
+  ansible.builtin.apt:
     name:
       - apt-transport-https
       - ca-certificates
@@ -33,7 +33,7 @@
   when: docker_add_repo | bool
 
 - name: DOCKER | DEBIAN | Ensure directory exists for /etc/apt/keyrings
-  file:
+  ansible.builtin.file:
     path: /etc/apt/keyrings
     state: directory
     mode: "0755"
@@ -51,16 +51,21 @@
   become: true
 
 - name: DOCKER | DEBIAN | Ensure curl is present (on older systems without SNI).
-  package: name=curl state=present
+  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).
-  shell: >
+  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.
-  apt_repository:
+  ansible.builtin.apt_repository:
     repo: "{{ docker_apt_repository }}"
     state: present
     filename: "{{ docker_apt_filename }}"
diff --git a/roles/dependencies/tasks/docker/setup-RedHat.yml b/roles/dependencies/tasks/docker/setup-RedHat.yml
index 6a74fed..228585f 100644
--- a/roles/dependencies/tasks/docker/setup-RedHat.yml
+++ b/roles/dependencies/tasks/docker/setup-RedHat.yml
@@ -1,61 +1,61 @@
 ---
 - name: DOCKER | RED-HAT | Ensure old versions of Docker are not installed.
-  package:
+  ansible.builtin.package:
     name:
       - docker
       - docker-common
       - docker-engine
     state: absent
 
-# - name: DOCKER | RED-HAT | Add Docker GPG key.
-#   rpm_key:
-#     key: "{{ docker_yum_gpg_key }}"
-#     state: present
-#   when: docker_add_repo | bool
+- 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.
-#   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 | 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.
-#   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 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.
-#   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 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.
-#   block:
-#     - name: Ensure runc is not installed.
-#       package:
-#         name: runc
-#         state: absent
+- 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.
-#       package:
-#         name: container-selinux
-#         state: present
+    - name: Ensure container-selinux is installed.
+      ansible.builtin.package:
+        name: container-selinux
+        state: present
 
-#     - name: Ensure containerd.io is installed.
-#       package:
-#         name: containerd.io
-#         state: present
-#   when: ansible_distribution_major_version | int == 8
+    - 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
index 12526a5..b6403b0 100644
--- a/roles/dependencies/tasks/install_docker.yml
+++ b/roles/dependencies/tasks/install_docker.yml
@@ -1,76 +1,84 @@
 ---
+
 - name: DOCKER | Load OS-specific vars.
-  include_vars: "{{ lookup('first_found', params) }}"
+  ansible.builtin.include_vars: "{{ lookup('first_found', params) }}"
   vars:
     params:
       files:
-        - '{{ansible_distribution}}.yml'
-        - '{{ansible_os_family}}.yml'
+        - '{{ ansible_distribution }}.yml'
+        - '{{ ansible_os_family }}.yml'
         - main.yml
       paths:
         - 'vars'
 
-- include_tasks: docker/setup-RedHat.yml
+- name: Installing for RedHat OS family
+  ansible.builtin.include_tasks: docker/setup-RedHat.yml
   when: ansible_os_family == 'RedHat'
 
-- include_tasks: docker/setup-Debian.yml
+- name: Installing for Debian OS family
+  ansible.builtin.include_tasks: docker/setup-Debian.yml
   when: ansible_os_family == 'Debian'
 
 - name: DOCKER | Install Docker packages.
-  package:
+  ansible.builtin.package:
     name: "{{ docker_packages }}"
     state: "{{ docker_packages_state }}"
-  notify: handler_restart_docker
+  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).
-  package:
+  ansible.builtin.package:
     name: "{{ docker_packages }}"
     state: "{{ docker_packages_state }}"
     allow_downgrade: true
-  notify: handler_restart_docker
+  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.
-  package:
+  ansible.builtin.package:
     name: "{{ docker_compose_package }}"
     state: "{{ docker_compose_package_state }}"
-  notify: handler_restart_docker
+  notify: HANDLER_RESTART_DOCKER
   ignore_errors: "{{ ansible_check_mode }}"
-  when: "docker_install_compose_plugin | bool == true and (ansible_version.full is version_compare('2.12', '<') or ansible_os_family not in ['RedHat', 'Debian'])"
+  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).
-  package:
+  ansible.builtin.package:
     name: "{{ docker_compose_package }}"
     state: "{{ docker_compose_package_state }}"
     allow_downgrade: true
-  notify: handler_restart_docker
+  notify: HANDLER_RESTART_DOCKER
   ignore_errors: "{{ ansible_check_mode }}"
-  when: "docker_install_compose_plugin | bool == true and ansible_version.full is version_compare('2.12', '>=') and ansible_os_family in ['RedHat', 'Debian']"
+  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.
-  file:
+  ansible.builtin.file:
     path: /etc/docker
     state: directory
-    mode: 0755
+    mode: "0755"
   when: docker_daemon_options.keys() | length > 0
 
 - name: DOCKER | Configure Docker daemon options.
-  copy:
+  ansible.builtin.copy:
     content: "{{ docker_daemon_options | to_nice_json }}"
     dest: /etc/docker/daemon.json
-    mode: 0644
+    mode: "0644"
   when: docker_daemon_options.keys() | length > 0
-  notify: handler_restart_docker
+  notify: HANDLER_RESTART_DOCKER
 
 - name: DOCKER | Ensure Docker is started and enabled at boot.
-  service:
+  ansible.builtin.service:
     name: docker
     state: "{{ docker_service_state }}"
     enabled: "{{ docker_service_enabled }}"
@@ -78,26 +86,27 @@
   when: docker_service_manage | bool
 
 - name: DOCKER | Ensure handlers are notified now to avoid firewall conflicts.
-  meta: flush_handlers
+  ansible.builtin.meta: flush_handlers
 
-- include_tasks: docker/install_compose.yml
+- 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.
-  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.
-  set_fact:
+  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 }}"
 
-# - include_tasks: docker-users.yml
-- include_tasks: docker/install_docker_users.yml
+- 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
index edb782f..46ff39a 100644
--- a/roles/dependencies/tasks/install_packages.yml
+++ b/roles/dependencies/tasks/install_packages.yml
@@ -1,8 +1,10 @@
 ---
 
-- name: INSTALL_PACAKAGES | Installing the packages from list
+- name: INSTALL_PACKAGES | Installing the packages from list
   ansible.builtin.package:
-    name: "{{item}}"
+    name: "{{ package_name }}"
     state: present
-  with_items: "{{os_dependencies_packages}}"
-  become: true
\ No newline at end of file
+  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
index 2bf1447..1da7500 100644
--- a/roles/dependencies/tasks/main.yml
+++ b/roles/dependencies/tasks/main.yml
@@ -1,5 +1,8 @@
 ---
 # tasks file for dependencies
 
-- import_tasks: install_packages.yml
-- import_tasks: install_docker.yml
+- name: Importing the 'install_packages.yml' tasks
+  ansible.builtin.import_tasks: install_packages.yml
+
+- name: Importing the 'install_docker.yml' tasks
+  ansible.builtin.import_tasks: install_docker.yml
diff --git a/roles/docker_containers/meta/main.yml b/roles/docker_containers/meta/main.yml
index 9831b4f..6bef252 100644
--- a/roles/docker_containers/meta/main.yml
+++ b/roles/docker_containers/meta/main.yml
@@ -3,7 +3,7 @@ galaxy_info:
   description: Role to work with the containers for the c3InfoDesk sytems
   author: fejao
   company: cccv.de
-  license: license (GPL-2.0-or-later, MIT, etc)
+  license: MIT
   min_ansible_version: 2.10
   galaxy_tags: []
 
diff --git a/roles/docker_images/meta/main.yml b/roles/docker_images/meta/main.yml
index fcbd3be..8362f7b 100644
--- a/roles/docker_images/meta/main.yml
+++ b/roles/docker_images/meta/main.yml
@@ -3,7 +3,7 @@ galaxy_info:
   description: Role to clone the repositories used from c3InfoDesk sytems
   author: fejao
   company: cccv.de
-  license: license (GPL-2.0-or-later, MIT, etc)
+  license: MIT
   min_ansible_version: 2.10
   galaxy_tags: []
 
-- 
GitLab


From 4b919c8af1ae40a3e5823db9509fd28ecb861987 Mon Sep 17 00:00:00 2001
From: fejao <mail@fejao.de>
Date: Mon, 27 Jan 2025 20:05:54 +0100
Subject: [PATCH 3/6] Adding .gitlab-ci.yml file

---
 .gitlab-ci.yml | 119 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 119 insertions(+)
 create mode 100644 .gitlab-ci.yml

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..6033b8e
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,119 @@
+# image: python:3.10.15-bullseye
+image: ansible:latest
+
+variables:
+  TEST_VAR_BUILD: "Building the application..."
+  DOC_PATH_TMP: tmp_docs
+  DOC_NAME: c3InfoDesk Printing
+  DOC_AUTHOR: fejao
+  DOC_VERSION: 1.0.0
+  DOC_LANGUAGE: english
+  # DOC_RETENTION: 1 day  # <--- DON'T WORK :(
+  #####
+  #####
+  #####
+  PLAYBOOK_NAME_FOR_ROLE_TEST: "playbook_example_01_test.yml"
+
+stages:
+  - debug
+  - build
+  - test
+  - docs
+  - deploy
+
+###
+### DEBUG
+###
+runner-debug:
+  stage: debug
+  script:
+    - echo "Testing local gitlab-runner config..."
+    - echo $PWD
+    - echo "list local folder..."
+    - ls -hal
+
+###
+### BUILD
+###
+build:
+  stage: build
+  script:
+    - echo "Here should be the images build and pushed"
+
+###
+### TESTS
+###
+ansible-lint-test:
+  stage: test
+  before_script:
+    # - apt-get update && apt-get install -y python3-pip libcups2-dev && apt-get clean && rm -rf /var/lib/apt/lists/*
+    # - pip3 install -r ci-cd/requirements.txt
+    - pip3 install -r requirements.txt
+  script:
+    - echo "Running ansible-lint tests at the role-> 'test'"
+    # - pycodestyle -v --config=./src/pycodestyle.cfg src/
+    # - ansible-lint playbook_example_01_dependencies.yml
+    - ansible-lint $PLAYBOOK_NAME_FOR_ROLE_TEST
+  allow_failure: false
+
+# pylint:
+#   stage: test
+#   before_script:
+#     - apt-get update && apt-get install -y python3-pip libcups2-dev && apt-get clean && rm -rf /var/lib/apt/lists/*
+#     - pip3 install -r ci-cd/requirements.txt
+#   script:
+#     - echo "Running pylint tests..."
+#     ### Fix pylint 'import-error' --> hardcode init-hook on .pylintrc :(
+#     - cat .pylintrc | grep init-hook
+#     - rm .pylintrc
+#     - cp ci-cd/.pylintrc .
+#     - cat .pylintrc  | grep init-hook
+#     ### RUN
+#     - pylint src/
+#   allow_failure: false
+
+# unit-tests:
+#   stage: test
+#   before_script:
+#     - apt-get update && apt-get install -y python3-pip libcups2-dev && apt-get clean && rm -rf /var/lib/apt/lists/*
+#     - pip3 install -r ci-cd/requirements.txt
+#   script:
+#     - echo "Running pep8 tests..."
+#     - python3 -m pytest
+#   allow_failure: false
+
+# ###
+# ### DOCS
+# ###
+# sphinx-docs:
+#   stage: docs
+#   before_script:
+#     - pip3 install sphinx sphinx-rtd-theme
+#   script:
+#     - echo "Running sphinx-docs..."
+#     - mkdir -vp $DOC_PATH_TMP
+#     - cd $DOC_PATH_TMP
+#     - sphinx-quickstart -p '$DOC_NAME' -a '$DOC_AUTHOR' -v '$DOC_VERSION' -l '$DOC_LANGUAGE' -q
+#     - cd ..
+#     - sphinx-apidoc -o $DOC_PATH_TMP .
+#     - cd $DOC_PATH_TMP
+#     - make html
+#   artifacts:
+#     paths:
+#       - $DOC_PATH_TMP/*
+#     # expire_in: '$DOC_RETENTION' # <--- DON'T WORK :(
+#     expire_in: 1 day
+#   allow_failure: false
+#   only:
+#     - main
+
+# ###
+# ### DEPLOY
+# ###
+# deploy:
+#   stage: deploy
+#   script:
+#     - echo "Deploying the application..."
+#     - echo "TODO --> where to deploy this?"
+#   only:
+#     - main
-- 
GitLab


From 12ec47118234d5270966135ce1a1d49a9ae12303 Mon Sep 17 00:00:00 2001
From: fejao <mail@fejao.de>
Date: Mon, 27 Jan 2025 20:12:23 +0100
Subject: [PATCH 4/6] Updating the .gitlab-ci.yml file

---
 .gitlab-ci.yml   | 5 +++--
 requirements.txt | 1 +
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 6033b8e..8bcaf12 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,5 +1,5 @@
-# image: python:3.10.15-bullseye
-image: ansible:latest
+image: python:3.10.15-bullseye
+# image: ansible:latest
 
 variables:
   TEST_VAR_BUILD: "Building the application..."
@@ -47,6 +47,7 @@ ansible-lint-test:
   stage: test
   before_script:
     # - apt-get update && apt-get install -y python3-pip libcups2-dev && apt-get clean && rm -rf /var/lib/apt/lists/*
+    - apt-get update && apt-get install -y python3-pip && apt-get clean && rm -rf /var/lib/apt/lists/*
     # - pip3 install -r ci-cd/requirements.txt
     - pip3 install -r requirements.txt
   script:
diff --git a/requirements.txt b/requirements.txt
index 7dca993..a42d9c6 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,2 +1,3 @@
+ansible
 ansible-dev-tools
 ansible-lint
-- 
GitLab


From 3e0d152788f1ed2bc058f720ede52c0c3851c1ab Mon Sep 17 00:00:00 2001
From: fejao <mail@fejao.de>
Date: Mon, 27 Jan 2025 20:22:18 +0100
Subject: [PATCH 5/6] Updated the .gitlab-ci.yml file

---
 .gitlab-ci.yml | 87 +++++++++++++-------------------------------------
 1 file changed, 22 insertions(+), 65 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8bcaf12..066904d 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -13,11 +13,14 @@ variables:
   #####
   #####
   PLAYBOOK_NAME_FOR_ROLE_TEST: "playbook_example_01_test.yml"
+  PLAYBOOK_NAME_FOR_ROLE_DEPENDENCIES: "playbook_example_02_dependencies.yml"
+  PLAYBOOK_NAME_FOR_ROLE_CLONE_REPOSITORIES: "playbook_example_03_clone_repositories.yml"
 
 stages:
   - debug
   - build
   - test
+  - lint-tests
   - docs
   - deploy
 
@@ -44,77 +47,31 @@ build:
 ### TESTS
 ###
 ansible-lint-test:
-  stage: test
+  stage: lint-tests
   before_script:
-    # - apt-get update && apt-get install -y python3-pip libcups2-dev && apt-get clean && rm -rf /var/lib/apt/lists/*
     - apt-get update && apt-get install -y python3-pip && apt-get clean && rm -rf /var/lib/apt/lists/*
-    # - pip3 install -r ci-cd/requirements.txt
     - pip3 install -r requirements.txt
   script:
     - echo "Running ansible-lint tests at the role-> 'test'"
-    # - pycodestyle -v --config=./src/pycodestyle.cfg src/
-    # - ansible-lint playbook_example_01_dependencies.yml
     - ansible-lint $PLAYBOOK_NAME_FOR_ROLE_TEST
   allow_failure: false
 
-# pylint:
-#   stage: test
-#   before_script:
-#     - apt-get update && apt-get install -y python3-pip libcups2-dev && apt-get clean && rm -rf /var/lib/apt/lists/*
-#     - pip3 install -r ci-cd/requirements.txt
-#   script:
-#     - echo "Running pylint tests..."
-#     ### Fix pylint 'import-error' --> hardcode init-hook on .pylintrc :(
-#     - cat .pylintrc | grep init-hook
-#     - rm .pylintrc
-#     - cp ci-cd/.pylintrc .
-#     - cat .pylintrc  | grep init-hook
-#     ### RUN
-#     - pylint src/
-#   allow_failure: false
-
-# unit-tests:
-#   stage: test
-#   before_script:
-#     - apt-get update && apt-get install -y python3-pip libcups2-dev && apt-get clean && rm -rf /var/lib/apt/lists/*
-#     - pip3 install -r ci-cd/requirements.txt
-#   script:
-#     - echo "Running pep8 tests..."
-#     - python3 -m pytest
-#   allow_failure: false
-
-# ###
-# ### DOCS
-# ###
-# sphinx-docs:
-#   stage: docs
-#   before_script:
-#     - pip3 install sphinx sphinx-rtd-theme
-#   script:
-#     - echo "Running sphinx-docs..."
-#     - mkdir -vp $DOC_PATH_TMP
-#     - cd $DOC_PATH_TMP
-#     - sphinx-quickstart -p '$DOC_NAME' -a '$DOC_AUTHOR' -v '$DOC_VERSION' -l '$DOC_LANGUAGE' -q
-#     - cd ..
-#     - sphinx-apidoc -o $DOC_PATH_TMP .
-#     - cd $DOC_PATH_TMP
-#     - make html
-#   artifacts:
-#     paths:
-#       - $DOC_PATH_TMP/*
-#     # expire_in: '$DOC_RETENTION' # <--- DON'T WORK :(
-#     expire_in: 1 day
-#   allow_failure: false
-#   only:
-#     - main
+ansible-lint-dependencies:
+  stage: lint-tests
+  before_script:
+    - apt-get update && apt-get install -y python3-pip && apt-get clean && rm -rf /var/lib/apt/lists/*
+    - pip3 install -r requirements.txt
+  script:
+    - echo "Running ansible-lint tests at the role-> 'dependencies'"
+    - ansible-lint $PLAYBOOK_NAME_FOR_ROLE_DEPENDENCIES
+  allow_failure: false
 
-# ###
-# ### DEPLOY
-# ###
-# deploy:
-#   stage: deploy
-#   script:
-#     - echo "Deploying the application..."
-#     - echo "TODO --> where to deploy this?"
-#   only:
-#     - main
+ansible-lint-clone-repositories:
+  stage: lint-tests
+  before_script:
+    - apt-get update && apt-get install -y python3-pip && apt-get clean && rm -rf /var/lib/apt/lists/*
+    - pip3 install -r requirements.txt
+  script:
+    - echo "Running ansible-lint tests at the role-> 'clone_repositories'"
+    - ansible-lint $PLAYBOOK_NAME_FOR_ROLE_CLONE_REPOSITORIES
+  allow_failure: false
-- 
GitLab


From c825a3fc2dedfc9cc44e2bc01480556786fd91d8 Mon Sep 17 00:00:00 2001
From: fejao <mail@fejao.de>
Date: Mon, 27 Jan 2025 20:36:36 +0100
Subject: [PATCH 6/6] Updating .gitlab-ci.yml file

---
 .gitlab-ci.yml | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 066904d..cddcc6a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -14,7 +14,7 @@ variables:
   #####
   PLAYBOOK_NAME_FOR_ROLE_TEST: "playbook_example_01_test.yml"
   PLAYBOOK_NAME_FOR_ROLE_DEPENDENCIES: "playbook_example_02_dependencies.yml"
-  PLAYBOOK_NAME_FOR_ROLE_CLONE_REPOSITORIES: "playbook_example_03_clone_repositories.yml"
+  # PLAYBOOK_NAME_FOR_ROLE_CLONE_REPOSITORIES: "playbook_example_03_clone_repositories.yml"
 
 stages:
   - debug
@@ -46,7 +46,7 @@ build:
 ###
 ### TESTS
 ###
-ansible-lint-test:
+role-test:
   stage: lint-tests
   before_script:
     - apt-get update && apt-get install -y python3-pip && apt-get clean && rm -rf /var/lib/apt/lists/*
@@ -56,7 +56,7 @@ ansible-lint-test:
     - ansible-lint $PLAYBOOK_NAME_FOR_ROLE_TEST
   allow_failure: false
 
-ansible-lint-dependencies:
+role-dependencies:
   stage: lint-tests
   before_script:
     - apt-get update && apt-get install -y python3-pip && apt-get clean && rm -rf /var/lib/apt/lists/*
@@ -66,12 +66,12 @@ ansible-lint-dependencies:
     - ansible-lint $PLAYBOOK_NAME_FOR_ROLE_DEPENDENCIES
   allow_failure: false
 
-ansible-lint-clone-repositories:
-  stage: lint-tests
-  before_script:
-    - apt-get update && apt-get install -y python3-pip && apt-get clean && rm -rf /var/lib/apt/lists/*
-    - pip3 install -r requirements.txt
-  script:
-    - echo "Running ansible-lint tests at the role-> 'clone_repositories'"
-    - ansible-lint $PLAYBOOK_NAME_FOR_ROLE_CLONE_REPOSITORIES
-  allow_failure: false
+# role-clone-repositories:
+#   stage: lint-tests
+#   before_script:
+#     - apt-get update && apt-get install -y python3-pip && apt-get clean && rm -rf /var/lib/apt/lists/*
+#     - pip3 install -r requirements.txt
+#   script:
+#     - echo "Running ansible-lint tests at the role-> 'clone_repositories'"
+#     - ansible-lint $PLAYBOOK_NAME_FOR_ROLE_CLONE_REPOSITORIES
+#   allow_failure: false
-- 
GitLab