Releases: pyinfra-dev/pyinfra
v1.4.2
v1.4.1
- Improve deploy directory detection to handle nested directories
- Copy existing file/directory permissions in
files.syncoperation - Treat
exitedsystemd services as running insystemd.SystemdStatusfact - Fix handling of
cache_timeinapt.updateoperation - Fix invalid
namearguments inwindows.service,windows.file&windows.directoryoperations - Only show invalid auth argument warnings when not the defaults
- Test operation global argument clashes
v1.4
Three major themes to this release:
Explicit fact imports - this replaces the magic host.fact.X variables with explicitly imported facts, for example:
# previously: host.fact.apt_sources
from pyinfra.facts.apt import AptSources
host.get_fact(AptSources)
# previously: host.fact.file('/path/to/file')
from pyinfra.facts.files import File
host.get_fact(File, path='/path/to/file')
# also now possible (previously impossible):
host.get_fact(File, path='/path/to/file', sudo=True)And the CLI changes accordingly:
# previously: pyinfra INVENTORY fact apt_sources
pyinfra INVENTORY fact apt.AptSources
# previously: pyinfra INVENTORY fact file:/path/to/file directory:/path/to/directory
pyinfra INVENTORY fact files.File path=/path/to/file files.Directory path=/path/to/directoryThis is not yet standard across the project and will be updated in subsequent releases. This also finally enables using third party facts in a sensible and explict manner. Overall, this is a dramatic improvement to the pyinfra fact mechanism.
Windows operations expansion - massive thank you to @mfrg for implementing these, huge expansion of Windows facts & operations, making it possible to really use pyinfra with Windows targets (additions listed below).
Idempotency testing - verification of operation idempotency (calling the same op twice outputs no commands/changes the second time) through testing and a large expansion in verified idempotency. Operations can now specify themselves as non-idempotent when expected (for example, server.shell).
Operation & fact updates:
- Add
server.packagesoperation - generic package management using the default OS package manager - Add
pip.venvoperation - shortcut forpip.virtualenv(venv=True, ...) - Add
server.Pathfact - Add
rpm.RpmPackageProvidesfact & support package aliases foryum.packages&dnf.packagesoperations - Add
windows_files.download,windows_files.put&windows_files.linkoperations (@mfrg) - Add
windows_files.WindowsLink,windows_files.WindowsSha1File,windows_files.WindowsSha256File&windows_files.WindowsMd5Filefacts (@mfrg)
CLI updates:
- New style fact gathering CLI arguments
- Prefix SSH auth flags (
--userbecomes--ssh-user), deprecate old versions - Deprecate
--facts&--operationsCLI flags - Deprecate
all-factscommand - Hide deprecated options from
--help
Other bits:
- Show warnings when using invalid auth argument combinations (
sudo_userwithoutsudo, etc) - Bump minimum Paramiko version to
2.7
v1.3.12
v1.3.11
v1.3.10
- Properly escape postgresql role/database/owner operation commands (@RobWouters)
- Add support for additional winrm transport types & options (@mfrg)
- Fix for
Git*facts where the target repo doesn't exist - Git branches update:
masterrenamed tocurrentand newnextbranch tracking next minor release - Contributing documentation page updated to include branch description
v1.3.9
- Use
StringCommandto implement fact requires commands, fixesmysql_*facts with passwords - Improve error for invalid private key files, including message for old paramiko versions
- Fix
files.line/files.replace/server.crontabreplacements containing quotes - Fix
@winrmconnector command execution - Improve
files.templatedocstring (@Gaming4LifeDE)
v1.3.8
- Add Debian to prettified names in
LinuxDistributionfact (@blarghmatey) - Fix logging non-string args (@morrison12)
- Tidy up new issue templates (@Gaming4LifeDE)
- Use
exportinstead ofenvso variables pass into sub-commands as expected - pass any
envinto fact execution within operations - Fix splitting of inventory filename into group name
- Improve package name parsing in
BrewPackagesfact - Only append blank line before new cron entries if some already exist
- Remove any leftover askpass files when using
use_sudo_password
v1.3.7
- Support reading custom user operations in CLI mode (@tsnoam)
- Allow adding users with duplicate UIDs in
server.useroperation (@tsnoam) - Add user UID/GID to
usersfact output (@tsnoam) - Fix uninstall command in
apk.packagesoperation (@Gaming4LifeDE) - Fix support for
add_deployin API mode - Rename (deprecate) facts
server.Os->server.Kernel&server.OsVersion->server.KernelVersion - Add
server.MacosVersionfact - Add an empty line before writing in named crontab entries
- Fix check for command change with named crontab entries
- Properly quote package names (fix Python version specifiers with shell characters in
pip.packagesoperation)