Skip to content

Releases: pyinfra-dev/pyinfra

v1.1

31 Aug 13:00

Choose a tag to compare

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 and postcondition 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 (& deprecate MIN_PYINFRA_VERSION)
  • Validate existing files in file.download with checksum arguments (@sysadmin75)
  • Stop stripping fact output (fixes command fact, @sysadmin75)
  • Add extra_install_args and extra_uninstall_args kwargs to apt.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

v1.0.4

20 Jul 12:35
c01eb36

Choose a tag to compare

  • Add selinux fact (@FooBarQuaxx)
  • Improve/fix rpm_packages fact parsing (@FooBarQuaxx)
  • Stop showing arguments on operations with names

v1.0.3

17 Jul 11:29
24e07a6

Choose a tag to compare

  • Reimplement file/directory/link facts using stat
    • No breaking changes
    • Adds ctime and atime to the output dictionary
  • Add backup argument to the files.line and files.replace operations
  • Add SimpleNamespace to the list of allowed data types
  • Don't fail when the destination directory is a symlink in the files.sync operation
  • Fix running the same fact in CLI w/different arguments
  • Add local integration tests that check idempotency (of files operations only for now)

v1.0.2

14 Jul 16:09
9551a6f

Choose a tag to compare

  • Further improve fact output when errors are encountered
    • Will now output stdout + stderr when a fact command fails unexpectedly
    • This brings the same instant debugging feel to facts that operations have
  • Fix wget failure handling in files.download operation (@artizirk)
  • Improve files facts handling when file/directory/link does not exist

v1.0.1

13 Jul 21:18
93efd0d

Choose a tag to compare

  • Log host fact errors/warnings
  • Switch to distro package for linux_distribution fact (@FooBarQuaxx)
  • Expand support for os.PathLike path variables (@FooBarQuaxx)
  • Improve checking state/host presence when calling operations (@FooBarQuaxx)
  • Don't error in sha1_file fact when no file exists

v1.0

11 Jul 13:20
9d45a81

Choose a tag to compare

The first 1.x release!

This release deprecates a lot of old/legacy pyinfra code and brings fourth a new, stable API. So long as you see no warnings when executing pyinfra, upgrading should require no chanages.

What's new:

  • Add new global name argument to name operations (deprecate set as the first argument)
  • Improve unexpected fact error handling, bad exit codes will be treated as errors unless the fact explicitly expects this could happen (system package managers for example)
  • [CLI] write progress/user info/logs to stderr only
  • [API] Consistent ordering when add_op and add_deploy functions
  • [API] Return a dictionary of host -> OperationMeta when using add_op
  • Enable passing a list of modules to server.modprobe (@FooBarQuaxx)
  • Support Path objects in files.[file|directory|link] operations
  • Support shasum (MacOS) in sha1_file fact

Breaking changes:

  • Deprecate using set as the first/name argument for operations
  • Rename files.* arguments (name -> path, destination -> dest)
  • Rename server.* arguments (name -> user|group|cron_name|key|path, filename -> src)
  • Rename mysql.* + postgresql.* arguments (name -> user|database|role)
  • Rename init.* arguments (name -> service)
  • Rename lxd.container argument name -> id
  • Rename git.repo argumenets source -> src & target -> dest
  • Rename iptables.chain argument name -> chain
  • Rename python.call argument func -> function
  • Rename size -> mask_bits inside network_devices fact
  • Change default of interpolate_variables from True -> False
  • Remove deprecatedhosts/when/op global operation arguments
  • Rename reprecated Config.TIMEOUT -> Config.CONNECT_TIMEOUT
  • Remove deprecated use_ssh_user argument from git.repo operation
  • Remove deprecated python.execute operation
  • Remove deprecated Inventory.<__getitem__> & Inventory.<__getattr__> methods
  • Remove deprecated add_limited_op function
  • Remove deprecated legacy CLI support

v0.16.2

09 Jul 16:01
e7c397e

Choose a tag to compare

  • Add special_time argument to server.crontab operation
  • Support public key filenames in server.user
  • Support BusyBox style ls time formats for file/directory/link facts
  • Fix uninstalling packages with pip.packages (@FooBarQuaxx)
  • Fix compatibility with older gevent versions
  • Fix typo in deploys doc (@harold-b)

v0.16.1

03 Jul 15:20
50e2efd

Choose a tag to compare

  • Declare connectors as setuptools entrypoints (@FooBarQuaxx)
  • Fix use_sudo_password with facts
  • Fix actually mask MySQL operation + facts output

v0.16

29 Jun 20:47
8a62162

Choose a tag to compare

  • Add zypper module (@FooBarQuaxx)
  • Add xbps module (@leahneukirchen)
  • Add first command class, StringCommand, with masking support (@meantheory)
    • Mask postgresql, mysql and sudo passwords
  • Fix pkg.packages: don't provide PKG_PATH envvar if /etc/installurl exists
  • Load any SSH certificates when loading private keys

v0.15

21 Jun 20:34
6e14b03

Choose a tag to compare

To-be-breaking changes:

  • Rename pyinfra.modules -> pyinfra.operations (backwards compatible, will remain in v1)

Other changes:

  • Add use_sudo_password=[True|False|str] global operation argument
  • Support YAML+JSON @ansible connector inventories (@ricardbejarano)
    • requires pyyaml which is an extra requirement (pip install pyinfra[ansible])
  • Enable managing all systemd unit types (not just service) (@nikaro)
  • Enable using venv instead of virtualenv (@nikaro)
  • Add @chroot connector (@FooBarQuaxx)
  • Don't include comment lines in yum_repositories fact (@FooBarQuaxx)
  • Use tail -f /dev/null instead of sleep for @docker containers (@FooBarQuaxx)
  • Support pkg ... FreeBSD commands in pkg.packages operation + fact
  • Support non-RSA key files (DSS/ECDSA/Ed25519)
  • Python2 unicode fixes for files operations + facts
  • Properly escape/support paths with spaces
  • Add python3.8 to travis tests