Releases: pyinfra-dev/pyinfra
v0.14.5
pyinfra v0.8
Another major internal release that re-works how operations are ordered such that operation arguments no longer need to be the same for each host. This works by using the line numbers on which operations are defined, nesting as required.
pyinfra v0.7
This is a huge step forward for pyinfra; as well as a bunch of key new modules and a new progress bar that highlights what's pending, pyinfra now compiles deploy code so if statements work as expected (no need to use the with state.limit workaround).
Changes in 0.7:
- Add mysql module
- Operations:
mysql.sql,mysql.user,mysql.database,mysql.privileges,mysql.dump,mysql.load - Facts:
mysql_databases,mysql_users,mysql_user_grants
- Operations:
- Add postgresql module
- Operations:
postgresql.sql,postgresql.role,postgresql.database,postgresql.dump,postgresql.load - Facts:
postgresql_databases,postgresql_roles
- Operations:
- Add puppet module with
puppet.agentoperation (@tobald) - Add
server.crontab,server.modprobeandserver.hostnameoperations - Add
git.configoperation - Add
kernel_modules,crontabandgit_configfacts - Add global install virtualenv support (like iPython)
- Massively improved progress bar which highlights remaining hosts and tracks progress per operation or fact
- Improved SSH config parsing, including proxyjump support (@tobald)
- Support for CONFIG variables defined in
local.includefiles - Fix
commandfact now outputs everything not just the first line
Internal changes:
- Replace
--debug-statewith--debug-operationsand--debug-facts - pyinfra now compiles the top-level scope of deploy code, meaning if statements no longer generate imbalanced operations
- This means the recommendations to use
state.whenin place of conditional statements is invalid - Updated the warning shown, now once, with a link
- Included a test
deploy_branches.pywhich can be used to verify operations do run in order for each host when compile is disabled - Compiling can be disabled by setting
PYINFRA_COMPILE=offenvironment variable
- This means the recommendations to use
- Deprecate
state.limitand replace withstate.hosts(hosts)(consistency with global operation kwarghostsnotlimit) - Major internal refactor of
AttrDatahandling to reduce operation branching:- Generate
AttrDataon creation, rather than read - Add nesting support for
AttrDatasohost.data.thing['X']will not create branching operations - Turn fact data into
AttrData - Make
host.nameanAttrDataStr - Hash
True,FalseandNoneconstants as the same so they can change between hosts without branching operations - Update docs and warning on operation branching
- Generate
- Better default for pool parallel size
- Show stdout if stderr is empty on command failure (surprisingly common)
pyinfra v0.6.1
pyinfra v0.6
Changes in 0.6:
- Make
--limitapply the limit similarly tostate.limit- makes it possible to execute facts on hosts outside the
--limit --limitno longer alters the inventory, instead provides an "initial" state limit
- makes it possible to execute facts on hosts outside the
- Add
when=Truekwarg tolocal.include - Make it possible to add
datato individual hosts in@vagrant.jsonconfiguration files - Add
memoryandcpusfacts - Refactor how we track host state throughout deploy
- Refactor facts to only gather missing ones (enabling partial gathering)
- Improve check for valid
/etc/init.d/services by looking for LSB header - Fix boolean constant detection with AST in Python3
- Fix parsing ls output where
setgidis set - Fix sudo/su file uploads with the
@localconnector
pyinfra v0.5.3
Changes in 0.5.3:
- Fix writing unicode data with
@local - Capture
IOErrors when SFTPing, note where remote disks might be full - Properly serialise
Hostobjects for--debug-state
pyinfra v0.5.2
Changes in 0.5.2:
- Add
exclude_dirandadd_deploy_dirkwargs tofiles.sync - Add pipfile for dev
- Fix
files.putwhen using@local
pyinfra v0.5.1
Changes in 0.5.1:
- Make environment variables stick between multiple commands
- Fix npm packages fact missing a return(!)
pyinfra v0.5
Changes in 0.5:
Vagrant connector:
# Run a deploy on all Vagrant machines (vagrant status list)
pyinfra @vagrant deploy.py
pyinfra @vagrant/vm_name deploy.py
# Can be used in tandem with other inventory:
pyinfra @vagrant,my-host.net deploy.py
pyinfra @vagrant,@local,my-host.net fact osConsistent conditional branching:
- Add global
whenkwarg to all operations, similar tohostscan be used to prevent operations executing on hosts based on a condition - Add
state.limit(hosts)andstate.when(condition)context managers to use in place ofifstatements within deploys @deploys and the context managers (state.limit,state.when) can all be nested as much as needed (although if you need to nest a lot, you're probably doing it wrong!)- Add
data_defaultskwarg to@deployfunctions, meaning third party pyinfra packages can provide sensible defaults that the user can override individually - Display a large warning when imbalanced branches are detected, linking the user to the documentation for the above
Examples:
from pyinfra import host, state
from pyinfra.modules import server
# Replace if blocks with the state.when context
with state.when(host.name == 'my-host.net'):
server.shell('echo "my-host.net op!"')
...
# Use the when kwarg to achieve the same, for single operations
server.shell(
'echo "my-host.net op!"',
when=host.name == 'my-host.net',
)
with state.limit(inventory.get_host('my-host.net')):
server.shell('echo "my-host.net op!"')
...
server.shell(
'echo "my-host.net op!"',
limit=inventory.get_host('my-host.net'),
)Note that if statements/etc still work as before but pyinfra will print out a warning explaining the implications and linking to the docs (http://pyinfra.readthedocs.io/page/using_python.html#conditional-branches).
- Hooks change: no longer loaded from deploy files, only from
config.py, due to changes from0.4(removal ofFakeStatenonsense) - Add
gpgkeyargument to theyum.repooperation - Add
lsb_releasefact apt_sourcesfact now supports apt repos with options ([arch=amd64])- Improved error output when connecting
- Update testing box from Ubuntu 15 to Ubuntu 16
- Ensure
~/.sshexists keyscanning inssh.keyscan - Don't include tests during setup!
- Fix caching of local SHA1s on files
pyinfra v0.4.1
Changes in 0.4.1:
- Add
vzctl.unmountoperation - Add script to generate empty test files
- Increase module test coverage significantly
- Fix incorrect args in
vzctl.restartoperation - Fix
save=Falsekwarg onvzctl.setnot affecting command output (always saved) - Fix
gem.packagesinstall command