diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f7c46b6b9e6105ec1a066660b22721a70fc9ee04..b33adfa4fac4853abc795a783b57c8630d0f780a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -15,7 +15,7 @@ variables: ### stages: - yamllint - - upstream-trigger + - downstream-trigger ### ### SCRIPTS @@ -41,7 +41,7 @@ yamllint-test: - yamllint . trigger-pipeline: - stage: upstream-trigger + stage: downstream-trigger variables: RUN_UPSTREAM_FOR_ROLE_DOCKER_IMAGES: true trigger: diff --git a/defaults/main.yml b/defaults/main.yml index 69c4150941e638cb3d738bd7f9a87c77c5853b20..beeb6176ec3254d38850ac20770169534542f1b0 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -2,17 +2,7 @@ # defaults file for docker-images ### -### roles/clone_repositories -### -c3infodesk_printer_clone_printer: true - -c3infodesk_deployment_repository_url: "https://git.cccv.de/fejao/c3infodesk-printer.git" -c3infodesk_deployment_repository_dest_folder: "Coding/c3infodesk-printer" -c3infodesk_deployment_repository_branch_change: true -c3infodesk_deployment_repository_branch_name: "example_printer_test_branch" - -### -### roles/docker-images +### roles/docker-images ---> setted for c3infodesk-printer ### c3infodesk_deployment_paht_docker_folder: "Coding/c3infodesk-printer/docker" diff --git a/meta/main.yml b/meta/main.yml index a2c0e3af235899ff5feb940c2ceb7cf60890cdd0..0f9289875823562cfa58d24b976df6cf5c2aebc9 100644 --- a/meta/main.yml +++ b/meta/main.yml @@ -7,11 +7,10 @@ galaxy_info: company: cccv.de license: "MIT / BSD" min_ansible_version: '2.10' - # galaxy_tags: [] galaxy_tags: - docker - build - - ducker-build + - docker-build - c3infodesk - c3infodesk-printer - c3buttons diff --git a/molecule/default/converge.yml b/molecule/default/converge.yml index b889f8643882cc0cd96ccfd099670ea5539ed58b..d7fe0a034285da79d5885ca4c566a945e258f32a 100644 --- a/molecule/default/converge.yml +++ b/molecule/default/converge.yml @@ -1,61 +1,15 @@ --- -- name: MOLECULE | Converge +- name: MOLECULE | CONVERGE | Setting tasks for converge... hosts: all - vars: - # molecule_debug_outputs: true - molecule_debug_outputs: false - pre_tasks: - - name: MOLECULE | COVERGE | PRE-TASKS | VARIABLES | From -> ../../defaults - ansible.builtin.include_vars: - dir: ../../defaults - depth: 1 - extensions: - - 'yml' - - - name: MOLECULE | CONVERGE | PRE-TASKS | VARIABLES | From -> ../../../../roles/c3infodesk-deployment-role-dependencies/defaults - ansible.builtin.include_vars: - dir: ../../../../roles/c3infodesk-deployment-role-dependencies/defaults - depth: 1 - extensions: - - 'yml' - - - name: MOLECULE | CONVERGE | PRE-TASKS | VARIABLES | From -> ../../../../roles/c3infodesk-deployment-role-clone-repositories/defaults - ansible.builtin.include_vars: - dir: ../../../../roles/c3infodesk-deployment-role-clone-repositories/defaults - depth: 1 - extensions: - - 'yml' - - ############################################## - ############################################## - ############################################## - - - name: MOLECULE | CONVERGE | PRE-TASKS | SET FACT | Read the parsed 'HOST_VAR_FILE_NAME' env var or set the default to 'host_var_file_name' variable. - ansible.builtin.set_fact: - host_var_file_name: "../../../../inventories/host_vars/{{ lookup('ansible.builtin.env', 'HOST_VAR_FILE_NAME') | default('example_printer.yml', True) }}" - - name: MOLECULE | CONVERGE | PRE-TASKS | DEBUG | Value from 'host_var_file_name' fact. - ansible.builtin.debug: - msg: "molecule_debug_outputs: {{ host_var_file_name }}" - when: molecule_debug_outputs | bool - - - name: MOLECULE | CONVERGE | PRE-TASKS | VARIABLES | From -> 'host_vars_from_proj_path' variable. - ansible.builtin.include_vars: - file: "{{ host_var_file_name }}" - - - name: MOLECULE | CONVERGE | PRE-TASKS | DEBUG | Value from 'c3infodesk_deployment_repository_url' variable. - ansible.builtin.debug: - msg: "molecule_debug_outputs: {{ c3infodesk_deployment_repository_url }}" - when: molecule_debug_outputs | bool - - ##################### - - - name: MOLECULE | CONVERGE | PRE-TASKS | INSTALL | Install the python pip requests package. - ansible.builtin.pip: - name: requests + pre_tasks: + - name: MOLECULE | CONVERGE | PRE-TASKS | Import tasks... + tags: import_pre_tasks + ansible.builtin.import_tasks: pre_tasks.yml tasks: - - name: MOLECULE | CONVERGE | Call the 'docker_images' role. + - name: MOLECULE | CONVERGE | TASKS | Call the 'clone_repositories' role. + tags: execute_role ansible.builtin.include_role: name: c3infodesk-deployment-role-docker-images diff --git a/molecule/default/pre_tasks.yml b/molecule/default/pre_tasks.yml new file mode 100644 index 0000000000000000000000000000000000000000..41b119870bcbb3cd8a7f5ec130063339fa6313e1 --- /dev/null +++ b/molecule/default/pre_tasks.yml @@ -0,0 +1,45 @@ +--- +# This is the pre-tasks shared between converge and verify. + +- name: MOLECULE | PRE-TASKS | VARIABLES + tags: variables + vars: + # molecule_debug_outputs: true + molecule_debug_outputs: false + block: + - name: MOLECULE | PRE-TASKS | VARIABLES | From -> ../../defaults + ansible.builtin.include_vars: + dir: ../../defaults + depth: 1 + extensions: + - 'yml' + + - name: MOLECULE | PRE-TASKS | VARIABLES | From -> ../../../../roles/c3infodesk-deployment-role-dependencies/defaults + ansible.builtin.include_vars: + dir: ../../../../roles/c3infodesk-deployment-role-dependencies/defaults + depth: 1 + extensions: + - 'yml' + + - name: MOLECULE | PRE-TASKS | SET FACT | Read the parsed 'HOST_VAR_FILE_NAME' env var or set the default to 'host_var_file_name' variable. + ansible.builtin.set_fact: + host_var_file_name: "../../../../inventories/host_vars/{{ lookup('ansible.builtin.env', 'HOST_VAR_FILE_NAME') | default('example_printer.yml', True) }}" + + - name: MOLECULE | PRE-TASKS | DEBUG | Value from 'host_var_file_name' fact. + ansible.builtin.debug: + msg: "molecule_debug_outputs: {{ host_var_file_name }}" + when: molecule_debug_outputs | bool + + - name: MOLECULE | PRE-TASKS | VARIABLES | From -> 'host_vars_from_proj_path' variable. + ansible.builtin.include_vars: + file: "{{ host_var_file_name }}" + + - name: MOLECULE | PRE-TASKS | DEBUG | Value from 'c3infodesk_deployment_repository_url' variable. + ansible.builtin.debug: + msg: "molecule_debug_outputs: {{ c3infodesk_deployment_repository_url }}" + when: molecule_debug_outputs | bool + + ### c3infodesk-deployment-role-docker-images + - name: MOLECULE | CONVERGE | PRE-TASKS | INSTALL | Install the python pip requests package. + ansible.builtin.pip: + name: requests diff --git a/molecule/default/verify.yml b/molecule/default/verify.yml index 068eac48ffbf0fe3f19617df6076e266af916b7a..cb336c40656b0ed5a65ca873081ba5727f1978b0 100644 --- a/molecule/default/verify.yml +++ b/molecule/default/verify.yml @@ -1,149 +1,18 @@ --- -- name: VERIFY | Test role for debugging variables +- name: VERIFY | Test role for debugging variables. hosts: all - vars: - verify_package_name_docker: 'docker' - verify_package_name_docker_ce: 'docker-ce' - verify_package_name_docker_compose: 'docker-compose' - verify_package_name_docker_compose_plugin: 'docker-compose-plugin' 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/c3infodesk-deployment-role-dependencies/defaults - ansible.builtin.include_vars: - dir: ../../../../roles/c3infodesk-deployment-role-dependencies/defaults - depth: 1 - extensions: - - 'yml' - - - name: MOLECULE | VERIFY | PRE-TASKS | VARIABLES | From -> ../../../../roles/c3infodesk-deployment-role-clone-repositories/defaults - ansible.builtin.include_vars: - dir: ../../../../roles/c3infodesk-deployment-role-clone-repositories/defaults - depth: 1 - extensions: - - 'yml' - - - name: MOLECULE | VERIFY | PRE-TASKS | SET FACT | Read the parsed 'HOST_VAR_FILE_NAME' env var or set the default to 'host_var_file_name' variable. - ansible.builtin.set_fact: - host_var_file_name: "../../../../inventories/host_vars/{{ lookup('ansible.builtin.env', 'HOST_VAR_FILE_NAME') | default('example_printer.yml', True) }}" - - - name: MOLECULE | VERIFY | PRE-TASKS | VARIABLES | From -> 'host_vars_from_proj_path' variable. - ansible.builtin.include_vars: - file: "{{ host_var_file_name }}" + - name: MOLECULE | VERIFY | PRE-TASKS | Import tasks... + tags: import_pre_tasks + ansible.builtin.import_tasks: pre_tasks.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 | PACKAGES | 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 - - ### - ### TESTS - DOCKER - ### - - name: MOLECULE | VERIFY | TEST | DOCKER | Is installed. - ansible.builtin.debug: - msg: "Package: 'docker' is installed" - failed_when: - - verify_package_name_docker not in ansible_facts.packages - - verify_package_name_docker_ce not in ansible_facts.packages - when: docker_set_to_install | bool - - - name: MOLECULE | VERIFY | TEST | DOCKER | docker-compose is installed. - ansible.builtin.debug: - msg: "Package: 'docker-cokmpose' is installed" - failed_when: - - verify_package_name_docker_compose not in ansible_facts.packages - - verify_package_name_docker_compose_plugin not in ansible_facts.packages - when: docker_set_to_install | bool - - - name: MOLECULE | VERIFY | TEST | DOCKER | Get docker service state. - ansible.builtin.systemd: - name: "docker" - register: docker_service - when: docker_set_to_install | bool - - - name: MOLECULE | VERIFY | TEST | DOCKER | Check that docker is running. - ansible.builtin.debug: - msg: "Docker IS running..." - failed_when: "'active' != docker_service.status.ActiveState" - when: docker_set_to_install | bool - - ### - ### TESTS - ADDED DOCKER USERS - ### - - name: MOLECULE | VERIFY | TEST | USER | Get added users infos. - ansible.builtin.user: - name: "{{ item }}" - loop: "{{ docker_users }}" - check_mode: true - register: test_users - - - name: MOLECULE | VERIFY | TEST | USER | 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 | USER | 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 | USER | 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 - ### - - name: MOLECULE | VERIFY | TEST | Get if the repository was cloned. - ansible.builtin.git: - repo: "{{ c3infodesk_deployment_repository_url }}" - dest: "{{ c3infodesk_deployment_repository_dest_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_deployment_repository_url }}' cloned..." - failed_when: check_repository.changed | bool + - name: MOLECULE | VERIFY | POPULATE + tags: import_verify_populate + ansible.builtin.import_tasks: verify_populate.yml - ### - ### TESTS - DOCKER IMAGES - ### - - name: MOLECULE | VERIFY | TEST | Check if the Docker images are on the system. - community.docker.docker_image_info: - name: "{{ item.docker_image_name }}" - with_items: "{{ c3infodesk_deployment_docker_images_list }}" + - name: MOLECULE | VERIFY | TASKS + tags: import_verify_tasks + ansible.builtin.import_tasks: verify_tasks.yml diff --git a/molecule/default/verify_populate.yml b/molecule/default/verify_populate.yml new file mode 100644 index 0000000000000000000000000000000000000000..caa85c6f12d21abf5f930bba1bec83da0e0acc52 --- /dev/null +++ b/molecule/default/verify_populate.yml @@ -0,0 +1,7 @@ +--- +# This is the file for populating the facts before verify + +- name: MOLECULE | VERIFY | POPULATE | Gather the package facts + tags: populate + ansible.builtin.package_facts: + manager: auto diff --git a/molecule/default/verify_tasks.yml b/molecule/default/verify_tasks.yml new file mode 100644 index 0000000000000000000000000000000000000000..03d1c92b804a2f71c17e91701662a3cda2184826 --- /dev/null +++ b/molecule/default/verify_tasks.yml @@ -0,0 +1,125 @@ +--- +# This is the tasks to be runned from the verify.yml file + +### +### DEPENDENCIES - PACKAGES +### +- name: MOLECULE | VERIFY | PACKAGES | Check that the packages from 'os_dependencies_packages' are installed. + tags: + - install_packages + - role_dependency_needed + 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 + +### +### DEPENDENCIES - DOCKER +### +- name: MOLECULE | VERIFY | DOCKER + tags: + - install_docker + - role_dependency_needed + vars: + verify_package_name_docker: 'docker' + verify_package_name_docker_ce: 'docker-ce' + verify_package_name_docker_compose: 'docker-compose' + verify_package_name_docker_compose_plugin: 'docker-compose-plugin' + block: + - name: MOLECULE | VERIFY | DOCKER | Is installed. + ansible.builtin.debug: + msg: "Package: 'docker' is installed" + failed_when: + - verify_package_name_docker not in ansible_facts.packages + - verify_package_name_docker_ce not in ansible_facts.packages + when: docker_set_to_install | bool + + - name: MOLECULE | VERIFY | DOCKER | docker-compose is installed. + ansible.builtin.debug: + msg: "Package: 'docker-cokmpose' is installed" + failed_when: + - verify_package_name_docker_compose not in ansible_facts.packages + - verify_package_name_docker_compose_plugin not in ansible_facts.packages + when: docker_set_to_install | bool + + - name: MOLECULE | VERIFY | DOCKER | Get docker service state. + ansible.builtin.systemd: + name: "docker" + register: docker_service + when: docker_set_to_install | bool + + - name: MOLECULE | VERIFY | DOCKER | Check that docker is running. + ansible.builtin.debug: + msg: "Docker IS running..." + failed_when: "'active' != docker_service.status.ActiveState" + when: docker_set_to_install | bool + +### +### DEPENDENCIES - DOCKER USERS +### +- name: MOLECULE | VERIFY | USER + tags: + - install_docker_users + - role_dependency_needed + block: + - name: MOLECULE | VERIFY | USER | Get added users infos. + ansible.builtin.user: + name: "{{ item }}" + loop: "{{ docker_users }}" + check_mode: true + register: test_users + + - name: MOLECULE | VERIFY | USER | 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 | USER | 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 | USER | 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" + +### +### CLONE REPOSITORIES +### +- name: MOLECULE | VERIFY | REPOSITORY + tags: + - clone_repositories + - role_dependency_needed + block: + - name: MOLECULE | VERIFY | REPOSITORY | Get if the repository was cloned. + ansible.builtin.git: + repo: "{{ c3infodesk_deployment_repository_url }}" + dest: "{{ c3infodesk_deployment_repository_dest_folder }}" + version: main + clone: false + update: false + register: check_repository + + - name: MOLECULE | VERIFY | REPOSITORY | Checking if the repository was cloned. + ansible.builtin.debug: + msg: "Repository: '{{ c3infodesk_deployment_repository_url }}' cloned..." + failed_when: check_repository.changed | bool + +### +### DOCKER IMAGES +### +- name: MOLECULE | VERIFY | IMAGES | Check if the Docker images are on the system. + tags: build_images + community.docker.docker_image_info: + name: "{{ item.docker_image_name }}" + with_items: "{{ c3infodesk_deployment_docker_images_list }}"