diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..b3c5964a7fd099fa0fbd20ae8f292e36fa310697
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+*OLD*
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..e26808086d0e255cac2daf7caccf9fbc4f1c1761
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,138 @@
+---
+
+# image: python:3.10.15-bullseye
+
+###
+### VARIABLES
+###
+variables:
+  AUTHOR: fejao
+  IMAGE_NAME_SYNTAX: python:3.10.15-bullseye
+  IMAGE_NAME_LINT: python:3.10.15-bullseye
+  # IMAGE_NAME_MOLECULE: geerlingguy/docker-ubuntu2204-ansible:latest
+  PATH_ENV_DIR: "/builds/fejao/c3infodesk-deployment-role-test"
+  PATH_PYTHON_REQ_FILE: "/builds/fejao/c3infodesk-deployment-role-test/ci-cd/python_requirements.txt"
+  PATH_INVENTORIES: "/builds/fejao/c3infodesk-deployment-role-test/ci-cd/hosts"
+  PATH_PLAYBOOK: "/builds/fejao/c3infodesk-deployment-role-test/ci-cd/playbook_role_test.yml"
+
+  # INVENTORIES_PATH: "inventories/hosts"
+  # PLAYBOOK_PATH_FOR_ROLE_TEST: "ci-cd/01_test.yml"
+  # PLAYBOOK_PATH_FOR_ROLE_DEPENDENCIES: "ci-cd/02_dependencies.yml"
+  # PLAYBOOK_PATH_FOR_ROLE_CLONE_REPOSITORIES: "ci-cd/03_clone_repositories.yml"
+  # PLAYBOOK_PATH_FOR_ROLE_DOCKER_IMAGES: "ci-cd/04_docker_images.yml"
+  # PLAYBOOK_PATH_FOR_ROLE_DOCKER_CONTAINERS: "ci-cd/05_docker_containers.yml"
+  # PLAYBOOK_PATH_FOR_ROLE_OH_MY_BASH: "ci-cd/06_oh_my_bash.yml"
+
+###
+### STAGES
+###
+stages:
+  - test-debug
+  - yamllint
+  - syntax-check
+  - lint-tests
+  - molecule
+
+###
+### SCRIPTS
+###
+.before_syntax_n_lint: &before_syntax_n_lint
+  # Install python and it's requirements
+  - apt-get update && apt-get install -y python3-pip && apt-get clean && rm -rf /var/lib/apt/lists/*
+  - pip3 install -r $PYTHON_REQ_FILE_PATH
+  ### Correct the permissions on the build environment directory.
+  ### See https://github.com/ansible/ansible/pull/42142/files
+  - chmod 700 $PATH_ENV_DIR
+
+.run_syntax_check: &run_syntax_check
+  - echo "ansible-playbook --syntax-check -i $PATH_INVENTORIES $PLAYBOOK_PATH"
+  - pwd
+  - ls -la
+  - cd ..
+  - pwd
+  - ls -la
+  # - ansible-playbook --syntax-check -i roles/c3infodesk-deployment-role-test/ci-cd/hosts roles/c3infodesk-deployment-role-test/ci-cd/playbook_role_test.yml
+
+.run_lint: &run_lint
+  # - ansible-lint $ROLE_PATH
+  - ansible-lint $PLAYBOOK_PATH
+
+###
+### DEBUG-TEST
+###
+# debug-test:
+#   stage: test-debug
+#   image: $IMAGE_NAME_LINT
+#   variables:
+#     VAR_DEBUG: "foo-bar"
+#   script:
+#     - echo "This is the debug-test"
+
+###
+### YAMLLING
+###
+yamllint-test:
+  stage: yamllint
+  image: $IMAGE_NAME_LINT
+  variables:
+    PYTHON_REQ_FILE_PATH: $PATH_PYTHON_REQ_FILE
+    PLAYBOOK_PATH: $PATH_PLAYBOOK
+  before_script:
+    - *before_syntax_n_lint
+  script:
+    - echo "This is the 'yamllint' test from the 'test' role"
+    - yamllint .
+
+###
+### STAGE-SYNTAX-CHECK
+###
+# syntax-test:
+#   stage: syntax-check
+#   image: $IMAGE_NAME_SYNTAX
+#   variables:
+#     PYTHON_REQ_FILE_PATH: $PATH_PYTHON_REQ_FILE
+#     PLAYBOOK_PATH: $PATH_PLAYBOOK
+#   before_script:
+#     - *before_syntax_n_lint
+#   script:
+#     - echo "Running ansible-playbook --syntax-check tests at the role-> 'test'"
+#     # - *run_syntax_check
+
+###
+### STAGE-LINT-TESTS
+###
+# lint-test:
+#   stage: lint-tests
+#   image: $IMAGE_NAME_LINT
+#   variables:
+#     PYTHON_REQ_FILE_PATH: $PATH_PYTHON_REQ_FILE
+#     PLAYBOOK_PATH: $PATH_PLAYBOOK
+#     ROLE_PATH: $PLAYBOOK_PATH_FOR_ROLE_TEST
+#   before_script:
+#     - *before_syntax_n_lint
+#   script:
+#     - echo "Running ansible-lint tests at the role-> 'test'"
+#     - *run_lint
+
+###
+### STAGE-MOLECULE --> At the moment, running DIND (docker in docker) at this instance is disable :(
+###
+# molecule-test:
+#   stage: molecule
+#   image: $IMAGE_NAME_MOLECULE
+#   ### AVAILABLE TAGS
+#   # https://docs.gitlab.com/ee/ci/runners/hosted_runners/linux.html#machine-types-available-for-linux---x86-64
+#   tags:
+#     - saas-linux-small-amd64
+#   # before_script:
+#   #   # - apk add --no-cache python3 py3-pip
+#   #   # - rm /usr/lib/python*/EXTERNALLY-MANAGED
+#   #   # - python3 -m ensurepip
+#   #   - pip3 install ansible ansible-lint molecule molecule-docker
+#   #   - pip3 install --user "molecule-plugins[docker]"
+#   script:
+#     - echo "Running molecule tests at the role-> 'test'"
+#     - docker ps -a
+#     # - cd roles/test
+#     # - molecule test
+#   allow_failure: false
diff --git a/.yamllint b/.yamllint
new file mode 100644
index 0000000000000000000000000000000000000000..2382bed7fe5e0dd0bbde29e929f987b4d8b801c6
--- /dev/null
+++ b/.yamllint
@@ -0,0 +1,50 @@
+---
+
+# 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
+    ### roles/dependencies/defaults/main.yml:72 --> 232 characters
+    max: 240
+  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/ci-cd/hosts b/ci-cd/hosts
new file mode 100644
index 0000000000000000000000000000000000000000..9e0c871a8a9a141978e95184a6292b9a49bf8641
--- /dev/null
+++ b/ci-cd/hosts
@@ -0,0 +1,2 @@
+[example_servers_group]
+example_server ansible_host=192.168.2.45
diff --git a/ci-cd/playbook_role_test.yml b/ci-cd/playbook_role_test.yml
new file mode 100644
index 0000000000000000000000000000000000000000..576b8e3f6a6e649501da0c716c76e9073c4f5999
--- /dev/null
+++ b/ci-cd/playbook_role_test.yml
@@ -0,0 +1,15 @@
+---
+# Runs the role test
+
+- name: CI-CD playbook for running the role 'test'
+  hosts:
+    - example_servers_group
+  roles:
+    # - roles/test
+    # - roles/c3infodesk-deployment-role-test
+    - c3infodesk-deployment-role-test
+  # tasks:
+  #   - name: Importing the local role
+  #     ansible.builtin.import_role:
+  #       # name: myrole
+  #       name: c3infodesk-deployment-role-test
diff --git a/ci-cd/python_requirements.txt b/ci-cd/python_requirements.txt
new file mode 100644
index 0000000000000000000000000000000000000000..71a091ad8d57cb226a37759a19ae9b1bb9469cca
--- /dev/null
+++ b/ci-cd/python_requirements.txt
@@ -0,0 +1,4 @@
+# ansible
+# ansible-dev-tools
+# ansible-lint
+yamllint
diff --git a/defaults/main.yml b/defaults/main.yml
new file mode 100644
index 0000000000000000000000000000000000000000..9c8dd30304fe755907bd1212c4e6fdf95123a598
--- /dev/null
+++ b/defaults/main.yml
@@ -0,0 +1,5 @@
+---
+# defaults file for test
+
+var_setted_everywhere: "answer from roles/test/defaults/main.yml"
+var_setted_only_defaults_main: "MESSAGE FROM roles/test/defaults/main.yml"
diff --git a/molecule/default/converge.yml b/molecule/default/converge.yml
new file mode 100644
index 0000000000000000000000000000000000000000..6680db8cfc7bbb6f32e6a8f7cfab064634e53132
--- /dev/null
+++ b/molecule/default/converge.yml
@@ -0,0 +1,8 @@
+---
+- name: MOLECULE | Converge
+  hosts: all
+  tasks:
+    - name: MOLECULE | CONVERGE | Call the 'test' role.
+      ansible.builtin.include_role:
+        # name: test
+        name: c3infodesk-deployment-role-test
diff --git a/molecule/default/molecule.yml b/molecule/default/molecule.yml
new file mode 100644
index 0000000000000000000000000000000000000000..7b5a4dc16f44f5b72043ced31ba71db9a993b3b8
--- /dev/null
+++ b/molecule/default/molecule.yml
@@ -0,0 +1,66 @@
+---
+dependency:
+  name: galaxy
+driver:
+  name: docker
+platforms:
+  - name: instance
+    image: geerlingguy/docker-ubuntu2004-ansible:latest
+    # privileged: true
+    pre_build_image: true
+provisioner:
+  name: ansible
+  inventory:
+    ###
+    ### VARS used from the role
+    ###
+    group_vars:
+      example_servers_group:
+        var_setted_only_group_vars: "group_vars_value"
+        var_setted_everywhere: "group_vars_value"
+    host_vars:
+      instance:
+        var_setted_only_host_vars: "host_vars_value"
+        var_setted_everywhere: "host_vars_value"
+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/molecule/default/verify.yml b/molecule/default/verify.yml
new file mode 100644
index 0000000000000000000000000000000000000000..5dd983f895031ab4e81f60a08876814d24a46e63
--- /dev/null
+++ b/molecule/default/verify.yml
@@ -0,0 +1,59 @@
+---
+- name: VERIFY | Test role for debugging variables
+  hosts: all
+  pre_tasks:
+    - name: MOLECULE | VERIFY | PRE-TASKS | Adding variables from -> ../../../../inventories/group_vars
+      ansible.builtin.include_vars:
+        dir: ../../../../inventories/group_vars
+        extensions:
+          - 'yml'
+
+    - name: MOLECULE | VERIFY | PRE-TASKS | Adding variables from -> ../../../../inventories/host_vars
+      ansible.builtin.include_vars:
+        dir: ../../../../inventories/host_vars
+        extensions:
+          - 'yml'
+
+    - name: MOLECULE | VERIFY | PRE-TASKS | Adding variables from -> ../../defaults
+      ansible.builtin.include_vars:
+        dir: ../../defaults
+        extensions:
+          - 'yml'
+
+    - name: MOLECULE | VERIFY | PRE-TASKS | Adding variables from -> ../../vars
+      ansible.builtin.include_vars:
+        dir: ../../vars
+        extensions:
+          - 'yml'
+
+  tasks:
+    - name: MOLECULE | VERIFY | Test parsed variable setted only at roles/test/defaults/main.yml
+      ansible.builtin.debug:
+        msg: "{{ var_setted_only_defaults_main }}"
+
+    - name: MOLECULE | VERIFY | Test parsed variable setted only at roles/test/vars/main.yml
+      ansible.builtin.debug:
+        msg: "{{ var_setted_only_vars_main }}"
+
+    - name: MOLECULE | VERIFY | Test parsed variable setted only at inventory/group_vars/example_servers_group.yml
+      ansible.builtin.debug:
+        msg: "{{ var_setted_only_group_vars }}"
+      when: var_setted_only_group_vars is defined
+
+    - name: MOLECULE | VERIFY | Test parsed variable setted only at inventory/host_vars/example_server.yml
+      ansible.builtin.debug:
+        msg: "{{ var_setted_only_host_vars }}"
+
+    - name: MOLECULE | VERIFY | Test parsed variable setted EVERYWHERE -> should come from roles/test/vars/main.yml
+      ansible.builtin.debug:
+        msg: "{{ var_setted_everywhere }}"
+
+    - name: MOLECULE | VERIFY | List the root ('/') folder from the target to a register
+      ansible.builtin.command:
+        cmd: ls -hal /
+      register: ret_list_folder
+      changed_when: false
+
+    - name: MOLECULE | VERIFY | Shows output from listing folder
+      ansible.builtin.debug:
+        msg: "{{ ret_list_folder }}"
diff --git a/tasks/main.yml b/tasks/main.yml
new file mode 100644
index 0000000000000000000000000000000000000000..3e7e633615708d3a17a07bcb244ec0779c8725ac
--- /dev/null
+++ b/tasks/main.yml
@@ -0,0 +1,33 @@
+---
+# tasks file for test
+
+- name: Test parsed variable setted only at roles/test/defaults/main.yml
+  ansible.builtin.debug:
+    msg: "{{ var_setted_only_defaults_main }}"
+
+- name: Test parsed variable setted only at roles/test/vars/main.yml
+  ansible.builtin.debug:
+    msg: "{{ var_setted_only_vars_main }}"
+
+- name: Test parsed variable setted only at inventory/group_vars/example_servers_group.yml
+  ansible.builtin.debug:
+    msg: "{{ var_setted_only_group_vars }}"
+  when: var_setted_only_group_vars is defined
+
+- name: Test parsed variable setted only at inventory/host_vars/example_server.yml
+  ansible.builtin.debug:
+    msg: "{{ var_setted_only_host_vars }}"
+
+- name: Test parsed variable setted EVERYWHERE -> should come from roles/test/vars/main.yml
+  ansible.builtin.debug:
+    msg: "{{ var_setted_everywhere }}"
+
+- name: List the root ('/') folder from the target to a register
+  ansible.builtin.command:
+    cmd: ls -hal /
+  register: ret_list_folder
+  changed_when: false
+
+- name: Shows output from listing folder
+  ansible.builtin.debug:
+    msg: "{{ ret_list_folder }}"
diff --git a/vars/main.yml b/vars/main.yml
new file mode 100644
index 0000000000000000000000000000000000000000..76a45cb0672a680111467fd9d9576ca1e237dce8
--- /dev/null
+++ b/vars/main.yml
@@ -0,0 +1,5 @@
+---
+# vars file for test
+
+var_setted_everywhere: "MESSAGE EVERYWHERE FROM roles/test/vars/main.yml"
+var_setted_only_vars_main: "MESSAGE FROM roles/test/vars/main.yml"