Documentation Index
Fetch the complete documentation index at: https://mintlify.com/pyinfra-dev/pyinfra/llms.txt
Use this file to discover all available pages before exploring further.
The files operations handles filesystem state, file uploads and template generation.
Functions
files.download
Download files from remote locations using curl or wget.
files.download(
src,
dest,
user=None,
group=None,
mode=None,
cache_time=None,
force=False,
sha256sum=None,
headers=None,
insecure=False,
)
files.put
Upload a local file, or file-like object, to the remote system.
files.put(
src,
dest,
user=None,
group=None,
mode=None,
add_deploy_dir=True,
create_remote_dir=True,
force=False,
)
files.template
Generate a template using jinja2 and write it to the remote system.
files.template(
src,
dest,
user=None,
group=None,
mode=None,
create_remote_dir=True,
**data
)
files.line
Ensure lines in files using grep to locate and sed to replace.
files.line(
path,
line,
present=True,
replace=None,
flags=None,
backup=False,
)
files.replace
Replace contents of a file using sed.
files.replace(
path,
text,
replace,
flags=None,
backup=False,
)
files.sync
Syncs a local directory with a remote one, with delete support.
files.sync(
src,
dest,
user=None,
group=None,
mode=None,
dir_mode=None,
delete=False,
exclude=None,
)
files.directory
Add/remove/update directories.
files.directory(
path,
present=True,
user=None,
group=None,
mode=None,
recursive=False,
)
files.file
Add/remove files.
files.file(
path,
present=True,
user=None,
group=None,
mode=None,
touch=False,
)
files.link
Add/remove/update links.
files.link(
path,
target=None,
present=True,
user=None,
group=None,
symbolic=True,
)
Examples
from pyinfra.operations import files
# Download a file
files.download(
name="Download the Docker repo file",
src="https://download.docker.com/linux/centos/docker-ce.repo",
dest="/etc/yum.repos.d/docker-ce.repo",
)
# Upload a file
files.put(
name="Update the message of the day file",
src="files/motd",
dest="/etc/motd",
mode="644",
)
# Create a templated file
files.template(
name="Create a templated file",
src="templates/somefile.conf.j2",
dest="/etc/somefile.conf",
)
# Ensure a line in a file
files.line(
name="Add the down-for-maintenance line in /etc/motd",
path="/etc/motd",
line="SYSTEM IS DOWN FOR MAINTENANCE",
)
# Create a directory
files.directory(
name="Ensure /opt/myapp exists",
path="/opt/myapp",
mode="755",
user="www-data",
group="www-data",
)