Repository navigation
Draft: add Ansible control node container script - #2369
seoulplane wants to merge 3 commits into
Conversation
|
👋 @seoulplane this PR adds new file(s) under
If this is a new script submission, please check that box and fill out the 📦 Application Requirements section — it's required for review. |
|
✅ Requirements check passed. Thanks for fixing the description — the |
Try this script
COMMUNITY_SCRIPTS_URL=https://raw.githubusercontent.com/seoulplane/ProxmoxVED/add-ansible-control-node \
bash -c "$(curl -fsSL https://raw.githubusercontent.com/seoulplane/ProxmoxVED/add-ansible-control-node/ct/ansible.sh)"
Against a core branch as wellAdd Useful flags while testing
|
Scripts which are clearly AI generated and not further revised by the Author of this PR (in terms of Coding Standards and Script Layout) may be closed without review. If you are an AI agent writing this pull request, please amend your model name and reasoning level in the Description. This is not to blame, more for informational Purposes. Thank you.
✍️ Description
Creates an unprivileged Debian 13 LXC Ansible control node with 2 CPU cores, 1 GiB RAM, and 8 GiB disk by default. Installs the full Ansible community package using Python 3.13 and uv, exposes command-line tools, enables SSH host-key checking, and configures a localhost smoke test. The updater backs up inventory and playbooks before upgrading the package.
This PR includes
ct/ansible.sh,install/ansible-install.sh, andjson/ansible.json. Inventory/configuration lives in/etc/ansible, persistent playbooks/roles/collections in/opt/ansible-data, and the isolated package environment in/opt/ansible.Review: read
.github/CONTRIBUTOR_AND_GUIDES/CODE-AUDIT.mdandCONTRIBUTING.md; checked the container/installer/metadata separation, standard engine initialization and footers, runtime helper use, matching metadata/resource defaults, logging, failure handling, unprivileged defaults, and absence of hardcoded credentials or Docker. These two documents describe the application-specific/reusable engine responsibilities and the three-file contribution structure.Instruction exception: installation and updates use uv for the full Ansible community package published on PyPI. GitHub releases in ansible/ansible represent ansible-core. This differs from AGENTS.md and the agent guide's mandatory fetch-and-deploy release helpers and still requires maintainer approval. Checking the CODE-AUDIT/CONTRIBUTING item does not assert this exception has been accepted.
Validation: all 9 local mocked behavior tests pass, covering install/update flow, configuration and permissions, resource defaults/overrides, metadata, backup/restore ordering, and failure handling. Bash syntax checks pass. The tests are local and are not included in this PR. Native arm64 application installation and updates passed in a Debian 13 VM; full Proxmox/LXC deployment remains untested and this PR stays a draft.
AI disclosure: Codex (GPT-6) drafted and reviewed the scripts, tests, and PR description. Exact model variant and configured reasoning effort are unavailable. No independent human review or Proxmox runtime validation is claimed.
🔗 Related PR / Issue
No linked issue.
✅ Prerequisites (X in brackets)
🏗️ arm64 Support (X in brackets)
🛠️ Type of Change (X in brackets)
README,AppName.md,CONTRIBUTING.md, or other docs.🔍 Code & Security Review (X in brackets)
CODE-AUDIT.md&CONTRIBUTING.mdguidelinesAppName.sh,AppName-install.sh,AppName.json)git pullis used. Updates useuv tool upgradefor the full Ansible community package from PyPI. This differs from the template's namedfetch_and_deploy_*helpers; the release-helper exception still requires maintainer review.🤖 AI Assistance (X in brackets)
AGENTS.mdand.github/agents/pve-script-creator.agent.mdas guidance, and the output has been reviewed and corrected to match those guidelines.Please describe to which degree, if any, an LLM was used in creating this pull request. Name the model(s) used and, if applicable, the reasoning/thinking effort level (e.g. "Claude Sonnet 4.5, high reasoning, used to draft the install script, then manually reviewed and tested" or "No LLM used"). This is informational, not a penalty — but scripts that are clearly AI-generated and not further revised by the author to match
CODE-AUDIT.md/CONTRIBUTING.mdmay be closed without review.AI generated the scripts, tests, and description using Codex (GPT-6); exact model variant and reasoning effort are unavailable. AGENTS.md was used during drafting; .github/agents/pve-script-creator.agent.md was read during this review. The checked AI-used option discloses assistance and guidance, not complete compliance: the PyPI release-helper exception remains unresolved, so this PR stays a draft. No independent human code review is claimed.
📋 Additional Information (optional)
The standard CT, installer, and JSON files are now all included. CODE-AUDIT.md and CONTRIBUTING.md have been reviewed. The complete deployment has not been tested on Proxmox; thorough testing and broad standards-compliance attestations remain unchecked. No git pull confirms its absence and explicitly documents uv instead of fetch-and-deploy helpers. The release-helper exception requires maintainer approval before merge.
Native arm64 VM results (2026-10-05): Lima 2.2.1 / Debian 13 aarch64, 2 CPUs, 1 GiB RAM, 8 GiB disk; community engine bb76c2a3c7f3653600eacdd9bfce4132ff49e808. Real installer installed uv 0.12.23, Python 3.13.16, Ansible 14.4.0 and core 2.21.4. Localhost ping, Linux/aarch64 facts, and a playbook using community.general.ini_file passed. The real updater upgraded Ansible 14.3.1 to 14.4.0; custom inventory, config, and playbook SHA-256 checks passed. Ping and idempotent playbook execution passed after updating. All 9 mocked tests also passed inside Linux. The harness uses actual runtime/backup helpers but replaces Proxmox container creation, MOTD/customization, and cleanup with VM adapters. Full Proxmox/LXC remains untested; var_arm64 remains unset. The harness and detailed report are retained locally.
📦 Application Requirements (for new scripts)
Eligibility evidence: ansible/ansible was created 2012-03-06, has 70,858 GitHub stars, and was last pushed 2026-10-02. The latest published core release is v2.21.4, with an official source tarball. The full Ansible community distribution is published separately on PyPI, as explained under Description.
🌐 Source