diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fd405c8fc195550b27132347b0316323f971cb3d..0332b7e19a986348b04908cac512bba280d00af3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -15,7 +15,7 @@ variables: ### stages: - yamllint - - upstream-trigger + - downstream-trigger ### ### SCRIPTS @@ -44,7 +44,7 @@ yamllint-test: - yamllint . trigger-pipeline: - stage: upstream-trigger + stage: downstream-trigger variables: RUN_UPSTREAM_FOR_ROLE_DEPENDENCIES: true trigger: diff --git a/meta/main.yml b/meta/main.yml index 7253701e3d4d695aaf4b195a0766c07dc8ed22d9..f9ffad06a56df78508e578b177431e661bab0282 100644 --- a/meta/main.yml +++ b/meta/main.yml @@ -7,7 +7,6 @@ galaxy_info: company: cccv.de license: "MIT / BSD" min_ansible_version: '2.10' - # galaxy_tags: [] galaxy_tags: - dependency - dependencies diff --git a/molecule/default/converge.yml b/molecule/default/converge.yml index 331edd3c74f13bdfecbe88aabe11b576775ede47..9bedee55f0b2807f075ea67edc8db2ef4ca76375 100644 --- a/molecule/default/converge.yml +++ b/molecule/default/converge.yml @@ -2,43 +2,13 @@ - name: MOLECULE | 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 | COVERGE | PRE-TASKS | VARIABLES | From -> ../../vars - ansible.builtin.include_vars: - dir: ../../vars - 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 | Import pre-tasks... + tags: import_pre_tasks + ansible.builtin.import_tasks: pre_tasks.yml tasks: - name: MOLECULE | CONVERGE | TASKS | Call the 'dependencies' role. + tags: execute_role ansible.builtin.include_role: name: c3infodesk-deployment-role-dependencies diff --git a/molecule/default/pre_tasks.yml b/molecule/default/pre_tasks.yml new file mode 100644 index 0000000000000000000000000000000000000000..eabb95ab126df6224ff6e733b2b5064e591b61a7 --- /dev/null +++ b/molecule/default/pre_tasks.yml @@ -0,0 +1,41 @@ +--- +# 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 -> ../../vars + ansible.builtin.include_vars: + dir: ../../vars + depth: 1 + extensions: + - 'yml' + + ### This should be parsed also by calling the 'molecule test' command --> HOST_VAR_FILE_NAME="example_buttons.yml" molecule test + - 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 diff --git a/molecule/default/verify.yml b/molecule/default/verify.yml index 444b567933d75dad3c217d5d37ec4ac429741728..cb336c40656b0ed5a65ca873081ba5727f1978b0 100644 --- a/molecule/default/verify.yml +++ b/molecule/default/verify.yml @@ -1,118 +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 | VERIFY | PRE-TASKS | VARIABLES | From -> ../../defaults - ansible.builtin.include_vars: - dir: ../../defaults - depth: 1 - extensions: - - 'yml' - - - name: MOLECULE | VERIFY | PRE-TASKS | VARIABLES | From -> ../../vars - ansible.builtin.include_vars: - dir: ../../vars - depth: 1 - extensions: - - 'yml' - - ### This should be parsed also by calling the 'molecule test' command --> HOST_VAR_FILE_NAME="example_buttons.yml" molecule test - - 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 | POPULATE + tags: import_verify_populate + ansible.builtin.import_tasks: verify_populate.yml - - 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" + - 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..5b408fe178e21b3826d71faeb8b1d7952ff41786 --- /dev/null +++ b/molecule/default/verify_tasks.yml @@ -0,0 +1,88 @@ +--- +# This is the tasks to be runned from the verify.yml file + +### +### PACKAGES +### +- name: MOLECULE | VERIFY | PACKAGES | Check that the packages from 'os_dependencies_packages' are installed. + tags: install_packages + 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 + +### +### DOCKER +### +- name: MOLECULE | VERIFY | DOCKER + tags: install_docker + 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 + +### +### DOCKER USERS +### +- name: MOLECULE | VERIFY | USER + tags: install_docker_users + 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" diff --git a/tasks/main.yml b/tasks/main.yml index e8715f9e1603b5c1e95158dc483e6a9a2e55f55c..d24ca15779f84463e309865d90d188e4dc80d981 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -2,15 +2,18 @@ # tasks file for dependencies - name: Importing the 'install_packages.yml' tasks + tags: packages_install ansible.builtin.import_tasks: install_packages.yml - name: Get docker service state. + tags: docker_install ansible.builtin.systemd: name: "docker" register: docker_service when: docker_set_to_install | bool - name: Set fact if docker already installed and active. + tags: docker_install ansible.builtin.set_fact: docker_installed: true when: @@ -19,6 +22,7 @@ - "'active' == docker_service.status.ActiveState" - name: Importing the 'install_docker.yml' tasks if docker not installed. + tags: docker_install ansible.builtin.import_tasks: install_docker.yml when: - docker_set_to_install | bool