commit 5861055c1567b0bd9d733975d70397422b726440 Author: Chris Hammer Date: Mon Feb 5 16:28:05 2024 -0500 initial project commit diff --git a/.ansible-lint b/.ansible-lint new file mode 100644 index 0000000..b6d3809 --- /dev/null +++ b/.ansible-lint @@ -0,0 +1,5 @@ +skip_list: + - yaml[colons] + - yaml[empty-lines] + - yaml[line-length] + - no-changed-when diff --git a/.dont_use_requirements.yml b/.dont_use_requirements.yml new file mode 100644 index 0000000..96e3ef7 --- /dev/null +++ b/.dont_use_requirements.yml @@ -0,0 +1,16 @@ +--- +collections: + # RedHat COP - infra.lvm_snapshots + # - name: infra.lvm_snapshots + # source: https://github.com/redhat-cop/infra.lvm_snapshots.git + # type: git + # version: main + + + # Galaxy Collections + - name: community.general + - name: ansible.posix + - name: infra.lvm_snapshots + + +... diff --git a/.drone.env b/.drone.env new file mode 100644 index 0000000..b73834f --- /dev/null +++ b/.drone.env @@ -0,0 +1,3 @@ +export ANSIBLE_LINT_EXCLUSION="--exclude collections/ansible_collections --exclude .gitea" +export ANSIBLE_INVENTORY="-i 127.0.0.1, --connection=local" +export ANSIBLE_PLAYBOOK="shrink_lv.yml" diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..ad4e45d --- /dev/null +++ b/.drone.yml @@ -0,0 +1,154 @@ +--- +kind: pipeline +type: docker +name: CentOS_9-Ansible-Pipeline + +trigger: + branch: + exclude: + - main + event: [push] + +steps: + - name: ansible_environment_verify + image: gitea.thezengarden.net/podman/ansible-dev/centos9:release + commands: + - . ./.drone.env + - env + - git log -1 + - ansible --version + - ansible-lint --version + + - name: ansible_galaxy_requirements + image: gitea.thezengarden.net/podman/ansible-dev/centos9:release + commands: + - ansible-galaxy install -r requirements.yml + + - name: ansible_lint + image: gitea.thezengarden.net/podman/ansible-dev/centos9:release + commands: + - . ./.drone.env + - ansible-lint --offline $ANSIBLE_LINT_EXCLUSION + + - name: ansible_playbook_execution + image: gitea.thezengarden.net/podman/ansible-dev/centos9:release + commands: + - . ./.drone.env + - ansible-playbook -v $ANSIBLE_INVENTORY $ANSIBLE_PLAYBOOK + + +--- +kind: pipeline +type: docker +name: Fedora_39-Ansible-Pipeline + +trigger: + branch: + exclude: + - main + event: [push] + +steps: + - name: ansible_environment_verify + image: gitea.thezengarden.net/podman/ansible-dev/fedora39:release + commands: + - . ./.drone.env + - env + - git log -1 + - ansible --version + - ansible-lint --version + + - name: ansible_galaxy_requirements + image: gitea.thezengarden.net/podman/ansible-dev/fedora39:release + commands: + - ansible-galaxy install -r requirements.yml + + - name: ansible_lint + image: gitea.thezengarden.net/podman/ansible-dev/fedora39:release + commands: + - . ./.drone.env + - ansible-lint --offline $ANSIBLE_LINT_EXCLUSION + + - name: ansible_playbook_execution + image: gitea.thezengarden.net/podman/ansible-dev/fedora39:release + commands: + - . ./.drone.env + - ansible-playbook -v $ANSIBLE_INVENTORY $ANSIBLE_PLAYBOOK + + +--- +kind: pipeline +type: docker +name: Debian_11-Ansible-Pipeline + +trigger: + branch: + exclude: + - main + event: [push] + +steps: + - name: ansible_environment_verify + image: gitea.thezengarden.net/podman/ansible-dev/debian11:release + commands: + - . ./.drone.env + - env + - git log -1 + - ansible --version + - ansible-lint --version + + - name: ansible_galaxy_requirements + image: gitea.thezengarden.net/podman/ansible-dev/debian11:release + commands: + - ansible-galaxy install -r requirements.yml + + - name: ansible_lint + image: gitea.thezengarden.net/podman/ansible-dev/debian11:release + commands: + - . ./.drone.env + - ansible-lint --offline $ANSIBLE_LINT_EXCLUSION + + - name: ansible_playbook_execution + image: gitea.thezengarden.net/podman/ansible-dev/debian11:release + commands: + - . ./.drone.env + - ansible-playbook -v $ANSIBLE_INVENTORY $ANSIBLE_PLAYBOOK + + +--- +kind: pipeline +type: docker +name: Debian_12-Ansible-Pipeline + +trigger: + branch: + exclude: + - main + event: [push] + +steps: + - name: ansible_environment_verify + image: gitea.thezengarden.net/podman/ansible-dev/debian12:release + commands: + - . ./.drone.env + - env + - git log -1 + - ansible --version + - ansible-lint --version + + - name: ansible_galaxy_requirements + image: gitea.thezengarden.net/podman/ansible-dev/debian12:release + commands: + - ansible-galaxy install -r requirements.yml + + - name: ansible_lint + image: gitea.thezengarden.net/podman/ansible-dev/debian12:release + commands: + - . ./.drone.env + - ansible-lint --offline $ANSIBLE_LINT_EXCLUSION + + - name: ansible_playbook_execution + image: gitea.thezengarden.net/podman/ansible-dev/debian12:release + commands: + - . ./.drone.env + - ansible-playbook -v $ANSIBLE_INVENTORY $ANSIBLE_PLAYBOOK diff --git a/.gitea/workflows/ansible-test.yml b/.gitea/workflows/ansible-test.yml new file mode 100644 index 0000000..bfe19da --- /dev/null +++ b/.gitea/workflows/ansible-test.yml @@ -0,0 +1,38 @@ +name: Ansible Code Pipeline +run-name: ${{ gitea.actor }} is running Ansible Code Pipeline +on: + push: + branches: + - testing + +jobs: + Ansible-Development-Pipeline: + strategy: + matrix: + os: [ ansible-dev-centos9, ansible-dev-fedora39, ansible-dev-debian11, ansible-dev-debian12 ] + runs-on: ${{ matrix.os }} + steps: + - name: Clone repository + uses: actions/checkout@v3 + + - name: Ansible Environment Verify + run: | + . ./.drone.env + env + git log -1 + ansible --version + ansible-lint --version + + # - name: Install Ansible Galaxy Dependencies + # run: | + # ansible-galaxy install -r requirements.yml + + - name: Run Ansible-Lint + run: | + . ./.drone.env + ansible-lint --offline $ANSIBLE_LINT_EXCLUSION + + # - name: Run Ansible-Playbook + # run: | + # . ./.drone.env + # ansible-playbook -v $ANSIBLE_INVENTORY $ANSIBLE_PLAYBOOK diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bbb129d --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +inventory/* + diff --git a/ansible.cfg b/ansible.cfg new file mode 100644 index 0000000..d58a63d --- /dev/null +++ b/ansible.cfg @@ -0,0 +1,26 @@ +[defaults] +inventory = inventory/hosts +roles_path = roles +collections_path = collections +remote_tmp = /tmp/.ansible-${USER}/tmp +gathering = smart +gather_timeout = 600 +fact_caching = jsonfile +fact_caching_connection = /tmp/.ansible_facts +fact_caching_timeout = 300 +retry_files_enabled = false +forks = 40 +timeout = 30 +host_key_checking = false +display_skipped_hosts = false +deprecation_warnings = false + +# callback_whitelist is deprecated +# we only include here for backwards compatibility +callback_whitelist = ansible.posix.profile_tasks, ansible.posix.timer +callbacks_enabled = ansible.posix.profile_tasks, ansible.posix.timer + +[ssh_connection] +pipelining = True +ssh_args = -o ControlMaster=auto -o ControlPersist=60s -o PreferredAuthentications=publickey + diff --git a/bigboot.yml b/bigboot.yml new file mode 100644 index 0000000..9257183 --- /dev/null +++ b/bigboot.yml @@ -0,0 +1,16 @@ +--- +- name: Use bigboot role + hosts: bigboot + become: true + gather_facts: true + + + vars: + bigboot_size: 500M + + + roles: + - infra.lvm_snapshots.bigboot + + +... diff --git a/check-device.yml b/check-device.yml new file mode 100644 index 0000000..5e22978 --- /dev/null +++ b/check-device.yml @@ -0,0 +1,17 @@ +--- +- name: Get Mounts + hosts: all + become: true + gather_facts: false + + + vars: + # bigboot_boot_device_partition_prefix: "{{ bigboot_boot_partition_name[(bigboot_boot_disk | length) : -1] }}" + bigboot_device: "/dev/sda1" + bigboot_prefix: "{{ (bigboot_device | length) : -1 }}" + + + tasks: + - name: Debug bigboot_prefix + ansible.builtin.debug: + var: bigboot_prefix diff --git a/collections/ansible_collections/ansible.posix-1.5.4.info/GALAXY.yml b/collections/ansible_collections/ansible.posix-1.5.4.info/GALAXY.yml new file mode 100644 index 0000000..0c4f142 --- /dev/null +++ b/collections/ansible_collections/ansible.posix-1.5.4.info/GALAXY.yml @@ -0,0 +1,8 @@ +download_url: https://galaxy.ansible.com/api/v3/plugin/ansible/content/published/collections/artifacts/ansible-posix-1.5.4.tar.gz +format_version: 1.0.0 +name: posix +namespace: ansible +server: https://galaxy.ansible.com/api/ +signatures: [] +version: 1.5.4 +version_url: /api/v3/plugin/ansible/content/published/collections/index/ansible/posix/versions/1.5.4/ diff --git a/collections/ansible_collections/ansible/posix/.azure-pipelines/README.md b/collections/ansible_collections/ansible/posix/.azure-pipelines/README.md new file mode 100644 index 0000000..385e70b --- /dev/null +++ b/collections/ansible_collections/ansible/posix/.azure-pipelines/README.md @@ -0,0 +1,3 @@ +## Azure Pipelines Configuration + +Please see the [Documentation](https://github.com/ansible/community/wiki/Testing:-Azure-Pipelines) for more information. diff --git a/collections/ansible_collections/ansible/posix/.azure-pipelines/azure-pipelines.yml b/collections/ansible_collections/ansible/posix/.azure-pipelines/azure-pipelines.yml new file mode 100644 index 0000000..7b352f5 --- /dev/null +++ b/collections/ansible_collections/ansible/posix/.azure-pipelines/azure-pipelines.yml @@ -0,0 +1,367 @@ +trigger: + batch: true + branches: + include: + - main + - stable-* + +pr: + autoCancel: true + branches: + include: + - main + - stable-* + +schedules: + - cron: 0 9 * * * + displayName: Nightly + always: true + branches: + include: + - main + - stable-* + +variables: + - name: checkoutPath + value: ansible_collections/ansible/posix + - name: coverageBranches + value: main + - name: pipelinesCoverage + value: coverage + - name: entryPoint + value: tests/utils/shippable/shippable.sh + - name: fetchDepth + value: 0 + +resources: + containers: + - container: default + image: quay.io/ansible/azure-pipelines-test-container:3.0.0 + +pool: Standard + +stages: + +## Docker + - stage: Docker_devel + displayName: Docker devel + dependsOn: [] + jobs: + - template: templates/matrix.yml + parameters: + testFormat: devel/linux/{0}/1 + targets: + - name: CentOS 7 + test: centos7 + - name: Fedora 37 + test: fedora37 + - name: openSUSE 15 py3 + test: opensuse15 + - name: Ubuntu 20.04 + test: ubuntu2004 + - name: Ubuntu 22.04 + test: ubuntu2204 + - stage: Docker_2_15 + displayName: Docker 2.15 + dependsOn: [] + jobs: + - template: templates/matrix.yml + parameters: + testFormat: 2.15/linux/{0}/1 + targets: + - name: CentOS 7 + test: centos7 + - name: Fedora 37 + test: fedora37 + - name: openSUSE 15 py3 + test: opensuse15 + - name: Ubuntu 20.04 + test: ubuntu2004 + - name: Ubuntu 22.04 + test: ubuntu2204 + - stage: Docker_2_14 + displayName: Docker 2.14 + dependsOn: [] + jobs: + - template: templates/matrix.yml + parameters: + testFormat: 2.14/linux/{0}/1 + targets: + - name: CentOS 7 + test: centos7 + - name: Fedora 36 + test: fedora36 + - name: openSUSE 15 py3 + test: opensuse15 + - name: Ubuntu 20.04 + test: ubuntu2004 + - name: Ubuntu 22.04 + test: ubuntu2204 + - stage: Docker_2_13 + displayName: Docker 2.13 + dependsOn: [] + jobs: + - template: templates/matrix.yml + parameters: + testFormat: 2.13/linux/{0}/1 + targets: + - name: CentOS 7 + test: centos7 + - name: Fedora 34 + test: fedora34 + - name: Fedora 35 + test: fedora35 + - name: openSUSE 15 py3 + test: opensuse15 + - name: Ubuntu 18.04 + test: ubuntu1804 + - name: Ubuntu 20.04 + test: ubuntu2004 + - stage: Docker_2_12 + displayName: Docker 2.12 + dependsOn: [] + jobs: + - template: templates/matrix.yml + parameters: + testFormat: 2.12/linux/{0}/1 + targets: + - name: CentOS 6 + test: centos6 + - name: CentOS 7 + test: centos7 + - name: Fedora 33 + test: fedora33 + - name: Fedora 34 + test: fedora34 + - name: openSUSE 15 py2 + test: opensuse15py2 + - name: openSUSE 15 py3 + test: opensuse15 + - name: Ubuntu 18.04 + test: ubuntu1804 + - name: Ubuntu 20.04 + test: ubuntu2004 + - stage: Docker_2_11 + displayName: Docker 2.11 + dependsOn: [] + jobs: + - template: templates/matrix.yml + parameters: + testFormat: 2.11/linux/{0}/1 + targets: + - name: CentOS 6 + test: centos6 + - name: CentOS 7 + test: centos7 + - name: openSUSE 15 py2 + test: opensuse15py2 + - name: openSUSE 15 py3 + test: opensuse15 + - name: Ubuntu 18.04 + test: ubuntu1804 + - stage: Docker_2_10 + displayName: Docker 2.10 + dependsOn: [] + jobs: + - template: templates/matrix.yml + parameters: + testFormat: 2.10/linux/{0}/1 + targets: + - name: CentOS 6 + test: centos6 + - name: CentOS 7 + test: centos7 + - name: openSUSE 15 py2 + test: opensuse15py2 + - name: openSUSE 15 py3 + test: opensuse15 + - name: Ubuntu 16.04 + test: ubuntu1604 + - name: Ubuntu 18.04 + test: ubuntu1804 + - stage: Docker_2_9 + displayName: Docker 2.9 + dependsOn: [] + jobs: + - template: templates/matrix.yml + parameters: + testFormat: 2.9/linux/{0}/1 + targets: + - name: CentOS 6 + test: centos6 + - name: CentOS 7 + test: centos7 + - name: openSUSE 15 py2 + test: opensuse15py2 + - name: openSUSE 15 py3 + test: opensuse15 + - name: Ubuntu 16.04 + test: ubuntu1604 + - name: Ubuntu 18.04 + test: ubuntu1804 + +## Remote + - stage: Remote_devel + displayName: Remote devel + dependsOn: [] + jobs: + - template: templates/matrix.yml + parameters: + testFormat: devel/{0}/1 + targets: + - name: MacOS 13.2 + test: macos/13.2 + - name: RHEL 7.9 + test: rhel/7.9 + - name: RHEL 8.7 + test: rhel/8.7 + - name: RHEL 9.1 + test: rhel/9.1 + - name: FreeBSD 12.4 + test: freebsd/12.4 + - name: FreeBSD 13.1 + test: freebsd/13.1 + - stage: Remote_2_15 + displayName: Remote 2.15 + dependsOn: [] + jobs: + - template: templates/matrix.yml + parameters: + testFormat: 2.15/{0}/1 + targets: + - name: MacOS 13.2 + test: macos/13.2 + - name: RHEL 7.9 + test: rhel/7.9 + - name: RHEL 8.7 + test: rhel/8.7 + - name: RHEL 9.1 + test: rhel/9.1 + - name: FreeBSD 12.4 + test: freebsd/12.4 + - name: FreeBSD 13.1 + test: freebsd/13.1 + - stage: Remote_2_14 + displayName: Remote 2.14 + dependsOn: [] + jobs: + - template: templates/matrix.yml + parameters: + testFormat: 2.14/{0}/1 + targets: + - name: MacOS 12.0 + test: macos/12.0 + - name: RHEL 7.9 + test: rhel/7.9 + - name: RHEL 8.6 + test: rhel/8.6 + - name: RHEL 9.0 + test: rhel/9.0 + - name: FreeBSD 12.3 + test: freebsd/12.3 + - name: FreeBSD 13.1 + test: freebsd/13.1 + - stage: Remote_2_13 + displayName: Remote 2.13 + dependsOn: [] + jobs: + - template: templates/matrix.yml + parameters: + testFormat: 2.13/{0}/1 + targets: + - name: MacOS 12.0 + test: macos/12.0 + - name: RHEL 7.9 + test: rhel/7.9 + - name: RHEL 8.5 + test: rhel/8.5 + - name: FreeBSD 12.3 + test: freebsd/12.3 + - name: FreeBSD 13.0 + test: freebsd/13.0 + - stage: Remote_2_12 + displayName: Remote 2.12 + dependsOn: [] + jobs: + - template: templates/matrix.yml + parameters: + testFormat: 2.12/{0}/1 + targets: + - name: MacOS 11.1 + test: macos/11.1 + - name: RHEL 7.9 + test: rhel/7.9 + - name: RHEL 8.4 + test: rhel/8.4 + - name: FreeBSD 12.2 + test: freebsd/12.2 + - name: FreeBSD 13.0 + test: freebsd/13.0 + - stage: Remote_2_11 + displayName: Remote 2.11 + dependsOn: [] + jobs: + - template: templates/matrix.yml + parameters: + testFormat: 2.11/{0}/1 + targets: + - name: MacOS 11.1 + test: macos/11.1 + - name: RHEL 7.9 + test: rhel/7.9 + - name: RHEL 8.3 + test: rhel/8.3 + - name: FreeBSD 12.2 + test: freebsd/12.2 + - stage: Remote_2_10 + displayName: Remote 2.10 + dependsOn: [] + jobs: + - template: templates/matrix.yml + parameters: + testFormat: 2.10/{0}/1 + targets: + - name: OS X 10.11 + test: osx/10.11 + - name: RHEL 7.9 + test: rhel/7.9 + - name: RHEL 8.2 + test: rhel/8.2 + - stage: Remote_2_9 + displayName: Remote 2.9 + dependsOn: [] + jobs: + - template: templates/matrix.yml + parameters: + testFormat: 2.9/{0}/1 + targets: + - name: OS X 10.11 + test: osx/10.11 + - name: RHEL 7.9 + test: rhel/7.9 + - name: RHEL 8.1 + test: rhel/8.1 + +## Finally + + - stage: Summary + condition: succeededOrFailed() + dependsOn: + - Remote_2_9 + - Docker_2_9 + - Remote_2_10 + - Docker_2_10 + - Remote_2_11 + - Docker_2_11 + - Remote_2_12 + - Docker_2_12 + - Remote_2_13 + - Docker_2_13 + - Remote_2_14 + - Docker_2_14 + - Remote_2_15 + - Docker_2_15 + - Remote_devel + - Docker_devel + jobs: + - template: templates/coverage.yml diff --git a/collections/ansible_collections/ansible/posix/.azure-pipelines/scripts/aggregate-coverage.sh b/collections/ansible_collections/ansible/posix/.azure-pipelines/scripts/aggregate-coverage.sh new file mode 100755 index 0000000..f3113dd --- /dev/null +++ b/collections/ansible_collections/ansible/posix/.azure-pipelines/scripts/aggregate-coverage.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +# Aggregate code coverage results for later processing. + +set -o pipefail -eu + +agent_temp_directory="$1" + +PATH="${PWD}/bin:${PATH}" + +mkdir "${agent_temp_directory}/coverage/" + +options=(--venv --venv-system-site-packages --color -v) + +ansible-test coverage combine --export "${agent_temp_directory}/coverage/" "${options[@]}" + +if ansible-test coverage analyze targets generate --help >/dev/null 2>&1; then + # Only analyze coverage if the installed version of ansible-test supports it. + # Doing so allows this script to work unmodified for multiple Ansible versions. + ansible-test coverage analyze targets generate "${agent_temp_directory}/coverage/coverage-analyze-targets.json" "${options[@]}" +fi diff --git a/collections/ansible_collections/ansible/posix/.azure-pipelines/scripts/combine-coverage.py b/collections/ansible_collections/ansible/posix/.azure-pipelines/scripts/combine-coverage.py new file mode 100755 index 0000000..506ade6 --- /dev/null +++ b/collections/ansible_collections/ansible/posix/.azure-pipelines/scripts/combine-coverage.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python +""" +Combine coverage data from multiple jobs, keeping the data only from the most recent attempt from each job. +Coverage artifacts must be named using the format: "Coverage $(System.JobAttempt) {StableUniqueNameForEachJob}" +The recommended coverage artifact name format is: Coverage $(System.JobAttempt) $(System.StageDisplayName) $(System.JobDisplayName) +Keep in mind that Azure Pipelines does not enforce unique job display names (only names). +It is up to pipeline authors to avoid name collisions when deviating from the recommended format. +""" + +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +import os +import re +import shutil +import sys + + +def main(): + """Main program entry point.""" + source_directory = sys.argv[1] + + if '/ansible_collections/' in os.getcwd(): + output_path = "tests/output" + else: + output_path = "test/results" + + destination_directory = os.path.join(output_path, 'coverage') + + if not os.path.exists(destination_directory): + os.makedirs(destination_directory) + + jobs = {} + count = 0 + + for name in os.listdir(source_directory): + match = re.search('^Coverage (?P[0-9]+) (?P