# AIM --- Ansible Inventory Manager AIM is an operator-focused Python application for managing Ansible customer inventories, access configuration, Vaults and curated playbook execution. ## Source layout ``` text /etc/ansible/scripts/ ├── README.md ├── install.md ├── CHANGELOG.md ├── docs/ ├── pyproject.toml └── src/ └── aim/ ``` AIM uses `/etc/ansible/inventories//hosts.yml` as the inventory source of truth. ## Supported platform groups - `linux` - `windows` - `sophosxgs` - `pfsense` A host can belong to multiple groups/subgroups. Platform groups remain the top-level groups because they define Ansible connection semantics. ## Quick start See [install.md](install.md) for installation, virtual-environment setup, authorization-group configuration and recovery of Git-ignored runtime data. Start AIM with: ``` bash aim ``` Useful UI troubleshooting modes: ``` bash aim --no-clear aim --plain aim --live-output ``` ## Documentation - [Installation](install.md) - [Operations](docs/OPERATIONS.md) - [Inventory](docs/INVENTORY.md) - [Windows / WinRM / AD](docs/WINDOWS.md) - [Recovery](docs/RECOVERY.md) - [Security and sensitive data](docs/SECURITY.md) - [Development](docs/DEVELOPMENT.md) - [Changelog](CHANGELOG.md) ## Important operational rules AIM does not use `.hosts.tsv` as inventory state. `hosts.yml` is authoritative. Routine host changes use local YAML validation and do not unnecessarily prompt for the Vault password. Explicit inventory validation may invoke `ansible-inventory` and request the customer Vault password when a Vault exists. Existing customer-specific values and arbitrary valid YAML structures should be preserved unless an operator explicitly requests an operation that changes them.