Changelog
Version 0.1.0-alpha.3
This entry covers the first three pre-releases.
Added
volant playbookandvolant-playbook: run playbooks made ofcommand,shellandrawtasks, with ansible-playbook’s output, recap and exit codes.- Static INI inventories with groups, children and group variables; implicit
localhost. - The agent binary, running task batches with fail-fast and cancellation.
- Variables from inventories,
group_vars/andhost_vars/directories, playvarsandvars_files, taskvars,--extra-vars,registerandset_fact, with Ansible’s precedence. - Jinja2 templating in strict mode, with the common Ansible filters, tests and lookups, checked against ansible-core.
- Task keywords
when,loop,with_items,loop_control,register,changed_when,failed_when,timeout; controller-sideset_factanddebug. --limit,ansible.cfginventory and timeout,ansible_versionandvolant_versionvariables.- The
sshconnection: the agent is uploaded once per host, cached underremote_tmpper version, and reused by every later run. Space is checked before the write and the upload is atomic. becomethroughsudo, as a play or task keyword and asansible_become*host variables, with the escalation password read from-Kor from a variable and never written anywhere. The agent an escalated task runs is cached under the target user’s own home, so escalating to an account other thanrootworks on a host whose home directories are private.forks, bounding how many hosts a play works on at once, readable asansible_forks.- One agent link per host and target user. The host’s own link is held for the whole run across plays, with a single reconnect when a link dies between plays; an escalated link lasts as long as the batch that needs it, so
forksbounds the connections open as well as the hosts working. - The full host-pattern grammar: wildcards inside names,
!exclusions,&intersections and[N],[N:M],[N-M]subscripts. - New flags
-u,--private-key,-f,-b,--become-user,--become-methodand-K, and theansible.cfgkeysremote_user,private_key_file,host_key_checking,remote_tmp,forksand the[privilege_escalation]section. - Run-level refusals exit with the code the reference gives them: 4 for a playbook that does not parse and for a
vars_filesvalue of the wrong type, 1 for a playbook file that is not there and for a pattern that leaves no hosts, 2 for a setting that is refused. - A
--limitpattern that matches no host warns and narrows the run to what it did match, instead of narrowing it silently. - A configuration file that is there and cannot be read stops the run instead of falling back to the defaults.
Changed
rawno longer reportscmd,start,endordelta, matching Ansible.- A host whose connection type is unknown is reported unreachable; the run continues.
- Hosts that fail or become unreachable are left out of the following plays.
- A host reading another host’s variables now waits for the others to reach the same task, so
hostvarsholds what the reference would show there. ansible_play_hostsand its aliases shrink as hosts fail during a play, instead of listing the play’s original hosts.- Each playbook on the command line prints its own recap.
- Mapping keys keep the order the playbook wrote them, in results and in rendered output.
Fixed
- Interrupting a run now cancels running tasks on every host and kills their whole process group;
SIGTERMis handled like Ctrl-C. - A program killed by a signal reports the negative signal number as its return code.
- Banner widths count characters, not bytes.
- A failing loop item now reports its own message and the recap counts it as failed, not as changed; an empty loop skips with
skipped_reasonand an emptyresultslist. omitis removed from lists as well as from dictionaries, at any depth.- Integers are typed as YAML 1.1 does, so
0o755,0x1fand1_000read the way the reference reads them, and theboolfilter accepts only the spellings Ansible accepts. - An inventory name that is both a host and a group resolves to the host and warns once per run, as the reference does.
- A group listed as its own descendant no longer drops hosts from
all, which had made!web,&weband an empty pattern select the wrong set.