Getting Started¶
This guide should help describe the basics of deploying stuff with pyinfra.
Install & Usage¶
pyinfra requires Python and can be installed with pip:
pip install pyinfra
# pyinfra is used like so:
pyinfra INVENTORY COMMANDS...
Executing Commands¶
To deploy something with pyinfra, you need an inventory. This specifies the target hosts, groups and any data associated with them. The simplest inventory is simply a comma separated list of target hostnames passed to the CLI. Let’s start using pyinfra with a basic echo command:
# On Unix systems:
pyinfra @local exec -- echo "hello world"
# On Windows you'll need a server to SSH into:
pyinfra my-server.net exec -- echo "hello world"
As you’ll see, pyinfra runs the echo command and prints the output.
@local
:- On *nix systems this special hostname can be used to execute commands on the local machine, without the need for SSH.
Create a Deploy¶
To write persistent (on disk) deploys with pyinfra you just use Python files. These, along with any associated files/templates/etc are called deploys. In this file you import the pyinfra modules needed and define the remote state desired with function calls. For example if you create a file deploy.py
:
# Import pyinfra modules, each containing operations to use
from pyinfra.modules import files
# Ensure the state of a user
files.directory(
'my_directory',
sudo=True,
)
Like above, this deploy ensures that the directory my_directory
exists in the current/home directory. To execute the deploy:
pyinfra my-server.net deploy.py
That’s the basics of pyinfra! There’s a lot of other features like facts, groups, data which are described in the building a deploy guide. Also see the operations index and the example deploy on GitHub.