v1.1
This is a big release with some major additions & improvements on v1
.
Highlights:
- Start modifying facts during fact gathering phase, resolving common issues with interdependent operations, expand documentation on this (docs)
- Implement state callback classes dramatically improving the API experience (see
examples/api_deploy.py
) - Add
@dockerssh
connector that enables pyinfra to build Docker containers on remote machines over SSH (@charles-l) - Add global
precondition
andpostcondition
operation arguments - Fix using
su_user
on BSD/MacOS systems - Rework verbosity flags and add noop logging (ie package X is already installed) (docs)
Notable change:
The yum.packages
and dnf.packages
operations have changed their "version join" string value - both package managers use -
to join name + version while allowing -
in the name. This leads to ambiguous behaviour for packages containing dashes, as such the version join value has been changed to =
- meaning it can now actually be used! This means to specify a specific version of a yum/dnf package you should use <name>=<version>
rather than <name>-<version>
.
Smaller bits:
- Add
REQUIRE_PYINFRA_VERSION
config option (& deprecateMIN_PYINFRA_VERSION
) - Validate existing files in
file.download
with checksum arguments (@sysadmin75) - Stop stripping fact output (fixes
command
fact, @sysadmin75) - Add
extra_install_args
andextra_uninstall_args
kwargs toapt.packages
operation - Add
--use-sudo-password
CLI argument - Normalise
server.sysctl
handling of string/int values - Improve autocomplete/intellisense handling of pseudo modules
pyinfra.[host|state|inventory]
- Fix using sudo password with a SSH user that doesn't have access to
/tmp
- Fix
python.call
docstring (@leahneukirchen) - Fix
--serial
and--no-wait
executing operations twice - Fix
server.sysctl
usage with multiple values