mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 19:01:54 +00:00
Module moves (with imports, paths, argv literals, scripts, docs, and
parents[N] formulas updated in lockstep):
- cli/deploy -> cli/administration/deploy
- cli/validate/inventory -> cli/administration/inventory/validate
- cli/vault -> cli/administration/secrets/vault
- cli/administration/inventory/encrypt -> cli/administration/secrets/seal
- cli/mirror -> cli/contributing/mirror
The new cli/administration/secrets cluster collocates the whole-file
ansible-vault wrapper next to the inventory-aware per-field sealer.
The user-facing CLI subcommand paths follow the package layout, e.g.
"infinito administration deploy dedicated <inv>" and
"infinito administration inventory validate <inv>".
Help system redesign in cli/core/{discovery,help,app}.py:
- Discovery now distinguishes runnable commands (directories with
__main__.py) from category folders (directories that only group
further commands). Empty support packages are filtered out.
- Each category folder MAY carry a README.md; its H1 heading is used
as the title and its first paragraph as the one-line description in
the help output.
- "infinito" / "infinito --help" prints only the top-level entries
(one level deep). "infinito <category>" navigates into a folder and
shows its sub-folders and commands one level deep, with the README
title as the page heading and the invocation as a dim subtitle.
- New "--tree [N]" flag walks the tree under the (optional) path
prefix recursively. N caps the depth (1-based); omit N for an
unbounded walk. The output uses Unicode tree connectors, an emoji
per entry (folder for categories, gear for commands), a globally
aligned description column, and multi-line wrapped descriptions
with tree-continuity bars on continuation lines.
- Category and command listings use the full invocation
("infinito meta callorder") rather than the bare leaf name, so the
output is copy-pasteable.
Convention doc + 17 CLI READMEs:
- New docs/contributing/artefact/files/cli/readme_md.md describes the
H1+paragraph layout the help system reads, and how it differs from
role/docs READMEs.
- README.md added for cli/{administration, build, contributing, meta}
and their immediate sub-folders, plus cli/meta/roles/applications
and its resolution sub-folder. Each follows the "title with trailing
emoji + single descriptive paragraph" convention.
Mirror resolver/sync description strings (the help system reads them
from argparse --help output) added so they no longer surface as
"options:" in the global index. cli/mirror/cleanup already had a
description and is unchanged.
Fixes uncovered by the move:
- import unittest.mock added to four dedicated-deploy tests so
unittest.mock.patch resolves under stdlib unittest discovery
(Python 3.13 no longer surfaces unittest.mock through "import
unittest" alone).
- parents[N] index in the new
cli/administration/inventory/validate/__init__.py corrected from
3 to 4 to match the deeper layout.
- test_paths.INVENTORY_VALIDATOR_PATH assertion and test_runner
substring assertions updated to match the new validator path.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1.9 KiB
1.9 KiB
Deploy Guide 🚀
Use this guide to create inventories, run a full deploy, and redeploy an existing environment with infinito commands only. The audience is the operator running deploys against a managed (production or staging) host. Contributors iterating on a local development stack should follow Local Deploy instead.
Full Deploy 📦
Create or refresh the inventory first, then deploy against the generated inventory file.
Create or Refresh the Inventory 📝
infinito administration inventory provision /etc/infinito.nexus/inventories/prod \
--inventory-file /etc/infinito.nexus/inventories/prod/devices.yml \
--host localhost \
--ssl-disabled \
--vars-file inventories/<env>/default.yml \
--include 'web-app-nextcloud,web-app-keycloak'
Run the Deploy 🛠️
infinito administration deploy dedicated /etc/infinito.nexus/inventories/prod/devices.yml \
--password-file /etc/infinito.nexus/inventories/prod/.password \
--log /etc/infinito.nexus/logs \
--diff \
-vv
Redeploy 🔁
When you need to redeploy after changes, repeat the same two infinito commands:
- Re-run
infinito administration inventory provision ...to refresh the inventory file and included app list. - Re-run
infinito administration deploy dedicated ...against the same inventory file.
Inventory Notes 📒
- Keep one inventory directory per environment.
- Store the password file next to the inventory file.
- Update
--includewhenever the target app set changes. - Use a
--vars-filethat matches the target environment. Production deploys MUST NOT point at the development sample file.
For CLI installation prerequisites, see the Installation Guide. For the local development deploy flow (make targets, matrix variants, single-variant pinning), see Local Deploy.