Skip to content

Facts

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

uv

Package Manager Python

vzctl

Containers System

xbps

Package Manager System

yum

Package Manager System

zfs

Storage System

zypper

Package Manager System