Will my playbook run?
Volant loads the whole ansible-core 2.19 grammar, so your playbook parses here as it parses under Ansible. Whatever this release does not support yet is named before the first connection, and the run stops there. You find out in seconds, and nothing half-runs.
Check a project
Section titled “Check a project”-
Read it without running it. Listings and
--syntax-checknever stop on an unsupported module or keyword, so they work even on a playbook this release cannot run yet:Terminal window volant playbook -i inventory.ini site.yml --syntax-checkvolant playbook -i inventory.ini site.yml --list-tasksIf the task list matches what
ansible-playbook --list-tasksprints, Volant compiled your roles, imports and tags the same way. -
Ask for a real run against one host you can afford to touch:
Terminal window volant playbook -i inventory.ini site.yml --limit test1Anything this release cannot execute stops the run before it connects. The message names the module, the keyword or the value, and the run exits with code 4.
-
Fix or wait. Everything not supported yet is listed in Keywords or Modules, and most have a workaround below.
At a glance
Section titled “At a glance”| Area | Runs today | Not yet |
|---|---|---|
| Plays | pre_tasks, roles, tasks, post_tasks, handlers, serial, strategy: linear |
any_errors_fatal, max_fail_percentage, order, throttle |
| Tasks | when, loop, with_items, with_first_found, with_fileglob, register, until, retries, changed_when, failed_when, ignore_errors, no_log, environment, timeout, tags |
async, other with_* lookups, check_mode: true, diff |
| Blocks | block, rescue, always |
|
| Reuse | roles and dependencies, import_tasks, import_role, import_playbook, include_tasks, include_role, include_vars |
include_vars: dir |
| Delegation | delegate_to, delegate_facts, run_once |
local_action |
| Modules | command, shell, raw, controller modules, copy, dnf, fetch, package, reboot, service, template, unarchive, most ansible-core Python modules, modules from installed collections |
a few modules backed by an action plugin: uri, script and others, and a collection’s own action plugins |
| Inventories | static INI files, group_vars, host_vars |
YAML inventories, inventory directories, dynamic inventories |
| Connections | ssh with keys or an ssh-agent, local |
SSH passwords, Windows, network devices |
| Escalation | become through sudo, with or without a password |
su, doas and other methods |
| Templating | Jinja2 with the common Ansible filters, tests and lookups | !vault, !unsafe, some filters such as hash or password_hash, filters and lookups from collections |
| Run modes | normal runs, the four listing commands | --check, --diff, --start-at-task, --step |
Common blockers and what to do
Section titled “Common blockers and what to do”| Not supported yet | Why | What you can do today |
|---|---|---|
uri, script |
These modules rely on an action plugin that runs on the controller first, and Volant does not have theirs yet. | Use a module without an action plugin, such as get_url or lineinfile, or command and shell. |
A collection module its collection runs through an action plugin, such as ansible.posix.synchronize |
Volant runs a collection’s modules, not its action plugins. | Keep the play under ansible-playbook for now. |
| A collection that is not installed | Volant never installs one. It asks the controller’s ansible-core what is installed, before the first connection. | Run the ansible-galaxy collection install command the error names. See Modules from collections. |
local_action |
It is not supported yet. | Write delegate_to: localhost, which does the same job and runs. |
with_dict and the other with_* forms |
Only with_items, with_first_found and with_fileglob have a loop. |
Rewrite with loop and a filter, such as loop: "{{ users | dict2items }}". |
check_mode: true or --check |
There is no check mode yet. | Run against a test host. |
| An inventory in YAML | Only INI inventories are read. | Convert it to INI, or keep it under Ansible for now. |
gather_subset |
Not supported yet. | Remove it: the play gets every fact. |
If a playbook behaves differently under Volant and ansible-playbook without being reported as unsupported, that is a bug. Please open a compatibility report with a minimal playbook.