{"id":31733540,"url":"https://github.com/fs1n/awx-ee","last_synced_at":"2026-04-17T06:32:40.220Z","repository":{"id":305678056,"uuid":"1023590144","full_name":"fs1n/awx-ee","owner":"fs1n","description":"An Ansible execution environment for AWX - VMWare Enhanced Fork","archived":false,"fork":false,"pushed_at":"2025-09-12T12:46:17.000Z","size":186,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-09T08:27:42.430Z","etag":null,"topics":["ansible","ansible-ee","ansible-project","automation","awx","awx-ansible","awx-containers","awx-github","vmware","vmware-automation"],"latest_commit_sha":null,"homepage":"https://github.com/fs1n/awx-ee/releases","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"ansible/awx-ee","license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fs1n.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-21T11:46:14.000Z","updated_at":"2025-09-12T12:46:18.000Z","dependencies_parsed_at":"2025-08-20T11:31:26.687Z","dependency_job_id":"79100055-6554-4004-aae5-9485bf24708e","html_url":"https://github.com/fs1n/awx-ee","commit_stats":null,"previous_names":["fs1n/awx-ee"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/fs1n/awx-ee","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fs1n%2Fawx-ee","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fs1n%2Fawx-ee/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fs1n%2Fawx-ee/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fs1n%2Fawx-ee/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fs1n","download_url":"https://codeload.github.com/fs1n/awx-ee/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fs1n%2Fawx-ee/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31918479,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T18:22:33.417Z","status":"online","status_checked_at":"2026-04-17T02:00:06.879Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansible","ansible-ee","ansible-project","automation","awx","awx-ansible","awx-containers","awx-github","vmware","vmware-automation"],"created_at":"2025-10-09T08:27:41.248Z","updated_at":"2026-04-17T06:32:40.191Z","avatar_url":"https://github.com/fs1n.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AWX EE – VMware Enhanced Fork\n\n[![DeepWiki Documentation](https://deepwiki.com/badge.svg)](https://deepwiki.com/fs1n/awx-ee)\n\nThis repository is a fork of the default [AWX execution environment](https://github.com/ansible/awx-ee), enhanced for VMware automation workflows. It replaces the deprecated `community.vmware` collection and integrates the official VMware SDKs and dependencies.\n\n## Table of Contents\n\n- [Features](#features)\n- [Prerequisites](#prerequisites)\n- [Usage](#usage)\n  - [Using with AWX](#using-with-awx)\n  - [Using with AWX Operator](#using-with-awx-operator)\n  - [Using with Ansible Navigator](#using-with-ansible-navigator)\n- [VMware Collections and Capabilities](#vmware-collections-and-capabilities)\n- [Examples](#examples)\n- [Development](#development)\n  - [Prerequisites](#development-prerequisites)\n  - [Building Locally](#building-locally)\n  - [Testing](#testing)\n  - [Contributing](#contributing)\n- [License](#license)\n\n## Features\n\nThis enhanced execution environment provides:\n\n- **Official VMware SDKs**: Includes `vsphere-automation-sdk-python`, `pyvmomi`, and `vcf-sdk`\n- **Modern VMware Collections**: Both `community.vmware` and official `vmware.vmware` collections\n- **VMware vSphere REST API**: Support via `vmware.vmware_rest` collection\n- **Enhanced Dependencies**: All necessary Python packages for VMware automation\n- **Multi-Cloud Support**: Includes collections for Azure, AWS, Google Cloud, and OpenStack\n- **Container Runtime**: Podman-remote support for containerized workflows\n- **Python 3.11**: Modern Python runtime with latest features and performance improvements\n- **Industry-Standard Testing**: Comprehensive CI/CD pipeline with security scanning and validation\n- **Automated Quality Assurance**: Every change is validated through automated testing\n\n## Prerequisites\n\n- Container runtime (Podman or Docker)\n- AWX, AWX Operator, or Ansible Navigator\n- Access to VMware vCenter/ESXi infrastructure\n- Valid VMware credentials\n\n## Usage\n\n### Using with AWX\n\n1. **Add the Execution Environment** in AWX:\n   - Navigate to **Administration** → **Execution Environments**\n   - Click **Add** and configure:\n     - **Name**: `VMware Enhanced EE`\n     - **Image**: `ghcr.io/fs1n/awx-ee:latest`\n     - **Registry credential**: Configure if using private registry\n\n2. **Configure Job Templates**:\n   - When creating or editing a Job Template\n   - Set **Execution Environment** to `VMware Enhanced EE`\n   - Your playbooks will now have access to all VMware collections and SDKs\n\n### Using with AWX Operator\n\nConfigure the execution environment in your AWX resource:\n\n```yaml\napiVersion: awx.ansible.com/v1beta1\nkind: AWX\nmetadata:\n  name: awx-demo\n  namespace: awx\nspec:\n  # ... other configurations ...\n  ee_images:\n    - name: VMware Enhanced EE\n      image: ghcr.io/fs1n/awx-ee:latest\n```\n\nOr add it to an existing AWX instance:\n\n```yaml\napiVersion: awx.ansible.com/v1beta1\nkind: AWX\nmetadata:\n  name: awx-demo\n  namespace: awx\nspec:\n  # ... existing configurations ...\n  extra_settings:\n    - setting: AWX_EE_IMAGES\n      value:\n        - name: VMware Enhanced EE\n          image: ghcr.io/fs1n/awx-ee:latest\n```\n\n### Using with Ansible Navigator\n\nCreate an `ansible-navigator.yml` configuration file:\n\n```yaml\n---\nansible-navigator:\n  execution-environment:\n    image: ghcr.io/fs1n/awx-ee:latest\n    enabled: true\n    container-engine: podman  # or docker\n  ansible:\n    inventory:\n      entries:\n        - /path/to/your/inventory\n```\n\nThen run your playbooks:\n\n```bash\nansible-navigator run vmware-playbook.yml\n```\n\n## VMware Collections and Capabilities\n\nThis execution environment includes the following VMware-related collections:\n\n| Collection | Version | Description |\n|------------|---------|-------------|\n| `community.vmware` | Latest | Community-maintained VMware modules |\n| `vmware.vmware` | Latest | Official VMware-supported collection |\n| `vmware.vmware_rest` | Latest | VMware vSphere REST API collection |\n\n### Supported VMware Operations\n\n- **vCenter Management**: User, role, and permission management\n- **Virtual Machine Lifecycle**: Creation, configuration, deployment, and management\n- **Storage Management**: Datastore and storage policy operations\n- **Network Configuration**: Virtual switches, port groups, and distributed switches\n- **Host Management**: ESXi host configuration and maintenance\n- **Cluster Operations**: DRS, HA, and cluster management\n- **Content Library**: Template and ISO management\n- **vSphere Tags**: Tagging and categorization\n- **Resource Pools**: Resource allocation and management\n\n## Examples\n\n### Basic vCenter Connection Test\n\n```yaml\n---\n- name: Test vCenter connectivity\n  hosts: localhost\n  gather_facts: false\n  \n  tasks:\n    - name: Gather vCenter information\n      vmware.vmware.vcenter_datacenter_info:\n        hostname: \"{{ vcenter_hostname }}\"\n        username: \"{{ vcenter_username }}\"\n        password: \"{{ vcenter_password }}\"\n        validate_certs: false\n      register: datacenter_info\n    \n    - name: Display datacenter information\n      debug:\n        var: datacenter_info\n```\n\n### Create a Virtual Machine\n\n```yaml\n---\n- name: Create VM from template\n  hosts: localhost\n  gather_facts: false\n  \n  tasks:\n    - name: Deploy VM from template\n      vmware.vmware.vcenter_vm:\n        hostname: \"{{ vcenter_hostname }}\"\n        username: \"{{ vcenter_username }}\"\n        password: \"{{ vcenter_password }}\"\n        validate_certs: false\n        state: present\n        name: \"{{ vm_name }}\"\n        template: \"{{ vm_template }}\"\n        datacenter: \"{{ datacenter_name }}\"\n        folder: \"{{ vm_folder }}\"\n        datastore: \"{{ datastore_name }}\"\n        networks:\n          - name: \"{{ network_name }}\"\n```\n\n### Using vSphere REST API\n\n```yaml\n---\n- name: Get VM information using REST API\n  hosts: localhost\n  gather_facts: false\n  \n  tasks:\n    - name: Get session information\n      vmware.vmware_rest.vcenter_session:\n        vcenter_hostname: \"{{ vcenter_hostname }}\"\n        vcenter_username: \"{{ vcenter_username }}\"\n        vcenter_password: \"{{ vcenter_password }}\"\n        vcenter_validate_certs: false\n      register: session\n    \n    - name: Get VM list\n      vmware.vmware_rest.vcenter_vm_info:\n        vcenter_hostname: \"{{ vcenter_hostname }}\"\n        vcenter_username: \"{{ vcenter_username }}\"\n        vcenter_password: \"{{ vcenter_password }}\"\n        vcenter_validate_certs: false\n      register: vm_list\n```\n\n## Development\n\n### Development Prerequisites\n\n- Python 3.11+\n- [ansible-builder](https://ansible-builder.readthedocs.io/en/stable/installation/)\n- Container runtime (Podman recommended, Docker supported)\n- Git\n\nInstall ansible-builder:\n\n```bash\npip3 install https://github.com/ansible/ansible-builder/archive/devel.zip\n```\n(PyPI Installation didn't work for me in multible enviroments)\n\n### Building Locally\n\nClone the repository and build the execution environment:\n\n```bash\ngit clone https://github.com/fs1n/awx-ee.git\ncd awx-ee\n\n# Build with Podman (default)\nansible-builder build -v3 -t awx-ee:local\n\n# Build with Docker\nansible-builder build -v3 -t awx-ee:local --container-runtime=docker\n```\n\n### Testing\n\nThis project uses `tox` for testing builds with different container runtimes and includes a comprehensive test script for validating the execution environment.\n\n#### Automated Testing Script\n\nA comprehensive test script `test-ee.sh` is provided that validates configuration, builds the image, and runs industry-standard tests:\n\n```bash\n# Run all tests (validate, build, test)\n./test-ee.sh\n\n# Run only validation\n./test-ee.sh validate\n\n# Run only build\n./test-ee.sh build\n\n# Run only tests (requires existing image)\n./test-ee.sh test\n\n# Use Docker instead of Podman\n./test-ee.sh --runtime docker\n\n# Use custom image tag\n./test-ee.sh --tag my-awx-ee:latest\n```\n\nThe test script validates:\n- ✅ YAML configuration syntax\n- ✅ ansible-builder functionality  \n- ✅ Basic ansible operations\n- ✅ Python version and packages\n- ✅ Collection installation and availability\n- ✅ Sample playbook execution\n- ✅ Key collections (awx.awx, community.vmware, etc.)\n\n#### Manual Testing with Tox\n\nInstall tox and run container-specific tests:\n\n```bash\npip install tox\n\n# Test with Podman\ntox -e podman\n\n# Test with Docker\ntox -e docker\n```\n\n#### GitHub Actions CI/CD\n\nThe repository includes a comprehensive GitHub Actions workflow (`build-and-test-ee.yml`) that:\n\n- **Validates dependencies** on every PR and push\n- **Runs security scanning** with Trivy\n- **Tests functionality** with sample playbooks\n- **Verifies collections and packages** are properly installed\n- **Publishes images** on releases and main branch updates\n- **Tests published images** to ensure they work correctly\n\nThe workflow runs on:\n- Pull requests to main branch\n- Pushes to main branch  \n- Published releases\n\n### Modifying the Execution Environment\n\nThe execution environment configuration is defined in `execution-environment.yml`. Key sections:\n\n- **Base Image**: CentOS Stream 9 with Python 3.11\n- **Collections**: Ansible collections to include\n- **Python Dependencies**: Additional Python packages\n- **System Dependencies**: System packages and tools\n- **Build Steps**: Custom build instructions\n\nAfter modifying the configuration, rebuild and test:\n\n```bash\nansible-builder build -v3 -t awx-ee:test\npodman run --rm -it awx-ee:test ansible --version\n```\n\n### Contributing\n\n1. **Fork the repository** on GitHub\n2. **Create a feature branch**: `git checkout -b feature/your-feature-name`\n3. **Make your changes** and test them locally\n4. **Update documentation** if necessary\n5. **Test the build**: Run `tox -e podman` or `tox -e docker`\n6. **Commit your changes**: Use clear, descriptive commit messages\n7. **Push to your fork**: `git push origin feature/your-feature-name`\n8. **Create a Pull Request** with a clear description of your changes\n\n#### Guidelines\n\n- Keep changes focused and atomic\n- Update documentation for user-facing changes\n- Test your changes with both Podman and Docker if possible\n- **Run the test script** before submitting: `./test-ee.sh`\n- Follow existing code style and conventions\n- Update the version in relevant files if making significant changes\n- **All PRs are automatically tested** via GitHub Actions for quality assurance\n\n## Continuous Integration\n\nThis repository uses a comprehensive GitHub Actions workflow for quality assurance:\n\n### Build and Test Pipeline\n\nThe `build-and-test-ee.yml` workflow provides industry-standard testing:\n\n1. **Dependency Validation**\n   - YAML syntax validation\n   - Python dependency verification  \n   - ansible-builder compatibility check\n\n2. **Build and Security Testing**\n   - Execution environment image build\n   - Trivy security vulnerability scanning\n   - SARIF security report upload\n\n3. **Functional Testing**  \n   - Basic ansible functionality verification\n   - Collection availability testing\n   - Python package validation\n   - Sample playbook execution\n\n4. **Publishing**\n   - Smart tagging based on event type\n   - Multi-registry publishing support\n   - Post-publish verification testing\n\n### Workflow Triggers\n\n- **Pull Requests**: Full validation and testing (no publishing)\n- **Main Branch**: Build, test, and publish with `:main` tag\n- **Releases**: Build, test, and publish with release and `:latest` tags\n\n## License\n\nThis project is licensed under the Apache License 2.0 - see the [LICENSE.md](LICENSE.md) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffs1n%2Fawx-ee","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffs1n%2Fawx-ee","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffs1n%2Fawx-ee/lists"}