Facts IndexΒΆ

pyinfra uses facts to determine the existing state of a remote server. Operations use this information to generate commands which alter the state. Facts are read-only and are populated at the beginning of the deploy.

Facts can be executed/tested via the command line:

# Example how to get multiple facts from a server myhost.com
pyinfra myhost.com fact server.Date server.Hostname ...

If you want to pass an argument to a fact, pass it with key=value. For example:

# See if the package 'openssh-server' is installed servers myhost.com and myhost2.com
pyinfra myhost.com,myhost2.com fact deb.DebPackage name=openssh-server

Multiple facts with arguments may be called like so:

pyinfra @local fact files.File path=setup.py files.File path=anotherfile.txt

You can leverage facts within operations like this:

from pyinfra import host
from pyinfra.facts.server import LinuxName

if host.get_fact(LinuxName) == 'Ubuntu':
    apt.packages(...)

Want a new fact? Check out the writing facts guide.

apk

Package Manager System
apt

Package Manager System
brew

Package Manager System
bsdinit

Service Management System
cargo

Package Manager Rust
choco

Package Manager System
crontab

System
deb

Package Manager
dnf

Package Manager System
docker

Containers System
efibootmgr

Boot System
files

System
flatpak

Package Manager System
freebsd

Package Manager
gem

Package Manager Ruby
git

Version Control System
gpg

Security
hardware

System
iptables

Security System
launchd

Service Management System
lxd

Containers System
mysql

Database System
npm

Package Manager Javascript
openrc

Service Management System
opkg

Package Manager System
pacman

Package Manager System
pip

Package Manager Python
pipx

Package Manager Python
pkg

Package Manager System
pkgin

Package Manager System
podman

Containers
postgres

Database System
postgresql

Database System
puppet

Configuration Management
rpm

Package Manager
runit

Service Management System
selinux

Security System
server

System
snap

Package Manager System
systemd

Service Management System
sysvinit

Service Management System
upstart

Service Management System
vzctl

Containers System
xbps

Package Manager System
yum

Package Manager System
zfs

Storage System
zypper

Package Manager System