diff --git a/.gitea/workflows/test.yml b/.gitea/workflows/test.yml new file mode 100644 index 0000000..fd684f6 --- /dev/null +++ b/.gitea/workflows/test.yml @@ -0,0 +1,52 @@ +--- +name: test +on: [push] + +jobs: + lint: + name: Linting + runs-on: ubuntu-latest + container: + image: git.ednz.fr/container-factory/ansible-runner:act-latest + credentials: + username: ${{ secrets.ACTIONS_USER }} + password: ${{ secrets.ACTIONS_TOKEN }} + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: "Ansible lint" + run: ansible-lint --force-color + working-directory: ${{ gitea.workspace }} + + - name: "YAML lint" + run: yamllint . -f colored -c .yamllint + working-directory: ${{ gitea.workspace }} + + molecule-test: + name: Molecule tests + runs-on: ubuntu-latest + needs: lint + container: + image: git.ednz.fr/container-factory/ansible-runner:act-latest + credentials: + username: ${{ secrets.ACTIONS_USER }} + password: ${{ secrets.ACTIONS_TOKEN }} + strategy: + matrix: + test_os: [debian11, debian12, ubuntu2004, ubuntu2204] + scenario: [default, with_custom_packages] + env: + ANSIBLE_HOST_KEY_CHECKING: 'false' + ANSIBLE_FORCE_COLOR: 'true' + ANSIBLE_PYTHON_INTERPRETER: /usr/bin/python3 + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: "Molecule test" + run: molecule test -s ${{ matrix.scenario }} + shell: bash + working-directory: ${{ gitea.workspace }} + env: + MOLECULE_TEST_OS: ${{ matrix.test_os }} diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml deleted file mode 100644 index dd61f31..0000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1,82 +0,0 @@ ---- -stages: - - verify - - test-default - - test-with-custom-packages - -image: - name: registry.ednz.fr/forge/ansible-runner - -variables: - ANSIBLE_HOST_KEY_CHECKING: 'false' - ANSIBLE_FORCE_COLOR: 'true' - ANSIBLE_PYTHON_INTERPRETER: /usr/bin/python3 - DOCKER_AUTH_CONFIG: $CI_DOCKER_AUTH_CONFIG - -.stage-test-default: - stage: test-default - -.stage-test-with-custom-packages: - stage: test-with-custom-packages - -.variables-ubuntu-2004: - variables: - MOLECULE_TEST_OS: "ubuntu2004" - -.variables-ubuntu-2204: - variables: - MOLECULE_TEST_OS: "ubuntu2204" - -.variables-debian-11: - variables: - MOLECULE_TEST_OS: "debian11" - -.script-molecule-test-default: - script: - - molecule test - -.script-molecule-test-with-custom-packages: - script: - - molecule test -s with_custom_packages - -ansible-verify: - stage: verify - script: - - yamllint . -c .yamllint - - ansible-lint - -ansible-test-ubuntu-2004-default: - extends: - - .stage-test-default - - .variables-ubuntu-2004 - - .script-molecule-test-default - -ansible-test-ubuntu-2204-default: - extends: - - .stage-test-default - - .variables-ubuntu-2204 - - .script-molecule-test-default - -ansible-test-debian-11-default: - extends: - - .stage-test-default - - .variables-debian-11 - - .script-molecule-test-default - -ansible-test-ubuntu-2004-with-custom-packages: - extends: - - .stage-test-with-custom-packages - - .variables-ubuntu-2004 - - .script-molecule-test-with-custom-packages - -ansible-test-ubuntu-2204-with-custom-packages: - extends: - - .stage-test-with-custom-packages - - .variables-ubuntu-2204 - - .script-molecule-test-with-custom-packages - -ansible-test-debian-11-with-custom-packages: - extends: - - .stage-test-with-custom-packages - - .variables-debian-11 - - .script-molecule-test-with-custom-packages diff --git a/LICENSE b/LICENSE index 9ef042d..c9a37e5 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2017 Jeff Geerling +Copyright (c) 2017 Bertrand Lanson Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in diff --git a/README.md b/README.md index df3ac99..64991d9 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -Manage apt packages +manage_apt_packages ========= -> This repository is only a mirror. Development and testing is done on a private gitlab server. +> This repository is only a mirror. Development and testing is done on a private gitea server. This role enables you to manage packages on **debian-based** distributions. It can be used on its own , or be called by other roles the install/remove packages on demand. @@ -59,4 +59,4 @@ MIT / BSD Author Information ------------------ -This role was created by Bertrand Lanson in 2023. \ No newline at end of file +This role was created by Bertrand Lanson in 2023. diff --git a/meta/main.yml b/meta/main.yml index b320d42..a87f209 100644 --- a/meta/main.yml +++ b/meta/main.yml @@ -15,6 +15,7 @@ galaxy_info: - name: Debian versions: - bullseye + - bookworm galaxy_tags: - 'ubuntu' - 'debian' diff --git a/molecule/default/verify.yml b/molecule/default/verify.yml index 6e33435..20b37d7 100644 --- a/molecule/default/verify.yml +++ b/molecule/default/verify.yml @@ -20,12 +20,11 @@ - name: "Test: package vim" block: - - name: "Command apt list vim" - ansible.builtin.command: "apt list vim" - changed_when: false - register: apt_list_vim + - name: "Get packages facts" + ansible.builtin.package_facts: + manager: auto - name: "Verify package vim" ansible.builtin.assert: that: - - "'[installed]' in apt_list_vim.stdout" + - "'{{ ansible_facts.packages['vim'][0]['name'] }}' == 'vim'" diff --git a/molecule/with_custom_packages/molecule.yml b/molecule/with_custom_packages/molecule.yml index c641fc1..30f7b0f 100644 --- a/molecule/with_custom_packages/molecule.yml +++ b/molecule/with_custom_packages/molecule.yml @@ -20,7 +20,7 @@ provisioner: defaults: remote_tmp: /tmp/.ansible verifier: - name: testinfra + name: ansible scenario: name: with_custom_packages test_sequence: diff --git a/molecule/with_custom_packages/tests/conftest.py b/molecule/with_custom_packages/tests/conftest.py deleted file mode 100644 index f7ddb3f..0000000 --- a/molecule/with_custom_packages/tests/conftest.py +++ /dev/null @@ -1,22 +0,0 @@ -"""PyTest Fixtures.""" -from __future__ import absolute_import - -import os - -import pytest - - -def pytest_runtest_setup(item): - """Run tests only when under molecule with testinfra installed.""" - try: - import testinfra - except ImportError: - pytest.skip("Test requires testinfra", allow_module_level=True) - if "MOLECULE_INVENTORY_FILE" in os.environ: - pytest.testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner( - os.environ["MOLECULE_INVENTORY_FILE"] - ).get_hosts("all") - else: - pytest.skip( - "Test should run only from inside molecule.", allow_module_level=True - ) diff --git a/molecule/with_custom_packages/tests/test_default.py b/molecule/with_custom_packages/tests/test_default.py deleted file mode 100644 index ce663ef..0000000 --- a/molecule/with_custom_packages/tests/test_default.py +++ /dev/null @@ -1,19 +0,0 @@ -"""Role testing files using testinfra.""" - - -def test_hosts_file(host): - """Validate /etc/hosts file.""" - etc_hosts = host.file("/etc/hosts") - assert etc_hosts.exists - assert etc_hosts.user == "root" - assert etc_hosts.group == "root" - -def test_packages_is_installed(host): - """Validate mariadb-server, apache2 and consul are installed""" - apt_package_mariadb = host.package("mariadb-server") - apt_package_apache2 = host.package("apache2") - apt_package_consul = host.package("consul") - assert apt_package_mariadb.is_installed - assert apt_package_apache2.is_installed - assert apt_package_consul.is_installed - assert apt_package_consul.version == "1.13.1-1" diff --git a/molecule/with_custom_packages/verify.yml b/molecule/with_custom_packages/verify.yml index d6fca88..87c4f3c 100644 --- a/molecule/with_custom_packages/verify.yml +++ b/molecule/with_custom_packages/verify.yml @@ -18,30 +18,16 @@ - stat_etc_hosts.stat.pw_name == 'root' - stat_etc_hosts.stat.gr_name == 'root' - - name: "Test: package mariadb-server, apache2, consul:1.13.1-1" + - name: "Test: packages mariadb-server, apache2, consul:1.13.1-1" block: - - name: "Command apt list mariadb-server" - ansible.builtin.command: "apt list mariadb-server" - changed_when: false - register: apt_list_mariadb_server + - name: "Get packages facts" + ansible.builtin.package_facts: + manager: auto - - name: "Command apt list apache2" - ansible.builtin.command: "apt list apache2" - changed_when: false - register: apt_list_apache2 - - - name: "Command apt list consul" - ansible.builtin.command: "apt-cache policy consul" - changed_when: false - register: apt_cache_policy_consul - - - name: "Debug" - vars: - consul_yaml: "{{ (apt_cache_policy_consul.stdout|to_yaml|from_yaml) }}" - ansible.builtin.debug: - msg: "{{ consul_yaml|to_yaml }}" - - - name: "Verify package vim" + - name: "Verify packages mariadb-server, apache2, consul:1.13.1-1" ansible.builtin.assert: that: - - "'[installed]' in apt_list_vim.stdout" + - "'{{ ansible_facts.packages['mariadb-server'][0]['name'] }}' == 'mariadb-server'" + - "'{{ ansible_facts.packages['apache2'][0]['name'] }}' == 'apache2'" + - "'{{ ansible_facts.packages['consul'][0]['name'] }}' == 'consul'" + - "'{{ ansible_facts.packages['consul'][0]['version'] }}' == '1.13.1-1'"