Pyinfra Versions Save

pyinfra turns Python code into shell commands and runs them on your servers. Execute ad-hoc commands and write declarative operations. Target SSH servers, local machine and Docker containers. Fast and scales from one server to thousands.

v2.9.2

2 months ago
  • Fix documentation generation for versioned releases

v2.9.1

2 months ago
  • Add ability to retry SSH connections on failure (@fwiesel)
  • Handle nested operation errors correctly like unnested operations
  • Display list of valid Terraform keys when no match
  • Fix tab aligned dpkg output parsing in deb.DebPackages fact (@martenlienen)
  • Fix support page chat link
  • Fix default argument checking when looking up arguments from host data
  • Fix duplicate traceback printing in callback operations
  • Fix use of removed --local-only flag in choco.ChocoPackages fact
  • Fix sudo no user regex when calling facts
  • Fix missing use of destination & not_destination args in iptables.rule operation

v3.0.beta0

3 months ago

Welcome to pyinfra v3! This version is the biggest overhaul of pyinfra since it was created back in 2015. Most v2 deployment code should be automatically compatible, but as always be aware. Major changes:

Runtime operation execution

pyinfra now executes operations at runtime, rather than pre-generating commands. Although the change isn't noticeable this fixes an entire class of bugs and confusion. See the limitations section in the v2 docs. All of those issues are now a thing of the past.

This represents a huge overhaul of pyinfra's internals and should be a huge improvement for users.

Care has been taken to reduce the overhead of this change which still supports the same diffs and change proposal mechanism.

CLI flow & prompts

The pyinfra CLI will now prompt (instead of ignore, or immediately exit) when problems are encountered, allowing the user to choose to continue. Additionally an approval step is added before executing changes (skip with -y).

Extendable connectors API, typing overhaul

v3 of pyinfra includes for the first time a (mostly) typed internal API with proper support for IDE linting. There's a whole new connectors API that provides a framework for building new connectors.

More TBC...

v2.9

4 months ago

Long overdue! Happy New Year all :)

Added:

  • Add server.security_limit operation & SecurityLimits fact (@maisim)
  • Add password argument to server.user operation (@disser)
  • Add url argument to brew.tap operation (@znd4)
  • Add proxy argument to files.download operation (@themanifold)
  • Add mtu, state, mac to NetworkDevices fact (@maisim)
  • Enable/test paramiko v3 support (@pbsds)

Fixed:

  • Fix Users fact when user description contains pipes (@julienlavergne)
  • Fix multiple bugs in files.block operation (@stone-w4tch3r)
  • Fix removal of sudo askpass file with server.reboot operation (@stone-w4tch3r)
  • Disable home creation explicitly in server.user (@julienlavergne)
  • Remove unused colorama dependency (@gdrosos)
  • Automatically convert string/bytes IO objects to the correct mode

v2.8

7 months ago

Added:

  • Add device and fs_type arguments to server.mount operation (@chriskingio)
  • Add args argument to server.script_template operation (@chriskingio)

Fixed:

  • Support FreeBSD in server.user & server.group operations (@wowi42)
  • Add missing py.typed flag to package
  • Fix lookup of systemd units containing . in the name (@cawo-odoo)
  • Strip newlines off public keys read from disk (@sysadmin75)
  • Properly escape database names in mysql.database operation (@tissieres)

v2.7

1 year ago

Been a while since a release, so there's a bunch of great stuff in thise one!

Added:

  • Add experimental support for importing inventories from Python modules
  • Add caro.packages operation (@wowi42)
  • Add server.locale operation and server.Locales fact (@maisim)
  • Add ensure_newline keyword argument to files.line (@yunzheng)
  • Add args argument to server.script operation
  • Add make put_file work with doas (@minusf)
  • Handle adding git config key-values with multiple lines (@gchazot)

Fixed:

  • Add Ubuntu latest (22.04) to CI tests (@gchazot)
  • Fix codecov workflow (@ioO)
  • Escape & character during sed replacement during line.replace (@sysadmin75)
  • Fix last login time in server.users operation (@minusf)
  • Fix fact hash for short facts where the backing fact takes arguments

v2.6.2

1 year ago
  • Add support for classic confinment in snap.packages operation (@pabloxio)
  • Support dictionaries for Terraform connector inventory
  • Upgrade to distro>1.6 and remove patch hack
  • Fix files.Md5File fact for BSD style output (@ScottKevill)
  • Fix handling of protocol in iptables.rule operation (@sysadmin75)
  • Fix a large number of documentation issues
  • Add docstrings to Host methods
  • Cleanup duplicate code (@minusf)
  • Refactor has files facts (@ScottKevill)

v2.6.1

1 year ago
  • Fix reuse of temporary file names in server.script operation (@link2xt)
  • Fix retry handling on SFTP errors

v2.6

1 year ago

Added:

  • Use SSH connector parameters with files.rsync operation (@StevenKGER)
  • Add auto_remove arguments to apt.upgrade operation (@mcataford)
  • Make it possible to call any function/op/deploy from the CLI

Fixed:

  • Fix handling of ALL/GRANT OPTION permissions in mysql.privileges operation (@gchazot)
  • Fix mysql.load operation with spaces in filenames (@gchazot)
  • Fix fact apk.ApkPackages for packages with numbers in the name (@dchauviere)
  • Fix fact openrc.OpenrcStatus for services with start times (@dchauviere)
  • Fix files.put for files containing spaces in local connector (@uggedal)
  • Fix performance of fact phase when calling functions/operations directly in CLI

v2.5.3

1 year ago
  • Fix handling of facts with no arguments or with global arguments
  • Fix mutable default breaking Host.loop position tracking
  • Cleanup exception handling within operation code