diff --git a/.ansible-lint b/.ansible-lint index 8115c55..f179ac0 100644 --- a/.ansible-lint +++ b/.ansible-lint @@ -3,6 +3,7 @@ # Ansible managed # exclude_paths: + - meta/preferences.yml - molecule/default/prepare.yml - molecule/default/converge.yml - molecule/default/verify.yml diff --git a/.github/workflows/molecule.yml b/.github/workflows/molecule.yml index dec75d8..84f325a 100644 --- a/.github/workflows/molecule.yml +++ b/.github/workflows/molecule.yml @@ -21,10 +21,13 @@ jobs: uses: actions/checkout@v4 - name: ansible-lint uses: ansible-community/ansible-lint-action@main - test: + + python-3-9: needs: - lint runs-on: ubuntu-20.04 + container: + image: python:3.9 strategy: fail-fast: false matrix: @@ -33,8 +36,6 @@ jobs: tag: "latest" - image: "amazonlinux" tag: "latest" - - image: "enterpriselinux" - tag: "8" - image: "enterpriselinux" tag: "latest" - image: "debian" @@ -47,8 +48,52 @@ jobs: tag: "latest" - image: "fedora" tag: "rawhide" - - image: "opensuse" + - image: "ubuntu" + tag: "latest" + - image: "ubuntu" + tag: "jammy" + - image: "ubuntu" + tag: "focal" + steps: + - name: checkout + uses: actions/checkout@v4 + + - name: molecule + run: | + apt-get update -qq + apt-get -y -qq install yamllint docker.io + pip install --no-cache-dir tox + if [ -f tox.ini ] ; then tox ; fi + if [ ! -f tox.ini ] ; then pip install -r requirements.yml ; pip install ansible-lint ansible-core ; molecule test ; fi + env: + image: ${{ matrix.config.image }} + tag: ${{ matrix.config.tag }} + python-3-10: + needs: + - lint + runs-on: ubuntu-20.04 + container: + image: python:3.10 + strategy: + fail-fast: false + matrix: + config: + - image: "alpine" + tag: "latest" + - image: "amazonlinux" + tag: "latest" + - image: "enterpriselinux" + tag: "latest" + - image: "debian" tag: "latest" + - image: "debian" + tag: "bullseye" + - image: "fedora" + tag: "39" + - image: "fedora" + tag: "latest" + - image: "fedora" + tag: "rawhide" - image: "ubuntu" tag: "latest" - image: "ubuntu" @@ -58,10 +103,14 @@ jobs: steps: - name: checkout uses: actions/checkout@v4 - with: - path: "${{ github.repository }}" + - name: molecule - uses: robertdebock/molecule-action@6.0.1 - with: + run: | + apt-get update -qq + apt-get -y -qq install yamllint docker.io + pip install --no-cache-dir tox + if [ -f tox.ini ] ; then tox ; fi + if [ ! -f tox.ini ] ; then pip install -r requirements.yml ; pip install ansible-lint ansible-core ; molecule test ; fi + env: image: ${{ matrix.config.image }} tag: ${{ matrix.config.tag }} diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 14b950a..3d3922c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,43 +1,53 @@ --- -image: "robertdebock/github-action-molecule:6.0.1" variables: - PY_COLORS: 1 + DEBIAN_FRONTEND: noninteractive molecule: + image: $python script: + - apt-get update -qq + - apt-get -y -qq install yamllint docker.io + - pip install --no-cache-dir tox - if [ -f tox.ini ] ; then tox ; fi - - if [ ! -f tox.ini ] ; then molecule test ; fi + - if [ ! -f tox.ini ] ; then pip install -r requirements.yml ; pip install ansible-lint ansible-core ; molecule test ; fi rules: - if: $CI_COMMIT_REF_NAME == "master" parallel: matrix: - image: "alpine" tag: "latest" + python: ['python:3.9', 'python:3.10'] - image: "amazonlinux" tag: "latest" - - image: "enterpriselinux" - tag: "8" + python: ['python:3.9', 'python:3.10'] - image: "enterpriselinux" tag: "latest" + python: ['python:3.9', 'python:3.10'] - image: "debian" tag: "latest" + python: ['python:3.9', 'python:3.10'] - image: "debian" tag: "bullseye" + python: ['python:3.9', 'python:3.10'] - image: "fedora" tag: "39" + python: ['python:3.9', 'python:3.10'] - image: "fedora" tag: "latest" + python: ['python:3.9', 'python:3.10'] - image: "fedora" tag: "rawhide" - - image: "opensuse" - tag: "latest" + python: ['python:3.9', 'python:3.10'] - image: "ubuntu" tag: "latest" + python: ['python:3.9', 'python:3.10'] - image: "ubuntu" tag: "jammy" + python: ['python:3.9', 'python:3.10'] - image: "ubuntu" tag: "focal" + python: ['python:3.9', 'python:3.10'] galaxy: script: diff --git a/README.md b/README.md index 812dffa..592feae 100644 --- a/README.md +++ b/README.md @@ -109,10 +109,9 @@ This role has been tested on these [container images](https://hub.docker.com/u/r |---------|----| |[Alpine](https://hub.docker.com/r/robertdebock/alpine)|all| |[Amazon](https://hub.docker.com/r/robertdebock/amazonlinux)|Candidate| -|[EL](https://hub.docker.com/r/robertdebock/enterpriselinux)|8, 9| +|[EL](https://hub.docker.com/r/robertdebock/enterpriselinux)|9| |[Debian](https://hub.docker.com/r/robertdebock/debian)|all| |[Fedora](https://hub.docker.com/r/robertdebock/fedora)|all| -|[opensuse](https://hub.docker.com/r/robertdebock/opensuse)|all| |[Ubuntu](https://hub.docker.com/r/robertdebock/ubuntu)|all| The minimum version of Ansible required is 2.12, tests have been done to: diff --git a/meta/main.yml b/meta/main.yml index 69a1d45..ed2ca8f 100644 --- a/meta/main.yml +++ b/meta/main.yml @@ -16,7 +16,6 @@ galaxy_info: - Candidate - name: EL versions: - - "8" - "9" - name: Debian versions: @@ -24,9 +23,6 @@ galaxy_info: - name: Fedora versions: - all - - name: opensuse - versions: - - all - name: Ubuntu versions: - all diff --git a/meta/preferences.yml b/meta/preferences.yml new file mode 100644 index 0000000..45cf879 --- /dev/null +++ b/meta/preferences.yml @@ -0,0 +1,7 @@ +--- + +matrix_overrides: + amazonlinux: + python: + - python:3.9 + - python:3.10 diff --git a/molecule/default/molecule.yml b/molecule/default/molecule.yml index 16c1a10..93dad79 100644 --- a/molecule/default/molecule.yml +++ b/molecule/default/molecule.yml @@ -18,7 +18,7 @@ platforms: image: "${namespace:-robertdebock}/${image:-fedora}:${tag:-latest}" command: /sbin/init volumes: - - /sys/fs/cgroup:/sys/fs/cgroup:ro + - /sys/fs/cgroup:/sys/fs/cgroup:rw privileged: true pre_build_image: true provisioner: diff --git a/requirements.txt b/requirements.txt index 65b52f4..e377941 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,3 @@ -ansible-compat == 4.* -molecule == 6.* -molecule-plugins[docker] == 23.* -ansible-lint == 6.* -paramiko == 3.* +molecule +molecule-plugins[docker] +paramiko diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..ed6d0aa --- /dev/null +++ b/tox.ini @@ -0,0 +1,48 @@ +[tox] +envlist = ansible-2.{15,16,17} +skipsdist = true + +[testenv] +commands = molecule test + +setenv = + TOX_ENVNAME={envname} + PY_COLORS=1 + ANSIBLE_FORCE_COLOR=1 + ANSIBLE_ROLES_PATH=../ + +passenv = namespace, image, tag, DOCKER_HOST + +# Test supported releases of ansible-core. See: +# https://docs.ansible.com/ansible/latest/reference_appendices/release_and_maintenance.html#ansible-core-support-matrix + +[testenv:ansible-2.15] +basepython = python3.9 +deps = + -rrequirements.txt + ansible-core==2.15.* + ansible-lint==6.* + +[testenv:ansible-2.16] +basepython = python3.10 +deps = + -rrequirements.txt + ansible-core==2.16.* + ansible-lint==24.* + +[testenv:ansible-2.17] +basepython = python3.10 +deps = + -rrequirements.txt + ansible-core==2.17.* + ansible-lint==24.* + +# Future work, not releases, just prepared. See: +# https://docs.ansible.com/ansible/devel//roadmap/ROADMAP_2_18.html +# Note: enable python3.13 in `vars/main.yml` as well. +# [testenv:ansible-2.18] +# basepython = python3.13 +# deps = +# -rrequirements.txt +# ansible-core==2.18.* +# ansible-lint==24.*