auberge ansible run
Run an Ansible playbook on a target host. Alias: auberge a r.
auberge ansible run [OPTIONS]Options
Section titled “Options”| Option | Description | Default |
|---|---|---|
-H, --host HOST |
Target host | Interactive |
-p, --playbook PATH |
Playbook path (bypasses auto-resolution when combined with --tags) |
Interactive |
-C, --check |
Dry run | false |
-t, --tags TAGS |
Comma-separated tags (auto-resolves playbook when --playbook is omitted) |
All tasks |
--skip-tags TAGS |
Comma-separated tags to skip | None |
-f, --force |
Skip confirmation prompts (CI/CD) | false |
Examples
Section titled “Examples”auberge ansible run # interactiveauberge ansible run --host my-vps --tags paperless # auto-resolves infra + appsauberge ansible run --host my-vps --tags hermes # standalone playbook by nameauberge ansible run --host my-vps --tags ssh # re-apply the ssh role on the configured portauberge ansible run --host my-vps --playbook ansible/playbooks/apps.yml --tags freshrss,baikal --checkauberge ansible run --host my-vps --skip-tags navidrome -f # CI/CDRequired config keys per playbook
Section titled “Required config keys per playbook”The CLI validates config.toml before running and exits with the missing keys.
An apps.yml run against an ordinary host needs admin_user_name, domain and cloudflare_dns_api_token. Those come from two separate rules.
The first is the playbook’s own declaration:
| Playbook | Declared keys |
|---|---|
bootstrap.yml |
admin_user_name, ssh_port |
hardening.yml |
none |
ssh.yml |
admin_user_name, ssh_port |
infrastructure.yml |
admin_user_name, domain |
apps.yml |
admin_user_name |
| other | the app’s own keys |
The second is the Zone. Preflight resolves the Zone of every App the run reaches and demands that Zone’s key pair.
A Zone is two config keys sharing a prefix: <zone>_domain and <zone>_cloudflare_dns_api_token. The fleet’s Zone is the unnamed pair, domain and cloudflare_dns_api_token. Almost every App is in it, so an ordinary run asks for those two.
Only an App that publishes a name has a Zone. hermes, tgtg, memsearch, opencode and syncthing publish none, so Preflight skips them. aoe sits in the agent tier’s own Zone: it asks for agents_domain and agents_cloudflare_dns_api_token, not the fleet’s pair.
Common tags
Section titled “Common tags”List all tags for a playbook with cd ansible && ansible-playbook playbooks/apps.yml --list-tags.
| Tag | Scope |
|---|---|
bootstrap / hardening / infrastructure / apps |
Layer |
ssh / ufw / fail2ban / kernel_hardening |
Hardening component |
caddy / apt / bash / tailscale |
Infrastructure component |
<app-name> (e.g. baikal, freshrss, paperless) |
Single app |
security / network / storage / web |
Category |
Check mode limitations
Tasks that depend on previous tasks may report failures in check mode that wouldn’t occur in real execution (e.g. copying a file into a directory the previous task only would have created). command/shell modules always show “changed” — add check_mode: no for read-only commands. Handlers are notified but not executed.
Troubleshooting
Section titled “Troubleshooting”Host key verification failedon--playbook bootstrap.yml: the target was rebuilt and offers a new key. The run prints both fingerprints and offers to drop the staleknown_hostsentry;--forcedrops it without asking. See SSH problems.