diff --git a/en/3.x/.buildinfo b/en/3.x/.buildinfo index 7f071f77..a02a0420 100644 --- a/en/3.x/.buildinfo +++ b/en/3.x/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 553769cb09bd26734a1d1f0b73b811bb +config: d07f8dc595accdbcd20e4d63574213b7 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/en/3.x/_sources/api/connectors.md.txt b/en/3.x/_sources/api/connectors.md.txt index 4291ba0d..3ed6e870 100644 --- a/en/3.x/_sources/api/connectors.md.txt +++ b/en/3.x/_sources/api/connectors.md.txt @@ -86,3 +86,14 @@ class LocalConnector(BaseConnector): bool: indicating success or failure. """ ``` + +## pyproject.toml + +In order for pyinfra to gain knowledge about your connector, you need to add the following snippet to your connector's `pyproject.toml`: + +```toml +[project.entry-points.'pyinfra.connectors'] +# Key = Entry point name +# Value = module_path:class_name +custom = 'pyinfra_custom_connector.connector:LoggingConnector' +``` diff --git a/en/3.x/_sources/api/deploys.md.txt b/en/3.x/_sources/api/deploys.md.txt index 357d01ca..80d67de8 100644 --- a/en/3.x/_sources/api/deploys.md.txt +++ b/en/3.x/_sources/api/deploys.md.txt @@ -34,7 +34,7 @@ install_mariadb() ## Global Arguments -Deploys accept the same [global arguments as as operations](../deploys.html#global-arguments) and they apply to every operation call within that deploy. Taking the above example: +Deploys accept the same [global arguments as operations](../arguments) and they apply to every operation call within that deploy. Taking the above example: ```py diff --git a/en/3.x/_sources/api/index.rst.txt b/en/3.x/_sources/api/index.rst.txt index 74b5be56..d2faac8a 100644 --- a/en/3.x/_sources/api/index.rst.txt +++ b/en/3.x/_sources/api/index.rst.txt @@ -3,4 +3,64 @@ Using the API In addition to :doc:`the pyinfra CLI <../cli>`, pyinfra provides a full Python API. As of ``v3`` this API can be considered mostly stable. See the :doc:`./reference`. -`An example of how to use the API can be found here `_. Note: this is not yet tested and pending future updates. +You can also reference `pyinfra's own main.py `_, and the `pyinfra API source code `_. + +Full Example +============ + +`A full example of how to use the API can be found here `_. (Note: this is not yet tested and is pending future updates) + +Basic Localhost Example +======================= + +.. code:: python + + from pyinfra.api import Config, Inventory, State + from pyinfra.api.connect import connect_all + from pyinfra.api.operation import add_op + from pyinfra.api.operations import run_ops + from pyinfra.api.facts import get_facts + from pyinfra.facts.server import Os + from pyinfra.operations import server + + # Define your inventory (@local means execute on localhost using subprocess) + # https://docs.pyinfra.com/en/3.x/apidoc/pyinfra.api.inventory.html + inventory = Inventory((["@local"], {})) + + # Define any config you need + # https://docs.pyinfra.com/en/3.x/apidoc/pyinfra.api.config.html + config = Config(SUDO=True) + + # Set up the state object + # https://docs.pyinfra.com/en/3.x/apidoc/pyinfra.api.state.html + state = State(inventory=inventory, config=config) + + # Connect to all the hosts + connect_all(state) + + # Start adding operations + result1 = add_op( + state, + server.user, + user="pyinfra", + home="/home/pyinfra", + shell="/bin/bash", + ) + result2 = add_op( + state, + server.shell, + name="Run some shell commands", + commands=["whoami", "echo $PATH", "bash --version"] + ) + + # And finally we run the ops + run_ops(state) + + # add_op returns an OperationMeta for each op, letting you access stdout, stderr, etc. after they run + host = state.hosts.inventory['@local'] + print(result1.changed, result1[host].stdout, result1[host].stderr) + print(result2.changed, result2[host].stdout, result2[host].stderr) + + # We can also get facts for all the hosts + # https://docs.pyinfra.com/en/3.x/apidoc/pyinfra.api.facts.html + print(get_facts(state, Os)) diff --git a/en/3.x/_sources/cli.md.txt b/en/3.x/_sources/cli.md.txt index 034c7b2c..691776c3 100644 --- a/en/3.x/_sources/cli.md.txt +++ b/en/3.x/_sources/cli.md.txt @@ -46,7 +46,7 @@ By default pyinfra only prints high level information (this host connected, this ## Inventory -When using pyinfra inventory can be provided directly via the command line or [defined in a file](./deploys.html#inventory). Both support the full range of [connectors](./connectors) and multiple hosts. Some CLI examples: +When using pyinfra inventory can be provided directly via the command line or [defined in a file](./inventory-data). Both support the full range of [connectors](./connectors) and multiple hosts. Some CLI examples: ```sh # Load inventory hosts from a file diff --git a/en/3.x/_sources/compatibility.md.txt b/en/3.x/_sources/compatibility.md.txt index 665d8093..a85c4b5d 100644 --- a/en/3.x/_sources/compatibility.md.txt +++ b/en/3.x/_sources/compatibility.md.txt @@ -39,12 +39,36 @@ pyinfra aims to be compatible with all Unix-like operating systems and is curren * HardenedBSD 11 * DragonflyBSD 5 + OpenSUSE (leap15 + tumbleweed) -+ macOS 10.15 (with [`@local` connector](connectors.html#local)) -+ Docker (with [`@docker` connector](connectors.html#docker)) ++ macOS 10.15 (with [`@local` connector](./connectors/local)) ++ Docker (with [`@docker` connector](./connectors/docker)) In general, the only requirement on the remote side is shell access. POSIX commands are used where possible for facts and operations, so most of the ``server`` and ``files`` operations should work anywhere POSIX. +## Upgrading pyinfra from ``2.x`` -> ``3.x`` + +- Rename `_use_sudo_password` argument to `_sudo_password` +- Deploy decorator must be called: + +```py +# Old, 2.x decorator +@deploy +def mydeploy(): + ... + +# New, 3.x decorator +@deploy() +def mydeploy(): + ... +``` + +- Remove `@winrm` connector, will come back as [`pyinfra-windows`](https://github.com/pyinfra-dev/pyinfra-windows) + +## Upgrading pyinfra from ``1.x`` -> ``2.x`` + +- Python 2.7 (finally!), 3.5 support dropped, Python 3.6 is now the minimum required version +- The "deploy directory" concept has been removed - everything now executes from the current working directory which removes the ambiguous magic v1 used to pick a deploy directory. A new --chdir CLI flag has been added to set the working directory before pyinfra executes + ## Upgrading pyinfra from ``0.x`` -> ``1.x`` The move to `v1` removes a lot of old legacy functionality in pyinfra - there will be warnings written to the user in CLI mode if any of these are encountered. The full list can be seen [on the changelog](https://github.com/Fizzadar/pyinfra/blob/master/CHANGELOG.md#v1). In addition to these removals, `v1` brings a few major changes and deprecates the old methods. Again, pyinfra will output warnings when these are encountered, and support will be removed in `v2`. diff --git a/en/3.x/_sources/connectors/ssh.rst.txt b/en/3.x/_sources/connectors/ssh.rst.txt index a71782cf..8147ce8e 100644 --- a/en/3.x/_sources/connectors/ssh.rst.txt +++ b/en/3.x/_sources/connectors/ssh.rst.txt @@ -39,6 +39,7 @@ Multiple hosts with different SSH usernames: ("my-host-1.net", {"ssh_user": "ssh-user"}), ("my-host-2.net", {"ssh_user": "other-user"}), ] + Available Data ~~~~~~~~~~~~~~ diff --git a/en/3.x/_sources/contributing.md.txt b/en/3.x/_sources/contributing.md.txt index 9de875c6..7540b5b8 100644 --- a/en/3.x/_sources/contributing.md.txt +++ b/en/3.x/_sources/contributing.md.txt @@ -7,7 +7,7 @@ Third party pull requests help expand pyinfra's functionality and are essential ## Guides + [How to write operations](api/operations) -+ [How to write facts](api/facts) ++ [How to write facts](api/operations.md#facts) + [How to write connectors](api/connectors) + [API reference](api/reference) diff --git a/en/3.x/_sources/facts/hardware.rst.txt b/en/3.x/_sources/facts/hardware.rst.txt index ca94acc0..a0aedc92 100644 --- a/en/3.x/_sources/facts/hardware.rst.txt +++ b/en/3.x/_sources/facts/hardware.rst.txt @@ -152,6 +152,7 @@ Gets & returns a dict of network devices. See the ``ipv4_addresses`` and ``ipv6_addresses`` facts for easier-to-use shortcuts to get device addresses. .. code:: python + "enp1s0": { "ether": "12:34:56:78:9A:BC", "mtu": 1500, diff --git a/en/3.x/_sources/facts/selinux.rst.txt b/en/3.x/_sources/facts/selinux.rst.txt index 09c50875..7a37cc2d 100644 --- a/en/3.x/_sources/facts/selinux.rst.txt +++ b/en/3.x/_sources/facts/selinux.rst.txt @@ -35,7 +35,8 @@ or ``None`` if the file does not exist. host.get_fact(FileContextMapping, target) Returns structured SELinux file context data for the specified target path prefix -using the same format as :ref:`selinux.FileContext`. If there is no mapping, it returns ``{}`` +using the same format as :ref:`facts:selinux.FileContext`. +If there is no mapping, it returns ``{}`` Note: This fact requires root privileges. @@ -79,6 +80,7 @@ Returns the SELinux 'type' definitions for ``(tcp|udp|dccp|sctp)`` ports. Note: This fact requires root privileges. .. code:: python + { "tcp": { 22: "ssh_port_t", ...}, "udp": { ...} diff --git a/en/3.x/_sources/install.md.txt b/en/3.x/_sources/install.md.txt index f257ea0f..e43cbbb3 100644 --- a/en/3.x/_sources/install.md.txt +++ b/en/3.x/_sources/install.md.txt @@ -1,3 +1,8 @@ +--- +# Ignore warning about this page not being included in any toctree +orphan: true +--- + # Installation ## Pip diff --git a/en/3.x/_sources/operations/apt.rst.txt b/en/3.x/_sources/operations/apt.rst.txt index 76d9d1fc..b78d402d 100644 --- a/en/3.x/_sources/operations/apt.rst.txt +++ b/en/3.x/_sources/operations/apt.rst.txt @@ -88,7 +88,8 @@ keyserver/id: .. warning:: ``apt-key`` is deprecated in Debian, it is recommended NOT to use this operation and instead follow the instructions here: - https://wiki.debian.org/DebianRepository/UseThirdParty + + https://wiki.debian.org/DebianRepository/UseThirdParty **Examples:** diff --git a/en/3.x/_sources/operations/files.rst.txt b/en/3.x/_sources/operations/files.rst.txt index 67bc6262..22573b74 100644 --- a/en/3.x/_sources/operations/files.rst.txt +++ b/en/3.x/_sources/operations/files.rst.txt @@ -335,7 +335,7 @@ Regex line matching: change bits of lines, see ``files.replace``. Regex line escaping: - If matching special characters (eg a crontab line containing *), remember to escape + If matching special characters (eg a crontab line containing ``*``), remember to escape it first using Python's ``re.escape``. Backup: @@ -591,7 +591,7 @@ remove extra files on the remote side, but not extra directories. + **mode**: permissions of the files + **dir_mode**: permissions of the directories + **delete**: delete remote files not present locally -+ **exclude**: string or list/tuple of strings to match & exclude files (eg *.pyc) ++ **exclude**: string or list/tuple of strings to match & exclude files (eg ``*.pyc``) + **exclude_dir**: string or list/tuple of strings to match & exclude directories (eg node_modules) + **add_deploy_dir**: interpret src as relative to deploy directory instead of current directory diff --git a/en/3.x/_sources/operations/git.rst.txt b/en/3.x/_sources/operations/git.rst.txt index 9cc1e617..61bb755a 100644 --- a/en/3.x/_sources/operations/git.rst.txt +++ b/en/3.x/_sources/operations/git.rst.txt @@ -122,7 +122,7 @@ Manage git worktrees. + **from_remote_branch**: a 2-tuple ``(remote, branch)`` that identifies a remote branch + **present**: whether the working tree should exist + **assume_repo_exists**: whether to assume the main repo exists -+ **force**: remove unclean working tree if should not exist ++ **force**: whether to use ``--force`` when adding/removing worktrees + **user**: chown files to this user after + **group**: chown files to this group after @@ -143,6 +143,14 @@ Manage git worktrees. commitish="4e091aa0" ) + git.worktree( + name="Create a worktree from the tag `4e091aa0`, even if already registered", + repo="/usr/local/src/pyinfra/master", + worktree="/usr/local/src/pyinfra/2.x", + commitish="2.x", + force=True + ) + git.worktree( name="Create a worktree with a new local branch `v1.0`", repo="/usr/local/src/pyinfra/master", @@ -188,6 +196,15 @@ Manage git worktrees. commitish="v1.0" ) + git.worktree( + name="Idempotent worktree creation, never pulls", + repo="/usr/local/src/pyinfra/master", + worktree="/usr/local/src/pyinfra/hotfix", + new_branch="v1.0", + commitish="v1.0", + pull=False + ) + git.worktree( name="Pull an existing worktree already linked to a tracking branch", repo="/usr/local/src/pyinfra/master", diff --git a/en/3.x/_sources/operations/zfs.rst.txt b/en/3.x/_sources/operations/zfs.rst.txt index efd9ad38..4e562e3a 100644 --- a/en/3.x/_sources/operations/zfs.rst.txt +++ b/en/3.x/_sources/operations/zfs.rst.txt @@ -25,20 +25,20 @@ volume, snapshot). + **sparse**: for volumes, whether to create a sparse volume with no allocation + **volume_size**: the size of the volume + **properties**: the ZFS properties that should be set on the dataset. -+ **extra_props: additional props; merged with `properties` for convenience ++ ****extra_props**: additional props; merged with `properties` for convenience **Examples:** .. code:: python -zfs.dataset( - "tank/srv", - mountpoint="/srv", - compression="lz4", - properties={"com.sun:auto_snapshot": "true"} -) -zfs.dataset("tank/vm-disks/db_srv_04", volume_size="32G") # creates a volume -zfs.dataset("tank/home@old_version", present=False) + zfs.dataset( + "tank/srv", + mountpoint="/srv", + compression="lz4", + properties={"com.sun:auto_snapshot": "true"} + ) + zfs.dataset("tank/vm-disks/db_srv_04", volume_size="32G") # creates a volume + zfs.dataset("tank/home@old_version", present=False) .. _operations:zfs.filesystem: @@ -56,13 +56,13 @@ Create or destroy a ZFS filesystem, or modify its properties. + **present**: whether the named volume should exist + **recursive**: whether to create parent datasets or destroy child datasets + **properties**: the ZFS properties that should be set on the snapshot. -+ **extra_props: additional props; merged with `properties` for convenience ++ ****extra_props**: additional props; merged with `properties` for convenience **Examples:** .. code:: python -zfs.filesystem("tank/vm-disks/db_srv_04", "32G") + zfs.filesystem("tank/vm-disks/db_srv_04", "32G") .. _operations:zfs.snapshot: @@ -80,13 +80,13 @@ Create or destroy a ZFS snapshot, or modify its properties. + **present**: whether the named filesystem should exist + **recursive**: whether to snapshot child datasets + **properties**: the ZFS properties that should be set on the snapshot. -+ **extra_props: additional props; merged with `properties` for convenience ++ ****extra_props**: additional props; merged with `properties` for convenience **Examples:** .. code:: python -zfs.snapshot("tank/home@weekly_backup") + zfs.snapshot("tank/home@weekly_backup") .. _operations:zfs.volume: @@ -106,11 +106,11 @@ Create or destroy a ZFS volume, or modify its properties. + **present**: whether the named volume should exist + **recursive**: whether to create parent datasets or destroy child datasets + **properties**: the ZFS properties that should be set on the snapshot. -+ **extra_props: additional props; merged with `properties` for convenience ++ ****extra_props**: additional props; merged with `properties` for convenience **Examples:** .. code:: python -zfs.volume("tank/vm-disks/db_srv_04", "32G") + zfs.volume("tank/vm-disks/db_srv_04", "32G") diff --git a/en/3.x/_sources/support.md.txt b/en/3.x/_sources/support.md.txt index 0d182871..61b8afb3 100644 --- a/en/3.x/_sources/support.md.txt +++ b/en/3.x/_sources/support.md.txt @@ -5,16 +5,16 @@ Need a hand with using pyinfra or have some questions? You can find official pyi + Chat in [the `pyinfra` Matrix room](https://matrix.to/#/#pyinfra:matrix.org) + Ask questions on [Stack Overflow](https://stackoverflow.com/questions/tagged/pyinfra) (be sure to use the `pyinfra` tag!) -### I think I've got a bug! +## I think I've got a bug! + Please have a quick scan of the [the compatibility page](./compatibility) to see if the issue is referenced there + Check [the issue list](https://github.com/Fizzadar/pyinfra/issues) to see if anyone else has this issue + Submit [a new bug report](https://github.com/Fizzadar/pyinfra/issues/new/choose) -### I have an idea! +## I have an idea! Please consider [submitting a feature request](https://github.com/Fizzadar/pyinfra/issues/new/choose). -### I'd like to contribute! +## I'd like to contribute! Fantastic! Please see [the contributing docs](./contributing). diff --git a/en/3.x/api/connectors.html b/en/3.x/api/connectors.html index 7de16f7f..f61e3f05 100644 --- a/en/3.x/api/connectors.html +++ b/en/3.x/api/connectors.html @@ -107,10 +107,13 @@

Navigation

  • Writing Connectors
  • Writing Facts & Operations
  • Using the API
  • +
  • Full Example
  • +
  • Basic Localhost Example
  • Meta

      @@ -217,6 +220,16 @@

      Executing Connector +

      pyproject.toml

      +

      In order for pyinfra to gain knowledge about your connector, you need to add the following snippet to your connector’s pyproject.toml:

      +
      [project.entry-points.'pyinfra.connectors']
      +# Key = Entry point name
      +# Value = module_path:class_name
      +custom = 'pyinfra_custom_connector.connector:LoggingConnector'
      +
      +
      + diff --git a/en/3.x/api/deploys.html b/en/3.x/api/deploys.html index 402494c7..72e6b954 100644 --- a/en/3.x/api/deploys.html +++ b/en/3.x/api/deploys.html @@ -112,6 +112,8 @@

      Navigation

    • Writing Connectors
    • Writing Facts & Operations
    • Using the API
    • +
    • Full Example
    • +
    • Basic Localhost Example

    Meta

    Meta

      @@ -129,7 +131,65 @@

      Navigation

      Using the API

      In addition to the pyinfra CLI, pyinfra provides a full Python API. As of v3 this API can be considered mostly stable. See the API Reference.

      -

      An example of how to use the API can be found here. Note: this is not yet tested and pending future updates.

      +

      You can also reference pyinfra’s own main.py, and the pyinfra API source code.

      +
      +
      +

      Full Example

      +

      A full example of how to use the API can be found here. (Note: this is not yet tested and is pending future updates)

      +
      +
      +

      Basic Localhost Example

      +
      from pyinfra.api import Config, Inventory, State
      +from pyinfra.api.connect import connect_all
      +from pyinfra.api.operation import add_op
      +from pyinfra.api.operations import run_ops
      +from pyinfra.api.facts import get_facts
      +from pyinfra.facts.server import Os
      +from pyinfra.operations import server
      +
      +# Define your inventory (@local means execute on localhost using subprocess)
      +# https://docs.pyinfra.com/en/3.x/apidoc/pyinfra.api.inventory.html
      +inventory = Inventory((["@local"], {}))
      +
      +# Define any config you need
      +# https://docs.pyinfra.com/en/3.x/apidoc/pyinfra.api.config.html
      +config = Config(SUDO=True)
      +
      +# Set up the state object
      +# https://docs.pyinfra.com/en/3.x/apidoc/pyinfra.api.state.html
      +state = State(inventory=inventory, config=config)
      +
      +# Connect to all the hosts
      +connect_all(state)
      +
      +# Start adding operations
      +result1 = add_op(
      +    state,
      +    server.user,
      +    user="pyinfra",
      +    home="/home/pyinfra",
      +    shell="/bin/bash",
      +)
      +result2 = add_op(
      +    state,
      +    server.shell,
      +    name="Run some shell commands",
      +    commands=["whoami", "echo $PATH", "bash --version"]
      +)
      +
      +# And finally we run the ops
      +run_ops(state)
      +
      +# add_op returns an OperationMeta for each op, letting you access stdout, stderr, etc. after they run
      +host = state.hosts.inventory['@local']
      +print(result1.changed, result1[host].stdout, result1[host].stderr)
      +print(result2.changed, result2[host].stdout, result2[host].stderr)
      +
      +# We can also get facts for all the hosts
      +# https://docs.pyinfra.com/en/3.x/apidoc/pyinfra.api.facts.html
      +print(get_facts(state, Os))
      +
      +
      diff --git a/en/3.x/api/operations.html b/en/3.x/api/operations.html index b63e9b2a..334efc5d 100644 --- a/en/3.x/api/operations.html +++ b/en/3.x/api/operations.html @@ -122,6 +122,8 @@

      Navigation

  • Using the API
  • +
  • Full Example
  • +
  • Basic Localhost Example
  • Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

      @@ -119,6 +121,8 @@

      Navigation

  • Remote Systems
  • +
  • Upgrading pyinfra from 2.x -> 3.x
  • +
  • Upgrading pyinfra from 1.x -> 2.x
  • Upgrading pyinfra from 0.x -> 1.x

    In general, the only requirement on the remote side is shell access. POSIX commands are used where possible for facts and operations, so most of the server and files operations should work anywhere POSIX.

    +
    +

    Upgrading pyinfra from 2.x -> 3.x

    +
      +
    • Rename _use_sudo_password argument to _sudo_password
    • +
    • Deploy decorator must be called:
    • +
    +
    # Old, 2.x decorator
    +@deploy
    +def mydeploy():
    +    ...
    +
    +# New, 3.x decorator
    +@deploy()
    +def mydeploy():
    +    ...
    +
    +
    + +
    +
    +

    Upgrading pyinfra from 1.x -> 2.x

    +
      +
    • Python 2.7 (finally!), 3.5 support dropped, Python 3.6 is now the minimum required version
    • +
    • The “deploy directory” concept has been removed - everything now executes from the current working directory which removes the ambiguous magic v1 used to pick a deploy directory. A new –chdir CLI flag has been added to set the working directory before pyinfra executes
    • +
    +

    Upgrading pyinfra from 0.x -> 1.x

    The move to v1 removes a lot of old legacy functionality in pyinfra - there will be warnings written to the user in CLI mode if any of these are encountered. The full list can be seen on the changelog. In addition to these removals, v1 brings a few major changes and deprecates the old methods. Again, pyinfra will output warnings when these are encountered, and support will be removed in v2.

    diff --git a/en/3.x/connectors.html b/en/3.x/connectors.html index 74adf61b..02f7b1aa 100644 --- a/en/3.x/connectors.html +++ b/en/3.x/connectors.html @@ -116,6 +116,8 @@

    Navigation

  • Writing Connectors
  • Writing Facts & Operations
  • Using the API
  • +
  • Full Example
  • +
  • Basic Localhost Example
  • Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    diff --git a/en/3.x/operations/flatpak.html b/en/3.x/operations/flatpak.html index bf4be5bc..a73cafc4 100644 --- a/en/3.x/operations/flatpak.html +++ b/en/3.x/operations/flatpak.html @@ -152,6 +152,8 @@

    Navigation

  • Writing Connectors
  • Writing Facts & Operations
  • Using the API
  • +
  • Full Example
  • +
  • Basic Localhost Example
  • Meta

    Meta

    Meta

    @@ -289,6 +291,14 @@

    Git Operationscommitish="4e091aa0" ) +git.worktree( + name="Create a worktree from the tag `4e091aa0`, even if already registered", + repo="/usr/local/src/pyinfra/master", + worktree="/usr/local/src/pyinfra/2.x", + commitish="2.x", + force=True +) + git.worktree( name="Create a worktree with a new local branch `v1.0`", repo="/usr/local/src/pyinfra/master", @@ -334,6 +344,15 @@

    Git Operationscommitish="v1.0" ) +git.worktree( + name="Idempotent worktree creation, never pulls", + repo="/usr/local/src/pyinfra/master", + worktree="/usr/local/src/pyinfra/hotfix", + new_branch="v1.0", + commitish="v1.0", + pull=False +) + git.worktree( name="Pull an existing worktree already linked to a tracking branch", repo="/usr/local/src/pyinfra/master", diff --git a/en/3.x/operations/iptables.html b/en/3.x/operations/iptables.html index 640f8293..2849dea8 100644 --- a/en/3.x/operations/iptables.html +++ b/en/3.x/operations/iptables.html @@ -153,6 +153,8 @@

    Navigation

  • Writing Connectors
  • Writing Facts & Operations
  • Using the API
  • +
  • Full Example
  • +
  • Basic Localhost Example
  • Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

    Meta

      @@ -192,18 +194,19 @@

      Zfs Operations**extra_props: additional props; merged with properties for convenience +
    • **extra_props: additional props; merged with properties for convenience

    Examples:

    -
    -
    zfs.dataset(
    “tank/srv”, -mountpoint=”/srv”, -compression=”lz4”, -properties={“com.sun:auto_snapshot”: “true”}
    -
    -

    ) -zfs.dataset(“tank/vm-disks/db_srv_04”, volume_size=”32G”) # creates a volume -zfs.dataset(”tank/home@old_version”, present=False)

    +
    zfs.dataset(
    +    "tank/srv",
    +    mountpoint="/srv",
    +    compression="lz4",
    +    properties={"com.sun:auto_snapshot": "true"}
    +)
    +zfs.dataset("tank/vm-disks/db_srv_04", volume_size="32G") # creates a volume
    +zfs.dataset("tank/home@old_version", present=False)
    +
    +

    zfs.filesystem

    @@ -216,10 +219,12 @@

    Zfs Operations**extra_props: additional props; merged with properties for convenience +
  • **extra_props: additional props; merged with properties for convenience
  • Examples:

    -

    zfs.filesystem(“tank/vm-disks/db_srv_04”, “32G”)

    +
    zfs.filesystem("tank/vm-disks/db_srv_04", "32G")
    +
    +

    zfs.snapshot

    @@ -232,10 +237,12 @@

    Zfs Operations**extra_props: additional props; merged with properties for convenience +
  • **extra_props: additional props; merged with properties for convenience
  • Examples:

    -

    zfs.snapshot(”tank/home@weekly_backup”)

    +
    zfs.snapshot("tank/home@weekly_backup")
    +
    +

    zfs.volume

    @@ -250,10 +257,12 @@

    Zfs Operations**extra_props: additional props; merged with properties for convenience +
  • **extra_props: additional props; merged with properties for convenience
  • Examples:

    -

    zfs.volume(“tank/vm-disks/db_srv_04”, “32G”)

    +
    zfs.volume("tank/vm-disks/db_srv_04", "32G")
    +
    +

    diff --git a/en/3.x/operations/zypper.html b/en/3.x/operations/zypper.html index 7fa87d4c..6f7bdbff 100644 --- a/en/3.x/operations/zypper.html +++ b/en/3.x/operations/zypper.html @@ -155,6 +155,8 @@

    Navigation

  • Writing Connectors
  • Writing Facts & Operations
  • Using the API
  • +
  • Full Example
  • +
  • Basic Localhost Example
  • Meta

    Meta

    Meta

    Meta

    Meta

      diff --git a/en/3.x/searchindex.js b/en/3.x/searchindex.js index 93e601a6..acbfad82 100644 --- a/en/3.x/searchindex.js +++ b/en/3.x/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["api/connectors", "api/deploys", "api/index", "api/operations", "api/reference", "apidoc/pyinfra.api.arguments", "apidoc/pyinfra.api.arguments_typed", "apidoc/pyinfra.api.command", "apidoc/pyinfra.api.config", "apidoc/pyinfra.api.connect", "apidoc/pyinfra.api.connectors", "apidoc/pyinfra.api.deploy", "apidoc/pyinfra.api.exceptions", "apidoc/pyinfra.api.facts", "apidoc/pyinfra.api.host", "apidoc/pyinfra.api.inventory", "apidoc/pyinfra.api.operation", "apidoc/pyinfra.api.operations", "apidoc/pyinfra.api.state", "apidoc/pyinfra.api.util", "apidoc/pyinfra.context", "apidoc/pyinfra.local", "apidoc/pyinfra.progress", "apidoc/pyinfra.version", "arguments", "cli", "compatibility", "connectors", "connectors/chroot", "connectors/docker", "connectors/dockerssh", "connectors/local", "connectors/ssh", "connectors/terraform", "connectors/vagrant", "contributing", "deploy-process", "examples", "examples/client_side_assets", "examples/data_multiple_environments", "examples/dynamic_execution_deploy", "examples/dynamic_inventories_data", "examples/groups_roles", "examples/secret_storage", "facts", "facts/apk", "facts/apt", "facts/brew", "facts/bsdinit", "facts/cargo", "facts/choco", "facts/deb", "facts/dnf", "facts/docker", "facts/files", "facts/flatpak", "facts/gem", "facts/git", "facts/gpg", "facts/hardware", "facts/iptables", "facts/launchd", "facts/lxd", "facts/mysql", "facts/npm", "facts/openrc", "facts/pacman", "facts/pip", "facts/pkg", "facts/pkgin", "facts/postgres", "facts/postgresql", "facts/rpm", "facts/runit", "facts/selinux", "facts/server", "facts/snap", "facts/systemd", "facts/sysvinit", "facts/upstart", "facts/vzctl", "facts/xbps", "facts/yum", "facts/zfs", "facts/zypper", "faq", "getting-started", "index", "install", "inventory-data", "operations", "operations/apk", "operations/apt", "operations/brew", "operations/bsdinit", "operations/cargo", "operations/choco", "operations/dnf", "operations/docker", "operations/files", "operations/flatpak", "operations/gem", "operations/git", "operations/iptables", "operations/launchd", "operations/lxd", "operations/mysql", "operations/npm", "operations/openrc", "operations/pacman", "operations/pip", "operations/pkg", "operations/pkgin", "operations/postgres", "operations/postgresql", "operations/puppet", "operations/python", "operations/runit", "operations/selinux", "operations/server", "operations/snap", "operations/ssh", "operations/systemd", "operations/sysvinit", "operations/upstart", "operations/vzctl", "operations/xbps", "operations/yum", "operations/zfs", "operations/zypper", "performance", "public/en/0.x/_static/fonts/source-serif-pro/README", "support", "using-operations"], "filenames": ["api/connectors.md", "api/deploys.md", "api/index.rst", "api/operations.md", "api/reference.rst", "apidoc/pyinfra.api.arguments.rst", "apidoc/pyinfra.api.arguments_typed.rst", "apidoc/pyinfra.api.command.rst", "apidoc/pyinfra.api.config.rst", "apidoc/pyinfra.api.connect.rst", "apidoc/pyinfra.api.connectors.rst", "apidoc/pyinfra.api.deploy.rst", "apidoc/pyinfra.api.exceptions.rst", "apidoc/pyinfra.api.facts.rst", "apidoc/pyinfra.api.host.rst", "apidoc/pyinfra.api.inventory.rst", "apidoc/pyinfra.api.operation.rst", "apidoc/pyinfra.api.operations.rst", "apidoc/pyinfra.api.state.rst", "apidoc/pyinfra.api.util.rst", "apidoc/pyinfra.context.rst", "apidoc/pyinfra.local.rst", "apidoc/pyinfra.progress.rst", "apidoc/pyinfra.version.rst", "arguments.rst", "cli.md", "compatibility.md", "connectors.rst", "connectors/chroot.rst", "connectors/docker.rst", "connectors/dockerssh.rst", "connectors/local.rst", "connectors/ssh.rst", "connectors/terraform.rst", "connectors/vagrant.rst", "contributing.md", "deploy-process.rst", "examples.rst", "examples/client_side_assets.md", "examples/data_multiple_environments.md", "examples/dynamic_execution_deploy.md", "examples/dynamic_inventories_data.md", "examples/groups_roles.md", "examples/secret_storage.md", "facts.rst", "facts/apk.rst", "facts/apt.rst", "facts/brew.rst", "facts/bsdinit.rst", "facts/cargo.rst", "facts/choco.rst", "facts/deb.rst", "facts/dnf.rst", "facts/docker.rst", "facts/files.rst", "facts/flatpak.rst", "facts/gem.rst", "facts/git.rst", "facts/gpg.rst", "facts/hardware.rst", "facts/iptables.rst", "facts/launchd.rst", "facts/lxd.rst", "facts/mysql.rst", "facts/npm.rst", "facts/openrc.rst", "facts/pacman.rst", "facts/pip.rst", "facts/pkg.rst", "facts/pkgin.rst", "facts/postgres.rst", "facts/postgresql.rst", "facts/rpm.rst", "facts/runit.rst", "facts/selinux.rst", "facts/server.rst", "facts/snap.rst", "facts/systemd.rst", "facts/sysvinit.rst", "facts/upstart.rst", "facts/vzctl.rst", "facts/xbps.rst", "facts/yum.rst", "facts/zfs.rst", "facts/zypper.rst", "faq.rst", "getting-started.rst", "index.rst", "install.md", "inventory-data.rst", "operations.rst", "operations/apk.rst", "operations/apt.rst", "operations/brew.rst", "operations/bsdinit.rst", "operations/cargo.rst", "operations/choco.rst", "operations/dnf.rst", "operations/docker.rst", "operations/files.rst", "operations/flatpak.rst", "operations/gem.rst", "operations/git.rst", "operations/iptables.rst", "operations/launchd.rst", "operations/lxd.rst", "operations/mysql.rst", "operations/npm.rst", "operations/openrc.rst", "operations/pacman.rst", "operations/pip.rst", "operations/pkg.rst", "operations/pkgin.rst", "operations/postgres.rst", "operations/postgresql.rst", "operations/puppet.rst", "operations/python.rst", "operations/runit.rst", "operations/selinux.rst", "operations/server.rst", "operations/snap.rst", "operations/ssh.rst", "operations/systemd.rst", "operations/sysvinit.rst", "operations/upstart.rst", "operations/vzctl.rst", "operations/xbps.rst", "operations/yum.rst", "operations/zfs.rst", "operations/zypper.rst", "performance.rst", "public/en/0.x/_static/fonts/source-serif-pro/README.md", "support.md", "using-operations.rst"], "titles": ["Writing Connectors", "Packaging Deploys", "Using the API", "Writing Facts & Operations", "API Reference", "pyinfra.api.arguments module", "pyinfra.api.arguments_typed module", "pyinfra.api.command module", "pyinfra.api.config module", "pyinfra.api.connect module", "pyinfra.api.connectors module", "pyinfra.api.deploy module", "pyinfra.api.exceptions module", "pyinfra.api.facts module", "pyinfra.api.host module", "pyinfra.api.inventory module", "pyinfra.api.operation module", "pyinfra.api.operations module", "pyinfra.api.state module", "pyinfra.api.util module", "pyinfra.context module", "pyinfra.local module", "pyinfra.progress module", "pyinfra.version module", "Global Arguments", "Using the CLI", "Compatibility", "Connectors Index", "@chroot Connector", "@docker Connector", "@dockerssh Connector", "@local Connector", "@ssh Connector", "@terraform Connector", "@vagrant Connector", "Contributing", "How pyinfra Works", "Example Deploys", "Client Side Assets", "Data Across Multiple Environments", "Dynamic Execution during Deploy", "Dynamic Inventories & Data", "Groups & Roles", "Using Secrets in pyinfra", "Facts Index", "Apk Facts", "Apt Facts", "Brew Facts", "Bsdinit Facts", "Cargo Facts", "Choco Facts", "Deb Facts", "Dnf Facts", "Docker Facts", "Files Facts", "Flatpak Facts", "Gem Facts", "Git Facts", "Gpg Facts", "Hardware Facts", "Iptables Facts", "Launchd Facts", "Lxd Facts", "Mysql Facts", "Npm Facts", "Openrc Facts", "Pacman Facts", "Pip Facts", "Pkg Facts", "Pkgin Facts", "Postgres Facts", "Postgresql Facts", "Rpm Facts", "Runit Facts", "Selinux Facts", "Server Facts", "Snap Facts", "Systemd Facts", "Sysvinit Facts", "Upstart Facts", "Vzctl Facts", "Xbps Facts", "Yum Facts", "Zfs Facts", "Zypper Facts", "Frequently Asked Questions", "Getting Started", "pyinfra Documentation", "Installation", "Inventory & Data", "Operations Index", "Apk Operations", "Apt Operations", "Brew Operations", "Bsdinit Operations", "Cargo Operations", "Choco Operations", "Dnf Operations", "Docker Operations", "Files Operations", "Flatpak Operations", "Gem Operations", "Git Operations", "Iptables Operations", "Launchd Operations", "Lxd Operations", "Mysql Operations", "Npm Operations", "Openrc Operations", "Pacman Operations", "Pip Operations", "Pkg Operations", "Pkgin Operations", "Postgres Operations", "Postgresql Operations", "Puppet Operations", "Python Operations", "Runit Operations", "Selinux Operations", "Server Operations", "Snap Operations", "Ssh Operations", "Systemd Operations", "Sysvinit Operations", "Upstart Operations", "Vzctl Operations", "Xbps Operations", "Yum Operations", "Zfs Operations", "Zypper Operations", "Performance", "Source Serif Pro", "Help & Support", "Using Operations"], "terms": {"enabl": [0, 1, 3, 7, 11, 13, 25, 26, 27, 32, 36, 52, 65, 75, 77, 82, 84, 90, 94, 97, 98, 104, 108, 117, 119, 122, 124, 127, 129], "pyinfra": [0, 1, 2, 3, 4, 24, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 54, 70, 85, 88, 89, 90, 92, 97, 99, 102, 110, 113, 119, 121, 124, 127, 129, 130, 132, 133], "directli": [0, 14, 25, 125], "integr": [0, 27], "other": [0, 3, 13, 24, 25, 27, 32, 35, 40, 75, 89, 92, 113, 117, 119, 121, 123, 133], "tool": [0, 1, 25, 27, 35, 88, 119, 130, 131], "system": [0, 1, 25, 48, 53, 54, 75, 92, 97, 98, 99, 103, 119, 120, 127, 129, 131], "connecto": [], "ar": [0, 1, 3, 4, 12, 15, 16, 20, 24, 25, 26, 27, 32, 35, 36, 37, 38, 44, 48, 54, 77, 85, 86, 88, 89, 90, 92, 97, 99, 111, 119, 125, 126, 127, 129, 133], "written": [0, 3, 26, 36], "python": [0, 1, 2, 3, 21, 26, 35, 40, 41, 43, 86, 87, 88, 89, 90, 99, 110, 119, 133], "class": [0, 3, 5, 6, 7, 8, 13, 14, 15, 16, 18, 19, 20, 116], "inventoryconnector": 0, "baseconnector": [0, 14], "handles_execut": 0, "fals": [0, 3, 8, 14, 16, 17, 18, 19, 21, 24, 32, 36, 54, 70, 73, 77, 86, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 106, 107, 108, 109, 110, 112, 113, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 133], "staticmethod": 0, "def": [0, 1, 3, 40, 41, 43, 116, 133], "make_names_data": 0, "_": [0, 3, 24], "none": [0, 3, 5, 7, 8, 11, 13, 14, 15, 16, 17, 18, 19, 20, 22, 54, 57, 58, 63, 64, 67, 70, 71, 73, 74, 75, 77, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 107, 108, 109, 110, 111, 112, 113, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129], "gener": [0, 3, 5, 6, 12, 13, 14, 16, 19, 25, 26, 27, 33, 34, 36, 40, 41, 44, 78, 92, 99, 119, 133], "target": [0, 3, 14, 15, 25, 27, 29, 32, 36, 41, 54, 74, 75, 86, 87, 89, 99, 103, 106, 113, 118, 119, 133], "yield": [0, 3], "tupl": [0, 5, 14, 15, 16, 18, 19, 47, 89, 99, 102], "name": [0, 1, 3, 5, 10, 11, 13, 14, 15, 16, 18, 19, 24, 25, 28, 29, 30, 31, 33, 34, 36, 40, 41, 44, 52, 60, 61, 65, 66, 72, 73, 75, 76, 77, 78, 79, 82, 84, 86, 89, 91, 92, 93, 94, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 109, 110, 111, 112, 113, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 126, 127, 128, 129, 133], "data": [0, 3, 4, 5, 11, 12, 13, 14, 15, 25, 27, 33, 36, 37, 63, 70, 74, 86, 87, 119], "group": [0, 1, 12, 14, 15, 25, 29, 32, 36, 37, 39, 41, 44, 54, 66, 85, 86, 87, 90, 99, 102], "local": [0, 4, 25, 26, 35, 38, 42, 44, 86, 87, 89, 90, 94, 99, 102, 110, 117, 121, 133], "A": [0, 1, 4, 13, 29, 30, 39, 42, 86, 87, 89, 133], "implement": [0, 21, 27, 116], "requir": [0, 1, 13, 26, 35, 36, 74, 86, 92, 99, 103, 106, 110, 113, 118, 119], "few": [0, 26, 89, 130], "more": [0, 1, 25, 26, 33, 58, 86, 99, 123, 130, 133], "method": [0, 3, 14, 26], "localconnector": 0, "true": [0, 1, 3, 13, 14, 16, 18, 24, 25, 31, 32, 36, 40, 54, 70, 73, 77, 85, 86, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 115, 116, 117, 118, 119, 120, 122, 123, 124, 125, 126, 127, 128, 129, 133], "see": [0, 1, 2, 24, 36, 44, 45, 46, 47, 48, 49, 50, 52, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 86, 89, 93, 99, 100, 101, 106, 113, 119, 120, 123, 132, 133], "abov": [0, 1, 25, 27, 36, 86, 88, 106, 113], "run_shell_command": [0, 14, 21, 40, 116], "self": [0, 3], "command": [0, 4, 13, 14, 16, 21, 24, 26, 27, 30, 32, 36, 40, 44, 72, 87, 89, 90, 91, 92, 93, 94, 96, 97, 98, 99, 104, 106, 108, 109, 110, 112, 113, 114, 115, 116, 117, 119, 122, 123, 124, 125, 126, 127, 129, 130, 133], "stringcommand": [0, 3, 7, 13], "print_output": [0, 18, 21], "bool": [0, 8, 13, 14, 16, 17, 18, 19, 21, 24, 32], "print_input": [0, 18, 21], "argument": [0, 4, 7, 12, 14, 19, 26, 32, 36, 44, 85, 86, 87, 90, 92, 97, 99, 103, 106, 110, 113, 116, 119, 120, 125, 127, 129], "unpack": [0, 7, 14], "connectorargu": [0, 5, 7], "commandoutput": [0, 14, 16, 19], "machin": [0, 25, 27, 30, 31, 77, 86, 89, 99, 119, 122, 133], "arg": [0, 6, 7, 11, 13, 14, 16, 18, 89, 99, 103, 116, 119], "actual": [0, 36, 66, 85, 99], "whether": [0, 3, 17, 24, 32, 65, 77, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 117, 118, 119, 120, 122, 123, 124, 125, 126, 127, 128, 129], "print": [0, 25, 86], "output": [0, 12, 13, 16, 19, 21, 25, 26, 27, 33, 40, 48, 53, 75, 86, 89, 103, 119], "input": [0, 19, 25, 103], "global": [0, 3, 4, 5, 12, 13, 26, 36, 49, 64, 86, 87, 90, 99, 102, 106, 107, 110, 113, 129], "return": [0, 3, 5, 7, 15, 18, 19, 24, 25, 41, 43, 45, 46, 47, 49, 50, 51, 52, 53, 54, 55, 56, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 84, 89, 97, 115, 127, 133], "indic": [0, 3, 18, 75, 77], "success": [0, 16, 24, 92], "stdout": [0, 16, 40, 116, 133], "stderr": [0, 16, 40, 116], "line": [0, 3, 21, 25, 40, 44, 54, 75, 90, 116, 119], "put_fil": [0, 14], "filename_or_io": [0, 3, 19], "remote_filenam": [0, 3, 121], "remote_temp_filenam": [0, 7], "ignor": [0, 21, 24, 99, 119], "upload": [0, 3, 14, 36, 38, 90, 99, 119], "file": [0, 14, 19, 21, 25, 26, 32, 36, 37, 38, 41, 42, 44, 52, 58, 72, 74, 75, 82, 86, 87, 90, 92, 97, 102, 106, 110, 111, 113, 117, 118, 119, 121, 122, 123, 124, 127, 129, 131], "io": [0, 7, 19, 99, 120], "object": [0, 7, 8, 14, 15, 16, 18, 19, 20, 33, 99], "copi": [0, 8, 99, 110], "temporari": [0, 14, 75, 121], "directori": [0, 21, 24, 44, 64, 75, 89, 90, 92, 102, 107, 110, 111, 117, 118, 119, 133], "locat": [0, 3, 75, 99, 110, 121], "succ": [], "failur": 0, "get_fil": [0, 14], "download": [0, 3, 14, 84, 88, 90, 92, 97, 127, 129], "our": [0, 86], "filenam": [0, 14, 19, 21, 32, 92, 97, 99, 106, 113, 119, 121, 127, 129], "oper": [1, 4, 5, 11, 12, 13, 14, 19, 28, 29, 35, 37, 40, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 54, 55, 56, 57, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 86, 87, 89, 130], "execut": [1, 3, 4, 7, 11, 14, 16, 17, 18, 20, 21, 26, 27, 28, 29, 31, 35, 36, 37, 44, 75, 85, 86, 87, 89, 91, 92, 93, 96, 97, 98, 99, 106, 109, 112, 113, 114, 115, 116, 117, 119, 121, 122, 125, 126, 127, 129, 130, 133], "low": [1, 14, 78], "level": [1, 14, 25, 74, 78, 119], "filesystem": [1, 44, 54, 75, 90, 99, 119, 125], "systemd": [1, 44, 86, 90, 99, 104, 119], "manag": [1, 18, 61, 73, 79, 83, 87, 90, 91, 92, 93, 94, 95, 96, 97, 98, 100, 101, 102, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 119, 120, 122, 123, 124, 125, 126, 127, 128, 130], "etc": [1, 24, 36, 48, 52, 72, 78, 82, 85, 86, 92, 94, 97, 99, 103, 117, 119, 122, 123, 124, 127, 129, 133], "i": [1, 2, 3, 4, 12, 13, 16, 18, 24, 25, 26, 27, 30, 31, 32, 33, 35, 36, 37, 38, 40, 41, 42, 44, 54, 59, 73, 74, 75, 86, 87, 88, 89, 91, 92, 93, 96, 97, 98, 99, 101, 102, 105, 106, 109, 110, 111, 112, 113, 114, 115, 116, 117, 119, 121, 122, 123, 124, 125, 126, 127, 129, 130, 131, 133], "higher": 1, "abstract": [1, 13], "combin": [1, 4, 14, 25, 89], "one": [1, 3, 11, 16, 25, 27, 33, 36, 40, 54, 58, 85, 88, 97, 98, 99, 121, 127, 133], "togeth": [1, 92], "setup": [1, 4, 18, 36, 44, 133], "configur": [1, 8, 9, 14, 17, 27, 40, 41, 75, 87, 89, 102, 119, 133], "someth": [1, 86, 99, 119], "docker": [1, 25, 26, 30, 35, 44, 87, 89, 90, 92, 97, 99, 119, 127, 133], "certbot": 1, "nginx": [1, 24, 25, 31, 36, 98], "usual": [1, 42], "defin": [1, 3, 4, 15, 25, 36, 40, 85, 86, 89, 90, 103, 124, 133], "user": [1, 11, 12, 16, 20, 25, 26, 32, 33, 44, 54, 63, 74, 77, 85, 89, 90, 92, 96, 99, 102, 113, 117, 121, 122, 133], "us": [1, 4, 7, 13, 14, 15, 19, 20, 24, 26, 27, 31, 32, 33, 35, 37, 40, 41, 42, 44, 51, 54, 59, 74, 75, 77, 86, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 131, 132], "It": [1, 3, 25, 41, 42, 88, 89, 133], "also": [1, 3, 26, 33, 35, 41, 45, 46, 47, 48, 49, 50, 52, 53, 54, 55, 56, 57, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 89, 99, 106, 115, 133], "possibl": [1, 13, 25, 26, 36, 41, 88, 89, 133], "modul": [1, 3, 4, 41, 42, 44, 75, 88, 90, 103, 105, 106, 110, 113, 116, 119], "make": [1, 3, 19, 26, 36, 86, 89, 90, 99, 113, 133], "them": [1, 86, 90, 113], "reusabl": [1, 87], "shareabl": 1, "via": [1, 14, 25, 32, 35, 40, 44, 86, 89, 92, 97, 127, 129, 133], "pypi": 1, "These": [1, 20, 25, 26, 42, 86, 89, 92, 97, 103, 119, 127, 129], "can": [1, 2, 3, 25, 26, 27, 29, 30, 32, 33, 36, 40, 41, 42, 43, 44, 48, 85, 86, 87, 89, 91, 92, 93, 95, 96, 97, 99, 101, 102, 103, 107, 109, 110, 113, 117, 119, 127, 129, 132, 133], "import": [1, 20, 26, 36, 38, 40, 41, 42, 43, 44, 85, 86, 89, 99, 106, 113, 133], "your": [1, 3, 25, 35, 38, 87, 99, 120, 133], "own": [1, 3, 4, 24, 87, 99, 111, 113, 133], "code": [1, 20, 24, 36, 41, 78, 115, 116, 119, 130, 133], "utilis": 1, "essenti": [1, 35], "two": [1, 11, 25, 32, 39, 54, 86, 89, 99, 111, 121, 133], "chang": [1, 3, 12, 16, 24, 26, 31, 35, 40, 86, 89, 90, 99, 102, 106, 113, 115, 118, 119, 122, 125, 131], "from": [1, 5, 11, 14, 15, 16, 19, 24, 25, 27, 29, 33, 36, 38, 40, 41, 42, 43, 44, 54, 85, 86, 87, 89, 92, 97, 98, 99, 102, 103, 106, 113, 118, 119, 121, 127, 129, 133], "wrap": [1, 11, 14, 99], "everyth": 1, "function": [1, 3, 5, 7, 11, 16, 24, 26, 35, 40, 116, 131, 133], "decor": [1, 11, 16], "api": [1, 3, 21, 26, 35, 40, 41, 87], "apt": [1, 25, 31, 36, 40, 44, 51, 77, 85, 86, 87, 89, 90, 133], "instal": [1, 25, 31, 35, 36, 38, 40, 42, 44, 45, 46, 47, 49, 50, 51, 52, 55, 56, 59, 64, 66, 67, 68, 69, 72, 74, 75, 76, 81, 82, 84, 86, 90, 91, 92, 93, 95, 97, 100, 101, 107, 109, 110, 111, 112, 119, 120, 126, 127, 129, 133], "mariadb": 1, "install_mariadb": 1, "server": [1, 3, 9, 11, 13, 16, 17, 24, 25, 26, 27, 35, 36, 40, 41, 42, 44, 59, 85, 86, 87, 89, 90, 92, 94, 99, 106, 111, 113, 115, 118, 121, 123, 133], "thi": [1, 2, 3, 4, 13, 14, 15, 16, 19, 24, 25, 26, 29, 30, 31, 32, 35, 38, 39, 40, 41, 42, 44, 59, 74, 75, 85, 86, 89, 91, 92, 93, 94, 96, 97, 98, 99, 102, 103, 104, 106, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 129, 131, 132, 133], "could": [1, 3], "like": [1, 3, 25, 26, 33, 36, 41, 44, 86, 89, 91, 92, 93, 94, 95, 96, 99, 101, 104, 107, 108, 109, 110, 117, 122, 123, 124, 129, 130, 133], "so": [1, 3, 13, 15, 25, 26, 33, 36, 44, 89, 111, 118, 119, 124, 133], "packaged_deploi": 1, "basic": [1, 37, 86, 87], "simpli": [1, 3, 38, 92, 124, 133], "prometheu": 1, "complex": [1, 42, 99, 133], "contain": [1, 4, 9, 20, 25, 27, 29, 30, 32, 39, 53, 62, 75, 80, 86, 89, 90, 99, 119, 125, 129], "multipl": [1, 14, 25, 29, 30, 32, 34, 36, 37, 42, 44, 89, 93, 99, 100, 102, 119, 120], "instanc": [1, 7, 25, 75, 86], "variou": 1, "export": [1, 99], "servic": [1, 36, 40, 61, 65, 73, 77, 79, 86, 90, 98, 99, 118, 133], "accept": [1, 3, 32, 90], "same": [1, 15, 32, 42, 48, 74, 89, 92, 98, 99, 102, 120], "thei": [1, 3, 36, 77, 99, 117, 133], "appli": [1, 24, 86, 99, 103, 113, 115, 125], "everi": [1, 25, 36, 78, 119], "call": [1, 3, 5, 11, 13, 16, 36, 40, 44, 90, 99, 133], "within": [1, 18, 21, 26, 28, 42, 44, 86, 116, 119, 133], "take": [1, 3, 7, 11, 16, 35, 86, 106, 113, 119], "sudo": [1, 8, 16, 24, 25, 86, 99, 116, 121, 133], "set": [1, 3, 13, 16, 18, 19, 20, 24, 26, 29, 32, 37, 54, 63, 73, 74, 75, 85, 87, 89, 90, 92, 97, 98, 99, 102, 106, 111, 117, 118, 119, 121, 124, 127, 128, 129, 131, 133], "default": [1, 3, 5, 8, 13, 14, 15, 24, 25, 29, 32, 35, 36, 39, 65, 85, 89, 92, 99, 102, 106, 107, 108, 111, 119, 121, 129, 133], "ani": [1, 4, 5, 11, 13, 14, 15, 16, 19, 24, 25, 26, 27, 32, 34, 35, 36, 38, 39, 40, 75, 86, 87, 88, 89, 90, 92, 97, 99, 102, 106, 117, 119, 127, 129], "provid": [1, 2, 3, 15, 20, 25, 29, 30, 36, 43, 54, 66, 72, 89, 92, 98, 99, 118, 119, 131, 133], "host": [1, 3, 4, 5, 7, 11, 12, 13, 15, 16, 17, 18, 19, 24, 25, 27, 29, 31, 32, 33, 34, 38, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 86, 87, 92, 97, 99, 102, 106, 113, 116, 119, 121, 125, 127], "preced": 1, "sensibl": 1, "option": [1, 8, 16, 18, 21, 35, 63, 73, 75, 88, 92, 97, 98, 99, 106, 113, 117, 119, 120, 127, 129], "end": [1, 20, 36, 40, 54, 99], "customis": 1, "modifi": [1, 27, 29, 119, 128], "mariadb_vers": 1, "1": [1, 7, 18, 19, 25, 32, 33, 35, 52, 59, 72, 78, 82, 84, 89, 97, 99, 119, 123, 127, 129, 133], "2": [1, 18, 25, 32, 33, 59, 75, 89, 99, 102, 115, 123], "3": [1, 18, 26, 29, 30, 33, 35, 59, 88, 89, 123], "data_default": [1, 11], "f": [1, 3, 25, 75, 92, 93, 97, 116, 119, 127, 133], "In": [2, 24, 25, 26, 36, 40, 86, 89, 131], "addit": [2, 24, 26, 35, 85, 89, 92, 97, 110, 127, 128, 129, 131], "cli": [2, 11, 20, 26, 86, 87, 88, 89, 106, 113], "full": [2, 25, 26, 75, 86, 89, 92, 133], "As": [2, 25, 36, 41], "v1": [26, 41, 102], "consid": [2, 24, 132], "mostli": 2, "stabl": [2, 55, 76, 97, 120, 127], "an": [2, 3, 4, 9, 11, 12, 16, 18, 19, 25, 29, 32, 34, 35, 36, 39, 43, 44, 54, 55, 76, 86, 99, 102, 105, 117, 118, 133], "exampl": [2, 4, 7, 24, 27, 31, 33, 36, 40, 41, 42, 44, 86, 87, 89, 91, 92, 93, 96, 97, 98, 99, 100, 101, 102, 103, 105, 106, 109, 110, 111, 112, 113, 115, 116, 117, 118, 119, 120, 121, 122, 123, 126, 127, 128, 129], "how": [2, 3, 27, 29, 32, 35, 44, 99, 110, 119], "embed": [], "below": [25, 27, 36, 88, 99, 132, 133], "refer": [2, 35, 89, 131], "build": [3, 29, 35, 38, 88, 119, 131, 133], "block": [3, 44, 59, 90, 103], "document": [3, 26, 37, 85, 133], "describ": [3, 25, 26, 36, 39, 86, 90], "you": [3, 26, 28, 29, 30, 32, 33, 35, 36, 37, 39, 40, 44, 85, 86, 87, 88, 89, 99, 116, 119, 132, 133], "extend": 3, "": [3, 4, 13, 14, 15, 16, 19, 21, 25, 32, 35, 36, 41, 54, 63, 86, 89, 98, 99, 106, 111, 113, 119, 120, 122, 126, 130, 133], "pass": [3, 11, 12, 16, 25, 26, 29, 32, 42, 44, 89, 92, 94, 99, 104, 108, 110, 116, 117, 119, 122, 124, 133], "current": [3, 4, 5, 13, 18, 20, 26, 34, 35, 75, 89, 99, 102, 119, 133], "deploi": [3, 4, 5, 8, 12, 13, 14, 16, 17, 18, 20, 24, 25, 36, 38, 39, 41, 42, 44, 89, 92, 97, 98, 99, 116, 119, 127, 129, 133], "state": [3, 4, 5, 7, 9, 11, 12, 13, 14, 15, 16, 17, 19, 21, 36, 40, 44, 73, 75, 90, 94, 99, 104, 108, 117, 118, 119, 122, 123, 124, 127, 130, 133], "read": [3, 9, 14, 34, 36, 44, 106, 113, 119, 122], "compar": 3, "except": [3, 4, 15, 19, 24, 36, 116, 133], "those": [3, 42], "start": [3, 25, 29, 35, 37, 54, 87, 90, 98, 99, 117, 119, 123, 124, 130, 133], "which": [3, 4, 13, 15, 25, 26, 36, 37, 44, 89, 99, 102, 110, 111, 118, 119, 123, 133], "reserv": [3, 26], "intern": [3, 16, 41], "my_oper": 3, "three": [3, 27, 36, 130], "type": [3, 5, 12, 13, 14, 19, 24, 29, 32, 46, 74, 75, 84, 118, 119, 129], "shell": [3, 7, 8, 14, 21, 26, 38, 40, 42, 75, 85, 86, 90, 99, 133], "repres": [3, 14, 15, 20, 98, 133], "string": [3, 7, 19, 21, 24, 51, 74, 92, 99, 119], "OR": [3, 133], "echo": [3, 25, 40, 75, 86, 116, 121, 133], "fileuploadcommand": [3, 7], "filedownloadcommand": [3, 7], "functioncommand": [3, 7], "args_list": 3, "kwargs_dict": 3, "addition": 3, "overrid": [3, 15, 32, 89, 119, 124], "most": [3, 26, 36, 87, 133], "_sudo": [3, 24, 25, 31, 85, 86, 87, 89, 99, 133], "syntax": [3, 86, 99], "path": [3, 19, 25, 36, 44, 54, 74, 85, 88, 99, 102, 110, 115, 118, 119, 133], "some": [3, 25, 26, 40, 41, 86, 92, 99, 132, 133], "simplifi": 3, "version": [3, 4, 8, 35, 45, 47, 49, 50, 51, 55, 56, 64, 66, 67, 68, 69, 72, 75, 76, 81, 91, 92, 93, 95, 96, 97, 101, 103, 107, 109, 110, 111, 112, 127, 129, 133], "creat": [3, 4, 24, 27, 29, 35, 89, 90, 97, 98, 99, 102, 110, 113, 118, 119, 121, 123, 127, 128, 129, 133], "remov": [3, 26, 29, 36, 91, 92, 93, 95, 96, 97, 98, 99, 100, 101, 102, 103, 105, 106, 107, 109, 110, 111, 112, 113, 117, 118, 119, 120, 121, 126, 127, 129], "remot": [3, 13, 16, 25, 30, 38, 40, 44, 54, 75, 86, 92, 97, 99, 102, 119, 121, 127, 129], "base": [3, 5, 6, 7, 8, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 29, 30, 35, 36, 99, 105, 131, 133], "present": [3, 14, 36, 91, 92, 93, 95, 96, 97, 98, 99, 100, 101, 102, 103, 105, 106, 107, 109, 110, 111, 112, 113, 118, 119, 120, 121, 126, 127, 128, 129], "kwarg": [3, 5, 6, 7, 8, 11, 13, 14, 16, 18, 19, 116], "should": [3, 14, 26, 35, 37, 86, 87, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 117, 119, 120, 121, 122, 123, 124, 126, 127, 128, 129, 133], "exist": [3, 19, 26, 29, 44, 54, 63, 74, 92, 97, 98, 99, 102, 103, 105, 110, 113, 117, 118, 119, 121, 124, 127, 128, 129, 133], "info": [3, 14, 38, 39, 53, 75, 78, 133], "get_fact": [3, 13, 14, 36, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 92, 97, 127, 133], "Not": 3, "rais": [3, 12, 116, 133], "operationerror": [3, 12], "0": [3, 7, 8, 18, 19, 24, 25, 32, 40, 41, 55, 59, 72, 75, 76, 78, 84, 92, 99, 102, 115, 119, 120, 123, 133], "format": [3, 7, 40, 53, 74, 92, 98, 99], "doesn": [3, 54, 99, 133], "t": [3, 5, 13, 14, 36, 54, 86, 92, 97, 99, 111, 117, 119, 127, 129, 133], "we": [3, 4, 25, 36, 40, 41, 89, 99, 115], "want": [3, 27, 44, 90, 99], "touch": [3, 92, 99], "don": [3, 92, 99, 119], "elif": [3, 41], "rm": 3, "either": [3, 19, 25, 29, 99, 106, 113, 115, 133], "process": [3, 13], "The": [3, 4, 8, 11, 13, 16, 20, 24, 25, 26, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 39, 54, 85, 86, 87, 89, 99, 103, 105, 113, 116, 119, 130], "handler": [3, 5, 18], "anyth": [3, 25, 86], "normal": [3, 11, 89], "dict": [3, 5, 13, 14, 18, 19, 32, 45, 47, 49, 50, 51, 56, 59, 60, 61, 63, 64, 65, 66, 67, 68, 69, 70, 72, 73, 75, 78, 79, 80, 81, 99], "mai": [3, 44, 88, 89, 99, 118], "valu": [3, 5, 12, 15, 18, 19, 25, 33, 36, 43, 44, 75, 89, 98, 99, 102, 118, 119], "error": [3, 12, 18, 21, 24], "occur": 3, "dure": [3, 12, 24, 37, 119, 133], "collect": [3, 13, 15, 25, 40, 86, 133], "requires_command": [3, 13], "variabl": [3, 5, 20, 24, 33, 43, 75, 85, 89, 99, 111, 119, 133], "specifi": [3, 24, 32, 33, 54, 72, 74, 91, 92, 93, 95, 96, 97, 99, 101, 102, 105, 107, 110, 112, 117, 118, 119, 127, 129], "must": [3, 25, 29, 30, 33, 74, 92, 119], "avail": [3, 24, 27, 59, 75, 87, 89, 91, 111, 117, 130, 133], "If": [3, 24, 37, 44, 54, 74, 85, 87, 88, 89, 92, 97, 99, 119, 127, 129, 133], "empti": [3, 15, 54, 74, 92], "For": [3, 25, 33, 41, 44, 89, 99, 117, 123, 131, 133], "htop": [3, 36], "boolean": [3, 17, 18, 74, 75, 77, 90], "declar": 3, "attribut": [3, 13, 14, 133], "factbas": [3, 13, 14], "swapen": 3, "swapon": 3, "show": [3, 26, 99, 119], "len": 3, "have": [3, 21, 24, 36, 39, 99, 102, 103, 106, 117, 119, 121], "is_swap_en": 3, "found": [2, 3, 44, 54, 58, 78, 99], "given": [3, 19, 64, 65, 75, 89, 99, 118, 119], "findfil": [3, 44, 99], "point": [3, 99], "recurs": [3, 54, 99, 102, 128], "find": [3, 54, 132], "list_of_fil": 3, "somewher": 3, "raw": [3, 75, 99, 119], "rawcommandoutput": 3, "n": [3, 25, 116], "join": [3, 116], "re": [3, 11, 86, 87, 99], "command_output": 3, "design": [4, 25, 40, 131], "follow": [4, 25, 26, 29, 32, 33, 89, 92, 97, 111, 127, 133], "go": [4, 129], "consist": [4, 16], "inventori": [4, 9, 12, 14, 18, 27, 31, 32, 34, 36, 37, 39, 42, 85, 86, 87, 90, 121], "plu": [4, 25], "config": [4, 5, 18, 32, 36, 38, 90, 99, 119, 124], "flag": [4, 7, 18, 44, 89, 90, 119], "now": [4, 25, 86], "add_op": [4, 16], "add_deploi": [4, 11], "done": [4, 89, 99], "run_op": [4, 17], "best": [4, 37, 97, 127], "action": [4, 133], "main": [4, 46, 84, 92, 102, 133], "py": [4, 11, 21, 25, 31, 32, 36, 38, 39, 41, 42, 43, 44, 86, 89, 106, 113, 133], "arguments_typ": 4, "connect": [4, 12, 14, 18, 24, 25, 27, 32, 36, 38, 86, 106, 113, 118, 121, 122], "connector": [4, 12, 14, 25, 26, 35, 87, 89, 99], "fact": [4, 12, 14, 24, 25, 26, 35, 85, 87, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129], "util": [4, 14], "context": [4, 5, 13, 19, 74, 85, 116, 118, 133], "progress": 4, "allargu": [5, 14, 16, 18], "metaargu": 5, "executionargu": 5, "str": [5, 7, 8, 11, 13, 14, 15, 16, 17, 18, 19, 21, 24, 29, 32], "argumentmeta": 5, "descript": [5, 14, 19, 24, 29, 32, 75, 97, 127, 129], "callabl": [5, 7, 11, 13, 14, 16, 18, 19, 24], "typeddict": 5, "generate_env": 5, "pop_global_argu": 5, "keys_to_check": 5, "list": [5, 13, 14, 15, 16, 18, 19, 21, 24, 26, 27, 33, 41, 42, 46, 47, 52, 54, 55, 59, 60, 62, 66, 72, 75, 76, 82, 84, 86, 87, 89, 91, 92, 93, 95, 96, 97, 98, 99, 100, 101, 106, 107, 109, 110, 111, 112, 116, 119, 120, 124, 126, 127, 129, 132, 133], "pop": 5, "keyword": [5, 24, 32, 99, 116], "prefer": 5, "order": [5, 15, 86, 87], "direct": [5, 25, 92], "being": [5, 99], "pyinfraoper": [6, 16], "p": [6, 16, 99], "protocol": [6, 74, 103, 118], "src": [7, 58, 89, 92, 93, 97, 99, 102, 106, 113, 119, 127, 129, 133], "dest": [7, 89, 99, 102, 106, 113, 133], "pyinfracommand": [7, 18], "connector_argu": 7, "func_kwarg": 7, "maskstr": 7, "quotestr": 7, "obj": [7, 9, 11, 16, 17, 19], "rsynccommand": 7, "bit": [7, 19, 99], "_separ": 7, "get_masked_valu": 7, "get_raw_valu": 7, "make_formatted_string_command": 7, "helper": 7, "script": [7, 25, 35, 48, 78, 90, 123], "split": [7, 21], "shlex": 7, "each": [7, 24, 27, 36, 44, 63, 86, 89, 119], "curl_command": 7, "curl": [7, 99], "sslf": 7, "o": [7, 36, 43, 44, 52, 82, 94, 111, 119, 131, 133], "configdefault": 8, "get_current_st": 8, "lock_current_st": 8, "reset_locked_st": 8, "set_current_st": 8, "config_st": 8, "connect_timeout": 8, "int": [8, 14, 15, 16, 18, 19, 24, 32], "10": [8, 26, 88, 99, 105, 117, 119], "default_temp_dir": 8, "tmp": [8, 99, 106, 113, 119, 121], "doa": [8, 24], "doas_us": 8, "fail_perc": [8, 18], "ignore_error": [8, 19, 21], "parallel": [8, 9, 24, 25, 29, 30, 36], "preserve_sudo_env": 8, "preserve_su_env": 8, "require_packag": [8, 133], "require_pyinfra_vers": [8, 133], "sh": [8, 24, 25, 35, 93], "sudo_password": 8, "sudo_us": [8, 99, 113], "su_shel": 8, "su_us": 8, "temp_dir": 8, "use_sudo_login": [8, 115], "use_su_login": [8, 115], "check_pyinfra_vers": 8, "check_require_packag": 8, "requirements_config": 8, "connect_al": 9, "all": [5, 9, 11, 15, 16, 17, 24, 26, 27, 32, 34, 35, 36, 39, 41, 42, 43, 53, 58, 73, 87, 89, 90, 91, 92, 93, 97, 98, 99, 106, 109, 112, 113, 119, 126, 127, 129, 131, 133], "write": [9, 27, 35, 44, 87, 90, 99, 118, 119, 133], "paramet": [9, 11, 15, 16, 17, 21], "disconnect_al": 9, "get_all_connector": 10, "get_execution_connector": 10, "come": [11, 119], "form": [11, 99], "disk": [11, 119, 128], "eg": [11, 13, 25, 51, 89, 92, 99, 103, 121, 123, 125], "latter": 11, "usabl": 11, "across": [11, 17, 37, 130, 133], "extens": [11, 99, 103], "creation": [11, 116], "openstack": 11, "deploy_func": 11, "prepar": [11, 16, 18, 36, 99], "add": [11, 16, 25, 26, 36, 88, 91, 92, 93, 96, 97, 99, 101, 102, 103, 105, 106, 109, 110, 112, 113, 118, 119, 121, 127, 129], "ie": [11, 13, 16, 32, 35, 89, 97, 127, 129], "pyinfra_": 11, "packag": [11, 31, 35, 36, 40, 43, 44, 45, 47, 49, 50, 51, 55, 56, 64, 66, 67, 68, 69, 72, 76, 81, 85, 86, 87, 88, 89, 133], "insid": [11, 41, 110, 133], "wide": 11, "argumenttypeerror": 12, "pyinfraerror": 12, "typeerror": 12, "when": [12, 14, 21, 24, 25, 26, 85, 86, 89, 92, 97, 99, 102, 103, 119, 123, 127, 129, 133], "invalid": 12, "connecterror": 12, "fail": [12, 18, 36, 73, 88], "connectordatatypeerror": 12, "ha": [12, 24, 26, 46, 74, 75, 96, 119, 132, 133], "deployerror": 12, "sub": [12, 98], "facterror": 12, "gather": [12, 87], "stage": [12, 18, 36, 39], "unabl": 12, "facttypeerror": 12, "factvalueerror": 12, "valueerror": 12, "inventoryerror": 12, "relat": [12, 75, 118], "noconnectorerror": 12, "request": [12, 35, 40, 41, 99, 132], "miss": 12, "nogrouperror": [12, 15], "keyerror": 12, "nohosterror": [12, 15], "operationtypeerror": 12, "operationvalueerror": 12, "diff": [13, 16, 86, 87], "desir": [13, 36, 86, 118], "produc": 13, "final": 13, "note": [2, 13, 25, 30, 74, 92, 96, 97, 99, 101, 105, 111, 115, 118, 119, 126, 127, 130], "doe": [13, 54, 74, 99, 105, 110, 118, 119], "out": [13, 24, 25, 27, 36, 44, 90, 99, 133], "give": [13, 110, 119], "me": 13, "ip": [13, 33, 80, 98, 99, 103], "b": 13, "while": [13, 78, 130], "static": [13, 15, 18], "iter": [13, 14, 15, 18, 24, 119], "process_pipelin": 13, "shell_execut": 13, "shortfactbas": [13, 14], "process_data": 13, "cl": 13, "ensure_host": 13, "apply_failed_host": 13, "get_host_fact": 13, "get_short_fact": 13, "short_fact": 13, "connector_cl": 14, "ssh": [14, 21, 25, 33, 35, 77, 86, 89, 90, 99, 103, 119], "sshconnector": 14, "thin": 14, "link": [14, 44, 90, 102, 117, 119, 123], "up": [14, 38, 86, 98, 99, 119, 121], "check_can_rsync": 14, "reason": [14, 36, 130], "show_error": 14, "raise_except": [14, 90], "connector_data": 14, "current_deploy_data": 14, "current_deploy_kwarg": 14, "current_deploy_nam": 14, "current_op_deploy_data": 14, "current_op_global_argu": 14, "current_op_hash": 14, "in_deploi": 14, "instead": [14, 16, 24, 92, 99, 110, 119, 133], "disconnect": [14, 18, 36], "executing_op_hash": 14, "get_deploy_data": 14, "name_or_cl": 14, "get": [14, 15, 19, 20, 24, 25, 27, 35, 36, 37, 41, 44, 59, 87, 89, 90, 92, 97, 127, 133], "cach": [14, 19, 92], "get_temp_filenam": 14, "hash_kei": 14, "hash_filenam": 14, "properti": [14, 16, 19, 92, 128], "group_data": [14, 39, 41, 43, 89], "host_data": 14, "in_callback_op": 14, "in_op": 14, "init": [14, 18, 25, 48, 78, 86, 94, 108, 119, 123, 124], "log": [14, 25, 103, 133], "messag": [14, 99, 116], "log_func": 14, "bound": [14, 32], "logger": [14, 38, 133], "warn": [14, 26, 99], "log_styl": 14, "loop": 14, "loop_posit": 14, "nested_executing_op_hash": 14, "noop": [14, 25], "print_prefix": 14, "rsync": [14, 90], "style_print_prefix": 14, "condit": [14, 36, 133], "hostdata": 14, "attrdata": 14, "search": [14, 117], "kei": [14, 20, 24, 29, 32, 44, 46, 52, 58, 75, 82, 89, 90, 98, 102, 119, 121, 129], "override_data": [14, 15], "extract_callable_data": 14, "union": [14, 24], "names_data": 15, "store": [15, 89, 99], "access": [15, 26, 41, 89, 110, 120, 133], "dictionari": [15, 19, 24, 33, 59, 75, 77, 99, 110], "ssh_": 15, "deprec": [15, 26, 59, 75, 92], "winrm_": 15, "map": [15, 24, 74, 77, 98, 118, 125], "get_data": 15, "attach": [15, 89, 98, 119], "get_group": 15, "belong": [15, 66, 103], "get_group_data": 15, "singl": [15, 25, 32, 36, 53, 73, 99], "get_groups_data": 15, "aggreg": 15, "var": [15, 25, 40, 73, 92, 99, 117, 133], "twice": 15, "last": 15, "hold": [15, 111], "get_host": [15, 133], "get_host_data": 15, "hostnam": [15, 25, 32, 33, 41, 44, 63, 85, 87, 89, 90, 106, 113, 121, 125, 133], "get_override_data": 15, "iter_activated_host": 15, "over": [15, 25, 32, 36, 86, 99, 121], "activ": [15, 18, 32, 77, 89, 119], "iter_active_host": 15, "len_activated_host": 15, "number": [15, 24, 32, 59, 74, 85, 119, 133], "len_active_host": 15, "make_hosts_and_group": 15, "extract_name_data": 15, "core": [16, 76, 78], "wrapper": 16, "intercept": 16, "against": [16, 25, 26, 29, 86, 87, 89, 99, 106, 113], "run": [16, 17, 24, 25, 26, 27, 29, 30, 34, 35, 36, 38, 40, 42, 62, 73, 80, 86, 91, 92, 93, 94, 97, 98, 99, 104, 108, 109, 112, 115, 116, 117, 118, 119, 121, 122, 123, 124, 126, 127, 129, 133], "later": 16, "__main__": 16, "operationmeta": [16, 18], "hash": [16, 19, 54, 99], "is_chang": 16, "did_chang": [16, 36, 133], "did_error": 16, "did_not_chang": 16, "did_succe": 16, "is_complet": 16, "set_complet": 16, "combined_output": 16, "stderr_lin": 16, "stdout_lin": 16, "op_func": 16, "attach_arg": 16, "op_meta": [16, 19], "ensure_shared_op_meta": 16, "op_hash": [16, 17, 18], "op_ord": [16, 18], "global_argu": [16, 18], "execute_immedi": 16, "generate_operation_nam": 16, "func": [16, 19], "get_operation_name_from_func": 16, "is_idempot": 16, "idempotent_notic": 16, "is_deprec": 16, "deprecated_for": 16, "_set_in_op": 16, "simpl": [16, 25, 36, 86, 99, 119, 130], "turn": 16, "represent": 16, "su": [16, 24, 109], "_user": 16, "env": [16, 25, 39, 110], "solve_operation_consist": 16, "run_host_op": 17, "serial": 17, "no_wait": 17, "manner": 17, "wait": [17, 90, 117], "between": [17, 26, 32, 54, 99, 119, 133], "basestatecallback": 18, "host_before_connect": 18, "host_connect": 18, "host_connect_error": 18, "host_disconnect": 18, "operation_end": 18, "operation_host_error": 18, "operation_host_start": 18, "operation_host_success": 18, "operation_start": 18, "check_for_chang": 18, "activate_host": 18, "add_callback_handl": 18, "current_deploy_filenam": 18, "current_exec_filenam": 18, "current_op_file_numb": 18, "current_stag": 18, "statestag": 18, "cwd": [18, 21], "fail_host": 18, "hosts_to_fail": 18, "activated_count": 18, "get_meta_for_host": 18, "statehostmeta": 18, "get_op_data_for_host": 18, "stateoperationhostdata": 18, "get_op_meta": 18, "stateoperationmeta": [18, 19], "get_op_ord": 18, "get_results_for_host": 18, "statehostresult": 18, "get_warning_count": 18, "increment_warning_count": 18, "initial_limit": 18, "initialis": 18, "is_execut": 18, "is_host_in_limit": 18, "limit": [18, 42, 75, 103, 113, 119], "pool": [18, 44], "print_fact_info": 18, "print_fact_input": 18, "print_fact_output": 18, "print_noop_info": 18, "set_op_data_for_host": 18, "op_data": 18, "set_stag": 18, "should_check_for_chang": 18, "should_raise_failed_host": 18, "stage_warn": 18, "trigger_callback": 18, "method_nam": 18, "op": 18, "ops_chang": 18, "ops_no_chang": 18, "error_op": 18, "ignored_error_op": 18, "partial_op": 18, "success_op": 18, "command_gener": 18, "operation_meta": 18, "parent_op_hash": 18, "intenum": 18, "enumer": 18, "5": [18, 26, 32, 33, 63, 123], "4": [18, 33, 76, 92, 103, 120, 123], "format_except": 19, "e": [19, 35, 87, 98, 102, 119, 128, 133], "get_call_loc": 19, "frame_offset": 19, "get_caller_frameinfo": 19, "get_file_io": 19, "mode": [19, 20, 26, 35, 54, 75, 77, 85, 99, 133], "rb": 19, "processor": 19, "open": [19, 106, 119, 131], "close": 19, "leav": [19, 29, 92], "alon": 19, "cache_kei": 19, "get_file_path": 19, "get_file_sha1": 19, "calcul": 19, "sha1": [19, 54, 99], "buffer": [19, 24], "handl": [19, 86, 99, 103, 119], "larger": 19, "get_kwargs_str": 19, "get_operation_order_from_stack": 19, "get_path_permissions_mod": 19, "pathnam": 19, "permiss": [19, 85, 96, 99], "integ": [19, 99], "get_templ": 19, "jinja2": [19, 99], "templat": [19, 90, 113, 119, 125, 133], "log_error_or_warn": 19, "continue_on_error": 19, "log_host_command_error": 19, "timeout": [19, 24, 117], "log_operation_start": 19, "op_typ": 19, "prefix": [19, 24, 74, 89, 103], "make_hash": 19, "arbitrari": [19, 25, 106, 113], "nest": 19, "id": [19, 29, 40, 46, 55, 58, 75, 76, 92, 97, 105, 127], "memoiz": 19, "print_host_combined_output": 19, "raise_if_bad_typ": 19, "type_": 19, "message_prefix": 19, "sha1_hash": 19, "try_int": 19, "contextobject": 20, "contextmanag": 20, "specif": [20, 24, 25, 26, 34, 60, 98, 102, 106, 119, 122, 133], "throughout": 20, "alwai": [20, 36, 86, 91, 92, 93, 96, 97, 98, 99, 106, 109, 110, 112, 113, 114, 115, 116, 117, 119, 121, 122, 125, 126, 127, 129, 133], "context_cl": 20, "isset": 20, "reset": 20, "set_bas": 20, "localcontextobject": 20, "init_base_class": 20, "includ": [21, 33, 37, 42], "splitlin": 21, "subprocess": [21, 25, 31], "progress_spinn": 22, "item": [22, 75, 119], "prefix_messag": 22, "its": [24, 25, 35, 46, 124, 128], "With": 24, "avoid": 24, "clash": 24, "_sudo_us": [24, 85, 89, 133], "non": [24, 99], "root": [24, 28, 74, 75, 99, 110, 118], "_use_sudo_login": [24, 85], "login": [24, 85, 113], "_sudo_password": 24, "password": [24, 32, 43, 75, 89, 99, 106, 113, 119], "need": [24, 25, 26, 32, 38, 40, 85, 86, 88, 92, 117, 118, 119, 132, 133], "prompt": 24, "_preserve_sudo_env": [24, 85], "preserv": [24, 85], "environ": [24, 37, 43, 75, 85, 87, 98, 99, 110, 111], "_su_us": 24, "_use_su_login": 24, "_preserve_su_env": 24, "_su_shel": 24, "_su": 24, "onli": [24, 25, 26, 31, 36, 44, 73, 75, 86, 89, 97, 99, 103, 111, 119, 123, 127, 129, 133], "under": [24, 89, 99], "linux": [24, 26, 31, 35, 48, 75, 86, 92, 97, 99, 109, 119, 123, 127, 131, 133], "nologin": 24, "similar": 24, "_doa": 24, "_doas_us": 24, "my": [24, 25, 32, 34, 40, 86, 125], "secret": [24, 37, 58, 99], "_shell_execut": [24, 133], "_chdir": 24, "switch": [24, 133], "befor": [24, 36, 38, 40, 91, 92, 93, 97, 99, 102, 109, 112, 118, 119, 121, 126, 127, 129], "_env": [24, 87], "_success_exit_cod": 24, "exit": [24, 25, 78], "_timeout": 24, "_get_pti": 24, "pseudotti": 24, "_stdin": 24, "send": [24, 131], "stdin": 24, "bootstrap": [24, 133], "param": 24, "openssl": 24, "dhparam": 24, "pem": 24, "4096": [24, 46, 58], "ssl": [24, 99], "cert": 24, "_ignore_error": 24, "_continue_on_error": 24, "continu": [24, 35, 99], "after": [24, 25, 99, 102, 106, 117], "_if": [24, 36, 133], "_parallel": 24, "batch": 24, "_run_onc": 24, "onc": [24, 36, 38], "first": [24, 26, 36, 40, 86, 89, 99, 117], "_serial": [24, 87], "rather": [24, 102, 110, 133], "than": [24, 98, 102, 110, 133], "extrem": [25, 87], "power": [25, 87], "page": [25, 26, 27, 86, 87, 99, 132], "usag": [25, 35], "net": [25, 32, 41, 86, 89, 121, 125], "comma": 25, "separ": [25, 42, 89, 99], "deploy_web": 25, "deploy_db": 25, "home": [25, 44, 99, 102, 119, 121, 128, 133], "exec": [25, 86], "hello": [25, 46, 58, 86, 116, 119, 120], "world": [25, 86, 116, 120], "linuxnam": [25, 44, 133], "By": [25, 89, 92, 111, 117, 119], "high": 25, "inform": [25, 43, 44, 46, 51, 54, 55, 58, 72, 75, 76, 99, 133], "increas": [25, 26], "v": [25, 75, 99, 119], "well": [25, 27, 37, 40, 48], "x": [25, 35, 92, 123, 131], "alreadi": [25, 86, 92, 99, 102, 110, 121], "vv": 25, "vvv": 25, "both": [25, 27, 54, 86, 89, 99, 133], "support": [25, 26, 78, 88, 99, 123], "rang": [25, 98], "load": [25, 38, 89, 90, 119, 133], "cento": [25, 26, 52, 75, 82, 86, 97, 99, 123, 127, 133], "8": [25, 26, 29, 30, 70, 75, 86, 103, 119, 129], "time": [25, 35, 36, 38, 75, 86, 89, 92, 99, 102, 117, 119, 130, 133], "match": [25, 36, 54, 89, 99, 118], "glob": [25, 89], "style": [25, 26, 89], "pattern": [25, 37, 54, 87, 133], "app_serv": [25, 41, 89], "db": [25, 36, 41, 89, 113], "my_command_goes_her": 25, "right": [25, 133], "hand": [25, 132], "side": [25, 26, 37, 75, 99], "One": [25, 41, 88, 130], "top": 25, "featur": [25, 26, 41, 132], "abil": 25, "real": 25, "perfect": [25, 38], "larg": [25, 99], "elasticsearch": [25, 85], "cluster": 25, "stream": 25, "achiev": [25, 40, 43, 133], "easili": 25, "tail": 25, "builtin": 25, "here": [2, 25, 36, 37, 41, 87, 92, 121, 130, 133], "ensur": [25, 36, 40, 86, 88, 91, 92, 93, 95, 96, 97, 99, 101, 102, 107, 109, 110, 111, 112, 116, 119, 126, 127, 129, 133], "ubuntu": [25, 26, 29, 30, 44, 46, 75, 80, 86, 89, 92, 105, 123, 133], "updat": [2, 25, 26, 31, 36, 40, 90, 95, 96, 99, 101, 102, 103, 106, 107, 110, 111, 113, 118, 119, 122, 123, 133], "inventory2": 25, "yum": [25, 44, 90, 99, 133], "box": [25, 27], "control": [25, 29, 32, 85, 87, 98, 99, 110, 117, 123, 133], "boot": [25, 94, 104, 108, 117, 119, 122, 124], "coupl": 25, "wai": [25, 87, 120, 124, 133], "adhoc": 25, "assum": [25, 40, 89, 92, 96, 99, 101, 102, 119], "reboot_timeout": [25, 119], "delai": [25, 32, 36, 119], "bash_profil": [25, 115], "profil": 25, "bash": [25, 75, 119], "sourc": [25, 46, 51, 92, 97, 99, 102, 103, 127, 129, 130], "complet": [25, 36, 99, 119], "zsh": 25, "were": [25, 131], "_pyinfra_complet": 25, "bash_sourc": 25, "zsh_sourc": 25, "guarante": 26, "offer": [26, 78], "where": [26, 99, 103, 111, 117, 121, 133], "semant": [26, 47], "rule": [26, 60, 90], "mean": [26, 32, 41, 86, 89, 99, 119, 133], "break": [26, 99, 133], "minor": [26, 47, 75], "Such": 26, "major": [26, 35, 47, 75, 97, 127], "due": 26, "next": [26, 36, 86], "releas": [26, 35, 75, 97, 99, 127, 129], "semver": 26, "latest": [26, 35, 88, 91, 92, 93, 95, 96, 97, 101, 107, 110, 111, 112, 120, 127, 129, 130], "previou": [26, 36], "new": [26, 27, 29, 32, 44, 86, 87, 90, 98, 99, 102, 113, 119, 132], "patch": [26, 47], "bug": 26, "fix": [26, 35], "work": [26, 35, 40, 54, 74, 89, 99, 102, 110, 111, 133], "anywher": [26, 89], "mac": [26, 93, 131], "window": [26, 35, 131], "To": [26, 35, 36, 86, 99, 119], "debug": [26, 36, 89], "explicitli": 26, "gevent": 26, "aim": [26, 36], "unix": [26, 131], "develop": [26, 35, 39, 88], "distro": [26, 92], "18": [26, 75, 86], "20": [26, 75, 123, 133], "debian": [26, 75, 92, 123], "9": [26, 76], "7": [26, 55, 88, 97, 127], "fedora": [26, 75, 123], "33": 26, "alpin": [26, 29, 30, 91, 98], "bsd": [26, 48, 94, 111, 119], "flavour": 26, "openbsd": [26, 111, 119], "6": [26, 33, 88, 123], "freebsd": [26, 111], "12": [26, 55], "netbsd": [26, 111], "hardenedbsd": 26, "11": 26, "dragonflybsd": 26, "opensus": [26, 84, 129], "leap15": 26, "tumblewe": 26, "maco": [26, 31, 35, 75, 86], "15": [26, 92], "posix": [26, 119], "move": [26, 36, 99, 121], "lot": 26, "old": [26, 35, 99], "legaci": 26, "encount": 26, "seen": 26, "changelog": 26, "bring": 26, "again": [26, 36], "v2": [26, 129], "sens": 26, "replac": [26, 90], "wa": [26, 99, 121, 130], "confus": 26, "someshel": 26, "do": [27, 32, 36, 86, 92, 99, 119, 120, 133], "thing": [27, 36, 38, 86, 89], "vagrant": [27, 121], "check": [27, 32, 44, 54, 73, 78, 90, 91, 92, 93, 97, 105, 112, 119, 121, 127, 129, 132], "guid": [27, 44, 86, 87, 90], "popular": [27, 90], "chroot": 27, "dockerssh": 27, "allow": [28, 29, 30, 92, 113, 116, 118, 120, 133], "anoth": [28, 34, 40, 75, 121, 133], "imag": [29, 30, 53, 86, 90, 105], "save": [29, 86, 89, 99, 125, 133], "bionic": [29, 30, 75, 92], "2beb8c15a1b1": 29, "interact": [29, 32], "docker_identifi": 29, "beta": 30, "remotehost": 30, "compat": [31, 110, 119, 132], "ident": [32, 40, 119], "ssh_hostnam": [32, 33], "ssh_port": 32, "port": [32, 74, 90, 98, 99, 103, 106, 113, 115, 119, 121], "ssh_user": [32, 33, 89], "ssh_password": 32, "ssh_kei": [32, 89], "ssh_key_password": [32, 89], "ssh_allow_ag": 32, "agent": [32, 90, 130], "ssh_look_for_kei": 32, "look": [32, 36], "privat": 32, "ssh_forward_ag": 32, "forward": [32, 103], "ssh_config_fil": 32, "ssh_known_hosts_fil": 32, "known_host": [32, 99, 102, 121], "ssh_strict_host_key_check": 32, "strict": 32, "ssh_paramiko_connect_kwarg": 32, "paramiko": 32, "sshclient": 32, "ssh_connect_retri": 32, "tri": [32, 99], "ssh_connect_retry_min_delai": 32, "lower": 32, "random": [32, 40], "retri": 32, "float": 32, "ssh_connect_retry_max_delai": 32, "upper": 32, "share": [32, 39, 87, 98], "usernam": [32, 41, 106, 113], "ssh_usernam": [], "fetch": [33, 41, 85, 92], "flatten": 33, "json": [33, 41, 53], "server_group": 33, "server_group_node_ip": 33, "would": [33, 36, 39, 119], "extra": [33, 99, 103], "statu": [34, 40, 61, 65, 73, 74, 78, 79, 116], "vm": [34, 39, 119, 128], "thank": 35, "third": 35, "parti": 35, "pull": [35, 89, 98, 102], "help": [35, 78, 86], "expand": [35, 66, 99], "growth": 35, "ad": [35, 87, 89, 99, 115, 117, 130, 133], "There": [35, 133], "per": [35, 89, 122], "track": [35, 102, 120], "off": [35, 74], "unless": [35, 36, 86, 92, 99, 119, 133], "virtualenv": [35, 90], "choic": 35, "m": [35, 119], "venv": [35, 90], "pyenv": 35, "clone": [35, 102], "repo": [35, 40, 57, 84, 89, 90, 99], "git": [35, 44, 86, 89, 90], "github": [35, 37, 39, 89, 93, 102, 129, 130, 131, 133], "com": [35, 39, 40, 44, 46, 58, 88, 89, 92, 93, 97, 99, 102, 119, 121, 127, 128, 129, 131], "fizzadar": [39, 89, 102], "edit": [35, 88, 99, 102, 119, 124], "cd": 35, "pip": [35, 44, 86, 90], "suit": 35, "part": [35, 59, 99, 119], "pytest": 35, "cov": 35, "coverag": 35, "expect": [35, 36, 78, 115], "drop": [35, 103, 113], "overal": 35, "project": [35, 38, 42, 93, 131], "select": [35, 63, 88], "e2": 35, "yet": [2, 35], "end_to_end_loc": 35, "end_to_end_ssh": 35, "end_to_end_dock": 35, "sphinx": 35, "doc": [35, 93, 99, 132], "view": 35, "localhost": [35, 63, 99, 106], "8000": 35, "http": [35, 39, 40, 46, 52, 78, 82, 84, 88, 92, 93, 96, 97, 99, 100, 101, 102, 111, 120, 127, 129], "d": [35, 48, 78, 92, 94, 99, 122, 123, 124], "lint": 35, "flake8": 35, "black": 35, "isort": 35, "codestyl": [], "just": [38, 89, 93, 98], "five": 36, "phase": [36, 133], "determin": [36, 44, 86], "cleanup": 36, "step": [36, 86], "through": [36, 99], "goal": 36, "about": [36, 54, 131, 133], "ll": 36, "depth": 36, "explain": 36, "why": 36, "critic": 36, "databas": [36, 42, 63, 70], "webserv": [36, 42, 119], "web_serv": [36, 41, 42], "web": [36, 41, 42, 99, 118], "01": 36, "02": 36, "03": 36, "db_server": [36, 41, 42, 89], "And": [36, 39, 42], "iftop": [36, 85, 86], "cache_tim": [36, 92, 99], "3600": [36, 92], "postgr": [36, 44, 90, 133], "postgresql": [36, 44, 70, 89, 90, 113], "realli": 36, "slow": 36, "But": 36, "stop": [36, 86, 90, 98, 123], "until": [36, 92, 97, 98, 127, 129], "onto": 36, "sequenti": 36, "individu": [36, 86, 89, 133], "pg_hba": 36, "made": [36, 38, 86], "immut": [36, 133], "arch": [36, 44, 109, 111, 133], "absolut": [36, 133], "sure": [36, 132, 133], "let": [36, 39], "bad": 36, "highlight": [36, 37, 133], "problem": [36, 116], "site": [36, 110], "rememb": [36, 99], "figur": 36, "correct": 36, "detail": [36, 75, 89, 113, 125, 133], "explan": 36, "evalu": 36, "becom": [36, 89, 125], "solut": [36, 88], "reli": 36, "second": [36, 86, 92, 99, 117, 119], "case": [36, 86, 87, 97, 99, 111, 126, 127], "noth": [36, 86], "reload": [36, 94, 108, 117, 119, 122, 123, 124], "outcom": 36, "remove_default_sit": 36, "sinc": [36, 99, 119], "exactli": 36, "checkout": [37, 102], "properli": 37, "introduc": 37, "folder": [37, 99, 102, 133], "structur": [37, 74, 111], "common": [37, 87, 92, 99, 133], "practic": 37, "client": 37, "asset": 37, "dynam": 37, "role": [37, 70, 74, 90, 133], "often": 38, "pre": 38, "compil": [38, 88], "place": [38, 99, 103], "perform": 38, "kind": [38, 133], "yarn": 38, "alongsid": 38, "pick": 38, "sai": [39, 133], "app": [39, 52, 55, 82, 89, 133], "wish": 39, "product": [39, 89], "dev": [39, 59, 74, 75], "good": [39, 86, 133], "layout": 39, "git_repo": 39, "differ": [32, 39, 44, 87, 99, 119], "git_branch": 39, "master": [39, 98, 102, 115], "around": 40, "idea": 40, "sometim": 40, "feed": 40, "mid": [40, 92, 97, 127, 129], "zeroti": 40, "authent": [40, 133], "authorize_serv": 40, "cat": 40, "lib": [40, 92], "public": [40, 58, 119], "assert": [40, 116], "ok": [40, 116], "server_id": 40, "author": 40, "respons": 40, "post": 40, "raise_for_statu": 40, "back": [40, 99], "biggest": 41, "regular": 41, "result": [41, 133], "get_serv": 41, "mycompani": 41, "append": [41, 99, 103], "initi": 41, "without": [41, 91, 92, 93, 95, 96, 97, 99, 101, 107, 110, 112, 124, 127, 129], "master_db_serv": 41, "db_user": 41, "involv": [42, 99], "task": [42, 129, 133], "everywher": 42, "web1": 42, "web2": 42, "web3": 42, "db1": 42, "db2": 42, "db3": 42, "dbserver": 42, "encrypt": [43, 119], "sensit": [43, 97, 111, 126, 127], "privi": 43, "getpass": 43, "get_secret": 43, "encrypted_secret": 43, "pleas": [43, 59, 75, 131, 132], "peek": 43, "my_secret": 43, "altern": [43, 73, 89, 117], "might": 43, "top_secret_password": 43, "alter": [44, 63, 113], "popul": 44, "begin": [44, 54, 99], "test": [2, 44, 86, 88, 102, 111, 119, 130, 133], "myhost": 44, "date": [44, 86, 92, 99], "openssh": 44, "myhost2": 44, "deb": [44, 46, 90], "debpackag": [44, 92], "anotherfil": 44, "txt": [44, 121, 133], "leverag": 44, "namespac": 44, "shortcut": [44, 59, 75], "sidebar": 44, "apk": [44, 90], "apkpackag": [44, 91], "aptkei": [44, 92], "aptsourc": [44, 92], "brew": [44, 90], "brewcask": [44, 93], "brewpackag": [44, 93], "brewtap": [44, 93], "brewvers": [44, 93], "bsdinit": [44, 90], "rcdstatu": [44, 94], "cargo": [44, 90], "cargopackag": [44, 95], "choco": [44, 90], "chocopackag": [44, 96], "chocovers": 44, "debarch": 44, "dnf": [44, 86, 90, 127], "dnfrepositori": 44, "dockercontain": [44, 98], "dockerimag": 44, "dockernetwork": [44, 98], "dockersinglemixin": 44, "dockersysteminfo": 44, "finddirectori": 44, "findinfil": [44, 99, 119, 121], "findlink": [44, 123], "md5file": [44, 99], "sha1fil": [44, 99], "sha256fil": [44, 99], "socket": 44, "gem": [44, 90, 96], "gempackag": [44, 101], "gitbranch": [44, 102], "gitconfig": [44, 102], "gittrackingbranch": [44, 102], "gpg": [44, 46, 52, 82, 92, 97, 127, 129], "gpgkei": [44, 52, 82, 92, 97, 127, 129], "gpgsecretkei": 44, "hardwar": 44, "blockdevic": 44, "cpu": 44, "ipv4address": 44, "ipv4addr": 44, "ipv6address": 44, "ipv6addr": 44, "memori": 44, "networkdevic": 44, "iptabl": [44, 90], "ip6tableschain": [44, 103], "ip6tablesrul": [44, 103], "iptableschain": [44, 103], "iptablesrul": [44, 103], "launchd": [44, 90], "launchdstatu": [44, 104], "lxd": [44, 76, 90, 119, 120], "lxdcontain": [44, 105], "mysql": [44, 90], "mysqldatabas": [44, 106], "mysqlusergr": [44, 106], "mysqlus": [44, 106], "npm": [44, 90], "npmpackag": [44, 107], "openrc": [44, 90], "openrcen": [44, 108], "openrcstatu": [44, 108], "pacman": [44, 90], "pacmanpackag": [44, 109], "pacmanunpackgroup": [44, 109], "pip3packag": 44, "pippackag": [44, 110], "pkg": [44, 90, 91, 92, 93, 95, 96, 97, 101, 107, 109, 110, 127, 129], "pkgpackag": [44, 111], "pkgin": [44, 90], "pkginpackag": [44, 112], "postgresdatabas": [44, 113], "postgresrol": [44, 113], "postgresqldatabas": 44, "postgresqlrol": 44, "rpm": [44, 52, 82, 84, 90], "rpmpackag": [44, 97, 127, 129], "rpmpackageprovid": [44, 97, 127], "selinux": [44, 90], "filecontext": [44, 118], "filecontextmap": [44, 118], "seboolean": [44, 118], "seport": [44, 118], "crontab": [44, 90, 99], "hasgui": 44, "kernel": [44, 92, 119], "kernelmodul": [44, 119], "kernelvers": 44, "linuxdistribut": [44, 97, 123, 127], "linuxgui": 44, "lsbreleas": 44, "macosvers": 44, "mount": [44, 59, 90], "osvers": [44, 92, 111], "securitylimit": 44, "sysctl": [44, 90], "tmpdir": 44, "snap": [44, 90], "snapbasefact": 44, "snappackag": [44, 120], "systemden": [44, 122], "systemdstatu": [44, 122], "sysvinit": [44, 90], "initdstatu": [44, 123], "upstart": [44, 90], "upstartstatu": [44, 124], "vzctl": [44, 90], "openvzcontain": [44, 125], "xbp": [44, 90], "xbpspackag": [44, 126], "yumrepositori": 44, "zypper": [44, 90], "zypperrepositori": 44, "package_nam": [45, 47, 49, 50, 51, 56, 64, 66, 67, 68, 69, 72, 81], "keychain": [46, 58], "length": [46, 58], "uid": [46, 58, 75, 119], "oxygem": [46, 58], "url": [46, 58, 92, 93, 97, 99, 102, 115, 127, 129], "archiv": [46, 51], "org": [46, 52, 55, 78, 82, 84, 88, 92, 96, 97, 100, 101, 111, 127, 129], "distribut": [46, 75, 84, 123, 133], "trusti": 46, "compon": 46, "multivers": 46, "cask": [47, 90], "tap": [47, 90], "initd_statu": 48, "rc": [48, 94, 108, 122, 123, 124], "unlik": 48, "behav": 48, "trust": 48, "chocolatei": [50, 96], "architectur": [51, 75], "repositori": [51, 52, 82, 84, 91, 92, 93, 97, 102, 109, 111, 112, 126, 127, 129, 133], "amd64": [51, 88], "dpkg": 51, "releasev": [52, 82, 84], "baseurl": [52, 82, 84, 97, 127, 129], "mirror": [52, 82, 111], "contentdir": [52, 82], "basearch": [52, 82, 97, 127], "gpgcheck": [52, 82, 97, 127, 129], "pki": [52, 82], "centosoffici": [52, 82], "object_id": 53, "inspect": 53, "network": [53, 59, 90], "content": [54, 99, 118, 124], "marker": [54, 99], "possibli": [54, 73], "xrai": 54, "alpha": [54, 99], "644": [54, 85, 99, 133], "size": [54, 75, 128], "3928": 54, "quote_path": 54, "interpolate_vari": [54, 99, 119], "text": [54, 99, 133], "grep": [54, 99], "link_target": 54, "md5": [54, 99], "sha1sum": [54, 99], "doest": 54, "sha256": [54, 99], "keyr": 58, "fingerprint": 58, "abc": 58, "devic": [59, 75, 119], "sda1": 59, "39489508": 59, "used_perc": 59, "836392": 59, "40325900": 59, "interfac": [59, 103], "ipv4": [59, 98], "address": [59, 98, 99], "eth0": 59, "127": 59, "ipv6": [59, 98], "fe80": 59, "a00": 59, "27ff": 59, "mb": 59, "ipv4_address": 59, "ipv6_address": 59, "easier": 59, "tabl": [60, 63, 103, 106], "filter": [60, 98, 99, 103], "ip6tabl": [60, 103], "chain": [60, 90], "polici": [60, 103, 118], "prerout": [60, 103], "jump": [60, 103], "dnat": [60, 103], "mysql_us": [63, 106], "mysql_password": [63, 106], "mysql_host": [63, 106], "mysql_port": [63, 106], "associ": 63, "character_set": 63, "latin1": 63, "collation_nam": 63, "latin1_swedish_ci": 63, "grant": [63, 106], "privileg": [63, 74, 85, 90, 113, 118], "pyinfra_stuff": [63, 70, 106, 113], "insert": [63, 103], "max_connect": [63, 106], "runlevel": [65, 108, 123, 124], "virtual": [66, 110, 129], "psql_user": [70, 71, 113], "psql_password": [70, 71, 113], "psql_host": [70, 71, 113], "psql_port": [70, 71, 113], "metadata": [70, 133], "encod": [70, 113], "utf8": [70, 113], "collat": [70, 106], "en_u": [70, 75], "utf": [70, 75, 119], "ctype": 70, "super": 70, "createrol": [70, 113], "createdb": [70, 113], "my_packag": 72, "capabl": [72, 75], "system_u": 74, "object_r": 74, "default_t": 74, "s0": 74, "tcp": [74, 103, 118], "udp": [74, 103, 118], "dccp": [74, 118], "sctp": [74, 118], "been": 74, "policycoreutil": 74, "definit": 74, "accord": 75, "unam": [75, 92], "cron": [75, 119], "minut": [75, 119], "hour": [75, 119], "month": [75, 119], "day_of_month": [75, 119], "day_of_week": [75, 119], "special_tim": [75, 119], "daili": [75, 77, 119], "datetim": 75, "gui": [75, 99], "module_nam": 75, "live": [75, 103], "gentoo": [75, 123], "04": [75, 86, 105, 133], "release_meta": [75, 97, 127], "codenam": 75, "focal": 75, "id_lik": 75, "c": [75, 88], "lsb_releas": 75, "lt": 75, "mv2": 75, "ext4": 75, "rw": 75, "relatim": 75, "renam": 75, "secur": [75, 119], "domain": [75, 119], "limit_typ": [75, 119], "soft": [75, 119], "nofil": [75, 119], "1048576": 75, "hard": [75, 99, 119], "memlock": 75, "unlimit": 75, "discov": [75, 87], "inotifi": 75, "max_queued_ev": 75, "16384": 75, "inod": 75, "44565": 75, "360": 75, "user_nam": [75, 77, 122], "comment": [75, 119], "bin": [75, 99, 110, 119], "main_user_group": 75, "user_id": 75, "gid": [75, 119], "main_user_group_id": 75, "lastlog": 75, "last_login_tim": 75, "encrypted_password": 75, "publish": 76, "canon": 76, "j60k4jy0hppjwojw8dzdyc8obxkxujru": 76, "channel": [76, 120], "core18": 76, "core20": 76, "snapd": 76, "user_mod": [77, 122], "unit": [77, 122], "containerd": 77, "timer": [77, 122], "unfortun": 78, "mani": [78, 92], "misbehav": 78, "displai": 78, "refspec": 78, "linuxbas": 78, "lsb_3": 78, "lsb": 78, "iniscrptact": 78, "html": [78, 98, 99], "openvz": [80, 125], "ctid": [80, 125], "666": 80, "ostempl": 80, "autorefresh": 84, "leap": 84, "oss": 84, "md": [84, 129], "faq": 85, "escal": 85, "someus": 85, "ing": [85, 86], "ownership": 85, "stuff": 86, "instruct": [86, 92, 133], "assign": [86, 89], "uptim": 86, "immedi": [86, 133], "quick": [86, 87, 132], "spin": 86, "what": [86, 99, 133], "won": [86, 92, 97, 111, 117, 127, 129], "becaus": [86, 88, 89, 123, 133], "vim": [86, 91, 92, 93, 97, 109, 111, 112, 119, 126, 127, 129], "httpd": 86, "report": [86, 132], "imageid": 86, "reus": 86, "commit": [86, 102], "think": [86, 89, 133], "ansibl": [86, 130], "playbook": 86, "chef": 86, "cookbook": 86, "my_host": 86, "subsequ": 86, "That": 86, "infrastructur": 87, "welcom": 87, "v3": [2, 87], "quickest": 87, "learn": [87, 133], "committ": 87, "hoc": [87, 130], "frequent": 87, "ask": [87, 132], "question": [87, 132], "answer": 87, "commonli": 87, "focu": 87, "index": [87, 89, 133], "terraform": 87, "g": [87, 98, 119, 128, 133], "redistribut": 87, "recommend": [35, 88, 91, 92], "windowsserver2019": 88, "www": [88, 92, 99, 100], "ex": [88, 92, 98], "administr": [88, 96, 117], "perhap": 88, "visual": 88, "studio": 88, "commun": [88, 132], "visualstudio": 88, "microsoft": 88, "desktop": 88, "least": 88, "msvc": 88, "v142": 88, "sdk": [55, 88], "cmake": 88, "atl": 88, "daemon": [89, 122], "data_dict": 89, "install_postgr": 89, "dir": [89, 99], "group_nam": 89, "receiv": 89, "app_us": [89, 133], "myuser": [89, 133], "app_dir": [89, 133], "opt": [89, 98, 133], "rel": [89, 99, 119, 133], "chdir": 89, "basi": 89, "explor": 89, "some_kei": 89, "pretti": 89, "much": [89, 120], "necessari": [90, 99], "reach": 90, "categori": 90, "alphabet": 90, "upgrad": [90, 95, 96, 97, 101, 107, 110, 127, 129], "dist_upgrad": 90, "ppa": 90, "cask_upgrad": 90, "put": 90, "sync": 90, "bare_repo": 90, "worktre": 90, "dump": 90, "sql": 90, "puppet": 90, "file_context": 90, "file_context_map": 90, "modprob": 90, "reboot": 90, "script_templ": 90, "security_limit": 90, "user_authorized_kei": 90, "keyscan": [90, 102], "daemon_reload": 90, "delet": [90, 99], "restart": [90, 94, 104, 108, 117, 119, 122, 123, 124], "unmount": 90, "pin": [91, 92, 93, 95, 96, 97, 101, 107, 109, 110, 127, 129], "asterisk": [91, 92], "idempot": [91, 92, 93, 96, 97, 98, 99, 106, 109, 112, 113, 114, 115, 116, 117, 119, 121, 122, 125, 126, 127, 129], "forc": [91, 92, 98, 99, 102, 119, 121, 125], "whole": 91, "ye": 92, "unmet": 92, "depend": [92, 133], "isn": [92, 97, 127, 129], "wget": [92, 99], "chrome": 92, "dl": [92, 97, 127], "googl": 92, "stable_current_amd64": 92, "emploi": 92, "dist": 92, "keyserv": 92, "keyid": 92, "virtualbox": 92, "oracle_vbox_2016": 92, "asc": 92, "no_recommend": 92, "allow_downgrad": 92, "extra_install_arg": [92, 97, 110, 127, 129], "extra_uninstall_arg": [92, 97, 127, 129], "downgrad": 92, "uninstal": [92, 97, 110, 127, 129], "period": 92, "stamp": 92, "upon": 92, "r": [92, 99, 118], "72": 92, "header": [92, 99], "softwar": 92, "bitcoin": 92, "hardi": 92, "contrib": 92, "auto_remov": 92, "autoremov": 92, "transit": 92, "longer": 92, "unneed": 92, "osx": 93, "godot": 93, "vimpag": [93, 119, 126], "includeo": 93, "equival": 93, "kptdev": 93, "kpt": 93, "ktr0731": 93, "evan": 93, "usr": [94, 98, 99, 102, 110], "custom": [94, 104, 108, 117, 119, 122, 124], "disabl": [94, 99, 104, 108, 117, 119, 122, 123, 124], "aka": [95, 107], "rust": 95, "notepad": 96, "notepadplusplu": 96, "linux_id": [97, 127], "clean": [97, 127, 129], "nobest": [97, 127], "enhanc": [97, 127, 129], "verbos": [97, 127, 129], "valid": [97, 127, 129], "manual": [97, 98, 118, 123, 124, 127, 129], "construct": [97, 127, 129], "ce": [97, 99, 127], "dockerc": [97, 127], "ore": [97, 127, 129], "major_centos_vers": 97, "epel": [97, 127], "fedoraproject": [97, 127], "pub": [97, 111, 127], "noarch": [97, 127], "surround": 99, "appropri": 99, "backup": [99, 119], "escape_regex_charact": 99, "try_prevent_shell_expans": 99, "regex": 99, "escap": 99, "charact": 99, "prevent": [99, 119], "mark": 99, "prepend": 99, "expans": 99, "awk": 99, "quot": 99, "entri": [99, 119], "red": 99, "mar": 99, "n10": 99, "bodi": 99, "alia": 99, "zshrc": 99, "eval": 99, "thefuck": 99, "alias": 99, "force_backup": 99, "force_backup_dir": 99, "dir_that_we_want_remov": 99, "myweb": [99, 119], "netboot": 99, "tftp": 99, "nf": 99, "sha256sum": 99, "md5sum": 99, "insecur": 99, "proxi": [98, 99], "even": [99, 121], "checksum": 99, "verif": 99, "yourproxi": 99, "create_remote_dir": 99, "755": 99, "umask": 99, "600": [99, 119], "clear": 99, "librari": 99, "visibl": 99, "hidden": 99, "veri": 99, "uchg": 99, "schg": 99, "add_deploy_dir": [99, 119], "create_local_dir": 99, "suitabl": 99, "whocar": 99, "sed": 99, "ensure_newlin": 99, "entir": [99, 133], "interpol": [99, 119], "swap": 99, "special": [99, 119], "iso": 99, "taken": 99, "seper": [], "newlin": 99, "mainten": 99, "maintenance_lin": 99, "down": [73, 99, 117], "FOR": 99, "motd": 99, "Then": 99, "ro": 99, "no_wdelai": 99, "insecure_lock": 99, "no_root_squash": 99, "no_subtree_check": 99, "python3": 99, "sudoer": 99, "nopasswd": 99, "doubl": 99, "quotaus": 99, "addus": 99, "conf": [99, 119], "symbol": 99, "recreat": 99, "issue2": 99, "issu": [99, 132], "assume_exist": 99, "dai": [98, 99, 119], "stringio": 99, "verboten": 99, "forbidden": 99, "binari": 99, "ax": [], "automat": [99, 117, 124], "stricthostkeycheck": 99, "dir_mod": 99, "exclud": 99, "exclude_dir": 99, "pyc": 99, "node_modul": 99, "interpret": [99, 110], "tempdir": 99, "fnmatch": 99, "behind": 99, "scene": 99, "treat": 99, "howev": 99, "deep": 99, "__pycache__": 99, "convent": 99, "suffix": 99, "j2": [99, 119, 133], "somefil": 99, "foo_vari": 99, "foo": [99, 118], "foo_dict": 99, "str1": 99, "str2": 99, "foo_list": 99, "dict_cont": 99, "list_cont": 99, "endfor": 99, "yml": 99, "rubi": 101, "rubygem": 101, "rspec": 101, "bare": 102, "chown": 102, "multi_valu": 102, "anon": 102, "mous": 102, "branch": 102, "rebas": 102, "ssh_keyscan": [102, 121], "update_submodul": 102, "recursive_submodul": 102, "submodul": 102, "detach": 102, "new_branch": 102, "commitish": 102, "from_remote_branch": 102, "assume_repo_exist": 102, "tree": 102, "head": 102, "identifi": [98, 102, 105, 119], "unclean": 102, "hotfix": 102, "4e091aa0": 102, "origin": 102, "not_protocol": 103, "not_sourc": 103, "destin": 103, "not_destin": 103, "in_interfac": 103, "not_in_interfac": 103, "out_interfac": 103, "not_out_interfac": 103, "to_destin": 103, "to_sourc": 103, "to_port": 103, "log_prefix": 103, "destination_port": 103, "source_port": 103, "incom": 103, "outgo": 103, "rout": [98, 103], "snat": 103, "redirect": 103, "physdev": 103, "traffic": 103, "22": [103, 121], "nat": 103, "53": 103, "8080": 103, "launchctl": 104, "16": 105, "absent": [105, 113], "ubuntu19": 105, "19": 105, "four": [106, 113], "charset": 106, "user_hostnam": 106, "user_privileg": 106, "mysql_": 106, "attempt": [113, 119], "mysqldump": 106, "pyinfra_stuff_copi": [106, 113], "flush": 106, "with_grant_opt": 106, "require_ciph": 106, "require_issu": 106, "require_subject": 106, "max_queries_per_hour": 106, "max_updates_per_hour": 106, "max_connections_per_hour": 106, "cannot": 118, "detect": 119, "somepassword": 113, "resourc": [120, 133], "50": [], "certif": [], "x509": [], "se": [], "st": [], "stockholm": [], "edh": [], "rsa": [], "de": [], "cbc3": [], "sha": [], "node": 107, "j": 107, "sy": 109, "plugin": 109, "fugit": 109, "virtualenv_kwarg": 110, "site_packag": 110, "always_copi": 110, "symlink": [110, 117], "standard": 110, "pkg_": 111, "variant": 111, "elsewher": 111, "pkg_path": 111, "autogener": 111, "ftp": 111, "offici": [111, 131, 132], "helpfulli": 111, "addon": 111, "tmux": 112, "psql": 113, "owner": 113, "lc_collat": 113, "lc_ctype": 113, "tablespac": 113, "connection_limit": 113, "psql_": 113, "pg_dump": 113, "superus": 113, "inherit": 113, "replic": 113, "success_exit_cod": 115, "my_callback": 116, "callback": [116, 133], "notimplementederror": 116, "bool_nam": 118, "persist": [118, 119], "apach": 118, "ldap": 118, "httpd_can_network_connect": 118, "se_typ": 118, "express": 118, "bar": 118, "serv": 118, "httpd_sys_content_t": 118, "restorecon": 118, "port_num": 118, "2222": 118, "http_port_t": 118, "care": 119, "cron_nam": 119, "whose": 119, "cronjob": 119, "futur": [2, 119], "overwrit": 119, "week": 119, "nicknam": 119, "uniqu": 119, "weekli": 119, "tar": 119, "cf": 119, "etc_bup": 119, "backup_etc": 119, "groupid": 119, "wheel": 119, "luser": 119, "hostnamectl": 119, "older": [98, 119], "hostname_fil": 119, "perman": 119, "matter": 119, "auto": [90, 119], "mynam": 119, "server1": 119, "en_gb": 119, "unload": 119, "silli": 119, "floppi": 119, "fs_type": 119, "remount": 119, "fstab": 119, "presenc": 119, "relev": 119, "reconnect": 119, "interv": 119, "300": 119, "total": 119, "60": 119, "some_var": 119, "hello2": 119, "blah": 119, "wildcard": 119, "nproc": 119, "1024": 119, "persist_fil": 119, "max": 119, "100000": 119, "authorized_kei": 119, "public_kei": 119, "delete_kei": 119, "ensure_hom": 119, "create_hom": 119, "primari": 119, "secondari": 119, "skeleton": 119, "account": 119, "userid": 119, "geco": 119, "duplic": 119, "newli": 119, "kevin": 119, "bob": 119, "authorized_key_directori": 119, "authorized_key_filenam": 119, "ed25519": 119, "netstat": 119, "80": [98, 119, 123], "snapcraft": 120, "classic": 120, "confin": 120, "tradit": 120, "correspond": 120, "vlc": [55, 100, 120], "neovim": 120, "nvim": 120, "scp": 121, "local_filenam": 121, "rescan": 121, "use_remote_sudo": 121, "systemctl": 122, "session": 122, "dnsmasq": 122, "logrot": 122, "rcx": 123, "y": [123, 126], "start_prior": 123, "stop_prior": 123, "start_level": 123, "stop_level": 123, "prioriti": 123, "d_enabl": 123, "finer": 123, "rsyslog": 123, "sysv": 123, "mess": 123, "certain": [123, 133], "rhel": 123, "chkconfig": 123, "granular": 123, "job": 124, "fiddl": 124, "vztctl": 125, "u": 126, "pager": 126, "major_vers": 127, "extra_global_install_arg": 129, "extra_global_uninstall_arg": 129, "field": 129, "opensuse_tumblewe": 129, "task_linux_amd64": 129, "less": 130, "2024": 130, "benchmark": 130, "fabric": 130, "act": 130, "closer": 130, "opentyp": 131, "font": 131, "complement": 131, "san": 131, "famili": 131, "afdko": 131, "makeotf": 131, "suggest": 131, "maintain": 131, "frank": 131, "grie\u00dfhamm": 131, "mailto": 131, "opensourcefont": 131, "adob": 131, "subject": 131, "consider": 131, "background": 131, "readm": 131, "chat": 132, "matrix": 132, "room": 132, "stack": 132, "overflow": 132, "tag": [98, 132], "scan": 132, "referenc": 132, "anyon": 132, "els": 132, "submit": 132, "fantast": 132, "tell": 133, "cover": 133, "retriev": 133, "At": 133, "flow": 133, "plane": 133, "retreiv": [], "nano": 133, "db_host": 133, "db_hostnam": 133, "yaml": 133, "myapp": 133, "meta": 133, "create_us": 133, "awai": 133, "runtim": 133, "got": 133, "scenario": 133, "install_someth": 133, "overridden": 133, "great": 133, "pend": 2, "_inner": 3, "all_global_argu": 5, "_raise_if_not_complet": 16, "will_chang": 16, "nonetyp": 24, "enforc": 35, "mypi": 35, "pyright": 35, "though": 35, "handi": 35, "dockervolum": [44, 98], "runit": [44, 90], "runitmanag": [44, 117], "runitstatu": [44, 117], "volum": [44, 53, 90], "svdir": [73, 117], "agetti": 73, "tty1": 73, "dhcpcd": 73, "wpa_supplic": 73, "prune": 90, "wait_runsv": 90, "env_var": 98, "pull_alwai": 98, "expos": 98, "varibl": 98, "inject": 98, "contan": 98, "nginx_data": 98, "driver": 98, "gatewai": 98, "ip_rang": 98, "ipam_driv": 98, "subnet": 98, "scope": 98, "ipam_opt": 98, "label": 98, "ingress": 98, "network_nam": 98, "alloc": [98, 128], "cidr": 98, "segment": 98, "ipam": 98, "swarm": 98, "mesh": 98, "unus": 98, "dangl": 98, "ones": 98, "anonym": 98, "24h": 98, "90": 98, "2160h": 98, "storag": 98, "sourcedir": 117, "sv": 117, "effect": 117, "although": 117, "still": 117, "runsv": 117, "ON": 118, "NOT": 92, "wiki": 92, "debianrepositori": 92, "usethirdparti": 92, "jinja_env_kwarg": [19, 99], "flatpak": [44, 90], "flatpakbasefact": 44, "flatpakpackag": [44, 100], "zf": [44, 90], "dataset": [44, 90], "snapshot": [44, 90], "signal": 55, "ref": 55, "x86_64": 55, "gnome": 55, "platform": 55, "kde": 55, "libreoffic": 55, "videolan": [55, 100], "jinja": 99, "render": 99, "kodi": 100, "tv": 100, "destroi": 128, "dataset_nam": 128, "spars": 128, "volume_s": 128, "parent": 128, "child": 128, "extra_prop": 128, "prop": 128, "merg": 128, "conveni": 128, "tank": 128, "srv": 128, "mountpoint": 128, "compress": 128, "lz4": 128, "sun": 128, "auto_snapshot": 128, "db_srv_04": 128, "32g": 128, "old_vers": 128, "fs_name": 128, "snapshot_nam": 128, "weekly_backup": 128, "volume_nam": 128, "create_otherus": 133, "otherus": 133, "lamba": 133, "lambda": 133}, "objects": {"pyinfra.api": [[5, 0, 0, "-", "arguments"], [6, 0, 0, "-", "arguments_typed"], [7, 0, 0, "-", "command"], [8, 0, 0, "-", "config"], [9, 0, 0, "-", "connect"], [10, 0, 0, "-", "connectors"], [11, 0, 0, "-", "deploy"], [12, 0, 0, "-", "exceptions"], [13, 0, 0, "-", "facts"], [14, 0, 0, "-", "host"], [15, 0, 0, "-", "inventory"], [16, 0, 0, "-", "operation"], [17, 0, 0, "-", "operations"], [18, 0, 0, "-", "state"], [19, 0, 0, "-", "util"]], "pyinfra.api.arguments": [[5, 1, 1, "", "AllArguments"], [5, 1, 1, "", "ArgumentMeta"], [5, 1, 1, "", "ConnectorArguments"], [5, 1, 1, "", "ExecutionArguments"], [5, 1, 1, "", "MetaArguments"], [5, 3, 1, "", "all_global_arguments"], [5, 3, 1, "", "generate_env"], [5, 3, 1, "", "pop_global_arguments"]], "pyinfra.api.arguments.AllArguments": [[5, 2, 1, "", "name"]], "pyinfra.api.arguments.ArgumentMeta": [[5, 2, 1, "", "default"], [5, 2, 1, "", "description"], [5, 2, 1, "", "handler"]], "pyinfra.api.arguments.MetaArguments": [[5, 2, 1, "", "name"]], "pyinfra.api.arguments_typed": [[6, 1, 1, "", "PyinfraOperation"]], "pyinfra.api.command": [[7, 1, 1, "", "FileDownloadCommand"], [7, 1, 1, "", "FileUploadCommand"], [7, 1, 1, "", "FunctionCommand"], [7, 1, 1, "", "MaskString"], [7, 1, 1, "", "PyinfraCommand"], [7, 1, 1, "", "QuoteString"], [7, 1, 1, "", "RsyncCommand"], [7, 1, 1, "", "StringCommand"], [7, 3, 1, "", "make_formatted_string_command"]], "pyinfra.api.command.FileDownloadCommand": [[7, 4, 1, "", "execute"]], "pyinfra.api.command.FileUploadCommand": [[7, 4, 1, "", "execute"]], "pyinfra.api.command.FunctionCommand": [[7, 4, 1, "", "execute"]], "pyinfra.api.command.PyinfraCommand": [[7, 2, 1, "", "connector_arguments"], [7, 4, 1, "", "execute"]], "pyinfra.api.command.QuoteString": [[7, 2, 1, "", "obj"]], "pyinfra.api.command.RsyncCommand": [[7, 4, 1, "", "execute"]], "pyinfra.api.command.StringCommand": [[7, 4, 1, "", "execute"], [7, 4, 1, "", "get_masked_value"], [7, 4, 1, "", "get_raw_value"]], "pyinfra.api.config": [[8, 1, 1, "", "Config"], [8, 1, 1, "", "ConfigDefaults"], [8, 3, 1, "", "check_pyinfra_version"], [8, 3, 1, "", "check_require_packages"]], "pyinfra.api.config.Config": [[8, 4, 1, "", "copy"], [8, 4, 1, "", "get_current_state"], [8, 4, 1, "", "lock_current_state"], [8, 4, 1, "", "reset_locked_state"], [8, 4, 1, "", "set_current_state"]], "pyinfra.api.config.ConfigDefaults": [[8, 2, 1, "", "CONNECT_TIMEOUT"], [8, 2, 1, "", "DEFAULT_TEMP_DIR"], [8, 2, 1, "", "DOAS"], [8, 2, 1, "", "DOAS_USER"], [8, 2, 1, "", "FAIL_PERCENT"], [8, 2, 1, "", "IGNORE_ERRORS"], [8, 2, 1, "", "PARALLEL"], [8, 2, 1, "", "PRESERVE_SUDO_ENV"], [8, 2, 1, "", "PRESERVE_SU_ENV"], [8, 2, 1, "", "REQUIRE_PACKAGES"], [8, 2, 1, "", "REQUIRE_PYINFRA_VERSION"], [8, 2, 1, "", "SHELL"], [8, 2, 1, "", "SUDO"], [8, 2, 1, "", "SUDO_PASSWORD"], [8, 2, 1, "", "SUDO_USER"], [8, 2, 1, "", "SU_SHELL"], [8, 2, 1, "", "SU_USER"], [8, 2, 1, "", "TEMP_DIR"], [8, 2, 1, "", "USE_SUDO_LOGIN"], [8, 2, 1, "", "USE_SU_LOGIN"]], "pyinfra.api.connect": [[9, 3, 1, "", "connect_all"], [9, 3, 1, "", "disconnect_all"]], "pyinfra.api.connectors": [[10, 3, 1, "", "get_all_connectors"], [10, 3, 1, "", "get_execution_connector"], [10, 3, 1, "", "get_execution_connectors"]], "pyinfra.api.deploy": [[11, 3, 1, "", "add_deploy"], [11, 3, 1, "", "deploy"]], "pyinfra.api.exceptions": [[12, 5, 1, "", "ArgumentTypeError"], [12, 5, 1, "", "ConnectError"], [12, 5, 1, "", "ConnectorDataTypeError"], [12, 5, 1, "", "DeployError"], [12, 5, 1, "", "FactError"], [12, 5, 1, "", "FactTypeError"], [12, 5, 1, "", "FactValueError"], [12, 5, 1, "", "InventoryError"], [12, 5, 1, "", "NoConnectorError"], [12, 5, 1, "", "NoGroupError"], [12, 5, 1, "", "NoHostError"], [12, 5, 1, "", "OperationError"], [12, 5, 1, "", "OperationTypeError"], [12, 5, 1, "", "OperationValueError"], [12, 5, 1, "", "PyinfraError"]], "pyinfra.api.facts": [[13, 1, 1, "", "FactBase"], [13, 1, 1, "", "ShortFactBase"], [13, 3, 1, "", "get_fact"], [13, 3, 1, "", "get_facts"], [13, 3, 1, "", "get_host_fact"], [13, 3, 1, "", "get_short_facts"]], "pyinfra.api.facts.FactBase": [[13, 2, 1, "", "abstract"], [13, 2, 1, "", "command"], [13, 4, 1, "", "default"], [13, 2, 1, "", "name"], [13, 4, 1, "", "process"], [13, 4, 1, "", "process_pipeline"], [13, 4, 1, "", "requires_command"], [13, 2, 1, "", "shell_executable"]], "pyinfra.api.facts.ShortFactBase": [[13, 2, 1, "", "fact"], [13, 2, 1, "", "name"], [13, 4, 1, "", "process_data"]], "pyinfra.api.host": [[14, 1, 1, "", "Host"], [14, 1, 1, "", "HostData"], [14, 3, 1, "", "extract_callable_datas"]], "pyinfra.api.host.Host": [[14, 2, 1, "", "T"], [14, 4, 1, "", "arguments"], [14, 4, 1, "", "check_can_rsync"], [14, 4, 1, "", "connect"], [14, 2, 1, "", "connected"], [14, 2, 1, "", "connector"], [14, 2, 1, "", "connector_cls"], [14, 2, 1, "", "connector_data"], [14, 2, 1, "", "current_deploy_data"], [14, 2, 1, "", "current_deploy_kwargs"], [14, 2, 1, "", "current_deploy_name"], [14, 2, 1, "", "current_op_deploy_data"], [14, 2, 1, "", "current_op_global_arguments"], [14, 2, 1, "", "current_op_hash"], [14, 4, 1, "", "deploy"], [14, 4, 1, "", "disconnect"], [14, 2, 1, "", "executing_op_hash"], [14, 4, 1, "", "get_deploy_data"], [14, 4, 1, "", "get_fact"], [14, 4, 1, "", "get_file"], [14, 4, 1, "", "get_temp_filename"], [14, 6, 1, "", "group_data"], [14, 6, 1, "", "host_data"], [14, 2, 1, "", "in_callback_op"], [14, 2, 1, "", "in_deploy"], [14, 2, 1, "", "in_op"], [14, 4, 1, "", "init"], [14, 4, 1, "", "log"], [14, 4, 1, "", "log_styled"], [14, 4, 1, "", "loop"], [14, 2, 1, "", "loop_position"], [14, 2, 1, "", "nested_executing_op_hash"], [14, 4, 1, "", "noop"], [14, 6, 1, "", "print_prefix"], [14, 4, 1, "", "put_file"], [14, 4, 1, "", "rsync"], [14, 4, 1, "", "run_shell_command"], [14, 2, 1, "", "state"], [14, 4, 1, "", "style_print_prefix"], [14, 4, 1, "", "when"]], "pyinfra.api.host.HostData": [[14, 4, 1, "", "dict"], [14, 4, 1, "", "get"], [14, 2, 1, "", "override_datas"]], "pyinfra.api.inventory": [[15, 1, 1, "", "Inventory"], [15, 3, 1, "", "extract_name_data"]], "pyinfra.api.inventory.Inventory": [[15, 4, 1, "", "empty"], [15, 4, 1, "", "get_data"], [15, 4, 1, "", "get_group"], [15, 4, 1, "", "get_group_data"], [15, 4, 1, "", "get_groups_data"], [15, 4, 1, "", "get_host"], [15, 4, 1, "", "get_host_data"], [15, 4, 1, "", "get_override_data"], [15, 4, 1, "", "iter_activated_hosts"], [15, 4, 1, "", "iter_active_hosts"], [15, 4, 1, "", "len_activated_hosts"], [15, 4, 1, "", "len_active_hosts"], [15, 4, 1, "", "make_hosts_and_groups"], [15, 2, 1, "", "state"]], "pyinfra.api.operation": [[16, 1, 1, "", "OperationMeta"], [16, 3, 1, "", "add_op"], [16, 3, 1, "", "attach_args"], [16, 3, 1, "", "ensure_shared_op_meta"], [16, 3, 1, "", "execute_immediately"], [16, 3, 1, "", "generate_operation_name"], [16, 3, 1, "", "get_operation_name_from_func"], [16, 3, 1, "", "operation"], [16, 3, 1, "", "solve_operation_consistency"]], "pyinfra.api.operation.OperationMeta": [[16, 6, 1, "", "changed"], [16, 4, 1, "", "did_change"], [16, 4, 1, "", "did_error"], [16, 4, 1, "", "did_not_change"], [16, 4, 1, "", "did_succeed"], [16, 6, 1, "", "executed"], [16, 4, 1, "", "is_complete"], [16, 4, 1, "", "set_complete"], [16, 6, 1, "", "stderr"], [16, 6, 1, "", "stderr_lines"], [16, 6, 1, "", "stdout"], [16, 6, 1, "", "stdout_lines"], [16, 6, 1, "", "will_change"]], "pyinfra.api.operations": [[17, 3, 1, "", "run_host_op"], [17, 3, 1, "", "run_ops"]], "pyinfra.api.state": [[18, 1, 1, "", "BaseStateCallback"], [18, 1, 1, "", "State"], [18, 1, 1, "", "StateHostMeta"], [18, 1, 1, "", "StateHostResults"], [18, 1, 1, "", "StateOperationHostData"], [18, 1, 1, "", "StateOperationMeta"], [18, 1, 1, "", "StateStage"]], "pyinfra.api.state.BaseStateCallback": [[18, 4, 1, "", "host_before_connect"], [18, 4, 1, "", "host_connect"], [18, 4, 1, "", "host_connect_error"], [18, 4, 1, "", "host_disconnect"], [18, 4, 1, "", "operation_end"], [18, 4, 1, "", "operation_host_error"], [18, 4, 1, "", "operation_host_start"], [18, 4, 1, "", "operation_host_success"], [18, 4, 1, "", "operation_start"]], "pyinfra.api.state.State": [[18, 4, 1, "", "activate_host"], [18, 4, 1, "", "add_callback_handler"], [18, 2, 1, "", "check_for_changes"], [18, 2, 1, "", "config"], [18, 2, 1, "", "current_deploy_filename"], [18, 2, 1, "", "current_exec_filename"], [18, 2, 1, "", "current_op_file_number"], [18, 2, 1, "", "current_stage"], [18, 2, 1, "", "cwd"], [18, 4, 1, "", "fail_hosts"], [18, 4, 1, "", "get_meta_for_host"], [18, 4, 1, "", "get_op_data_for_host"], [18, 4, 1, "", "get_op_meta"], [18, 4, 1, "", "get_op_order"], [18, 4, 1, "", "get_results_for_host"], [18, 4, 1, "", "get_warning_counter"], [18, 4, 1, "", "increment_warning_counter"], [18, 4, 1, "", "init"], [18, 2, 1, "", "initialised"], [18, 2, 1, "", "inventory"], [18, 2, 1, "", "is_executing"], [18, 4, 1, "", "is_host_in_limit"], [18, 2, 1, "", "pool"], [18, 2, 1, "", "print_fact_info"], [18, 2, 1, "", "print_fact_input"], [18, 2, 1, "", "print_fact_output"], [18, 2, 1, "", "print_input"], [18, 2, 1, "", "print_noop_info"], [18, 2, 1, "", "print_output"], [18, 4, 1, "", "set_op_data_for_host"], [18, 4, 1, "", "set_stage"], [18, 4, 1, "", "should_check_for_changes"], [18, 2, 1, "", "should_raise_failed_hosts"], [18, 2, 1, "", "stage_warnings"], [18, 4, 1, "", "trigger_callbacks"]], "pyinfra.api.state.StateHostMeta": [[18, 2, 1, "", "op_hashes"], [18, 2, 1, "", "ops"], [18, 2, 1, "", "ops_change"], [18, 2, 1, "", "ops_no_change"]], "pyinfra.api.state.StateHostResults": [[18, 2, 1, "", "error_ops"], [18, 2, 1, "", "ignored_error_ops"], [18, 2, 1, "", "ops"], [18, 2, 1, "", "partial_ops"], [18, 2, 1, "", "success_ops"]], "pyinfra.api.state.StateOperationHostData": [[18, 2, 1, "", "command_generator"], [18, 2, 1, "", "global_arguments"], [18, 2, 1, "", "operation_meta"], [18, 2, 1, "", "parent_op_hash"]], "pyinfra.api.state.StateOperationMeta": [[18, 2, 1, "", "args"], [18, 2, 1, "", "global_arguments"], [18, 2, 1, "", "names"], [18, 2, 1, "", "op_order"]], "pyinfra.api.state.StateStage": [[18, 2, 1, "", "Connect"], [18, 2, 1, "", "Disconnect"], [18, 2, 1, "", "Execute"], [18, 2, 1, "", "Prepare"], [18, 2, 1, "", "Setup"]], "pyinfra.api.util": [[19, 3, 1, "", "format_exception"], [19, 3, 1, "", "get_call_location"], [19, 3, 1, "", "get_caller_frameinfo"], [19, 1, 1, "", "get_file_io"], [19, 3, 1, "", "get_file_path"], [19, 3, 1, "", "get_file_sha1"], [19, 3, 1, "", "get_kwargs_str"], [19, 3, 1, "", "get_operation_order_from_stack"], [19, 3, 1, "", "get_path_permissions_mode"], [19, 3, 1, "", "get_template"], [19, 3, 1, "", "log_error_or_warning"], [19, 3, 1, "", "log_host_command_error"], [19, 3, 1, "", "log_operation_start"], [19, 3, 1, "", "make_hash"], [19, 3, 1, "", "memoize"], [19, 3, 1, "", "print_host_combined_output"], [19, 3, 1, "", "raise_if_bad_type"], [19, 3, 1, "", "sha1_hash"], [19, 3, 1, "", "try_int"]], "pyinfra.api.util.get_file_io": [[19, 6, 1, "", "cache_key"], [19, 2, 1, "", "filename_or_io"], [19, 2, 1, "", "mode"]], "pyinfra": [[20, 0, 0, "-", "context"], [21, 0, 0, "-", "local"], [22, 0, 0, "-", "progress"], [23, 0, 0, "-", "version"]], "pyinfra.context": [[20, 1, 1, "", "ContextManager"], [20, 1, 1, "", "ContextObject"], [20, 1, 1, "", "LocalContextObject"], [20, 1, 1, "", "container"], [20, 3, 1, "", "init_base_classes"]], "pyinfra.context.ContextManager": [[20, 4, 1, "", "get"], [20, 4, 1, "", "isset"], [20, 4, 1, "", "reset"], [20, 4, 1, "", "set"], [20, 4, 1, "", "set_base"], [20, 4, 1, "", "use"]], "pyinfra.context.container": [[20, 2, 1, "", "module"]], "pyinfra.local": [[21, 3, 1, "", "include"], [21, 3, 1, "", "shell"]], "pyinfra.progress": [[22, 3, 1, "", "progress_spinner"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:attribute", "3": "py:function", "4": "py:method", "5": "py:exception", "6": "py:property"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "attribute", "Python attribute"], "3": ["py", "function", "Python function"], "4": ["py", "method", "Python method"], "5": ["py", "exception", "Python exception"], "6": ["py", "property", "Python property"]}, "titleterms": {"write": [0, 3], "connector": [0, 10, 27, 28, 29, 30, 31, 32, 33, 34], "inventori": [0, 15, 25, 41, 89, 133], "execut": [0, 24, 25, 40], "packag": [1, 25, 90, 91, 92, 93, 95, 96, 97, 100, 101, 107, 109, 110, 111, 112, 119, 120, 126, 127, 129], "deploi": [1, 11, 37, 40, 86, 87], "exampl": [1, 3, 25, 32, 37, 133], "global": [1, 24, 89, 133], "argument": [1, 3, 5, 24, 25, 89, 133], "data": [1, 29, 32, 39, 41, 89, 133], "us": [2, 3, 25, 36, 43, 85, 87, 133], "api": [2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], "fact": [3, 13, 36, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 133], "oper": [3, 16, 17, 24, 25, 26, 36, 85, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 133], "input": 3, "output": [3, 133], "command": [3, 7, 25, 75, 86, 121], "manag": [3, 25, 117], "file": [3, 54, 85, 89, 99, 133], "import": 3, "get": [3, 85, 86, 99, 131], "swap": 3, "statu": 3, "list": 3, "directori": [3, 54, 85, 99], "ani": 3, "from": [3, 26], "refer": [4, 87], "core": 4, "pyinfra": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 26, 36, 43, 86, 87], "modul": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 26], "arguments_typ": 6, "config": [8, 102, 133], "connect": [9, 89], "except": 12, "host": [14, 36, 85, 89, 133], "state": [18, 86], "util": 19, "context": 20, "local": [21, 27, 31, 75, 119], "progress": 22, "version": [23, 26], "privileg": [24, 106], "user": [24, 75, 86, 106, 119], "escal": 24, "shell": [24, 25, 119], "control": [24, 26], "featur": 24, "meta": 24, "callback": 24, "strategi": 24, "cli": 25, "option": 25, "verbos": 25, "limit": [25, 89], "ad": [25, 86], "hoc": [25, 86], "debug": 25, "distribut": 25, "servic": [25, 94, 104, 108, 117, 119, 122, 123, 124], "reboot": [25, 119], "addit": 25, "info": 25, "autocomplet": 25, "compat": 26, "system": [26, 90], "editor": 26, "integr": 26, "pycharm": 26, "remot": 26, "upgrad": [26, 91, 92, 93, 109, 112, 126], "0": 26, "x": 26, "1": 26, "renam": 26, "name": [26, 85], "index": [27, 44, 90], "ssh": [27, 32, 121], "docker": [27, 29, 53, 86, 98], "terraform": [27, 33], "chroot": 28, "usag": [28, 29, 30, 31, 33, 34], "avail": [29, 32], "dockerssh": 30, "vagrant": 34, "contribut": [35, 132], "guid": 35, "branch": 35, "dev": 35, "setup": 35, "test": 35, "unit": 35, "end": 35, "gener": 35, "document": [35, 87], "code": 35, "style": 35, "how": [36, 85, 87], "work": [36, 87], "detect": 36, "chang": [36, 133], "order": 36, "when": 36, "doe": 36, "thi": 36, "matter": 36, "check": [35, 36], "client": 38, "side": 38, "asset": 38, "across": 39, "multipl": [39, 133], "environ": 39, "dynam": [40, 41], "dure": 40, "group": [42, 75, 89, 119, 133], "role": [42, 113, 114], "secret": 43, "apk": [45, 91], "apkpackag": 45, "apt": [46, 92], "aptkei": 46, "aptsourc": 46, "brew": [47, 93], "brewcask": 47, "brewpackag": 47, "brewtap": 47, "brewvers": 47, "bsdinit": [48, 94], "rcdstatu": 48, "cargo": [49, 95], "cargopackag": 49, "choco": [50, 96], "chocopackag": 50, "chocovers": 50, "deb": [51, 92], "debarch": 51, "debpackag": 51, "dnf": [52, 97], "dnfrepositori": 52, "dockercontain": 53, "dockerimag": 53, "dockernetwork": 53, "dockersinglemixin": 53, "dockersysteminfo": 53, "block": [54, 99], "finddirectori": 54, "findfil": 54, "findinfil": 54, "findlink": 54, "flag": [54, 99], "link": [54, 85, 99], "md5file": 54, "sha1fil": 54, "sha256fil": 54, "socket": 54, "gem": [56, 101], "gempackag": 56, "git": [57, 102], "gitbranch": 57, "gitconfig": 57, "gittrackingbranch": 57, "gpg": 58, "gpgkei": 58, "gpgsecretkei": 58, "hardwar": 59, "blockdevic": 59, "cpu": 59, "ipv4address": 59, "ipv4addr": 59, "ipv6address": 59, "ipv6addr": 59, "memori": 59, "networkdevic": 59, "iptabl": [60, 103], "ip6tableschain": 60, "ip6tablesrul": 60, "iptableschain": 60, "iptablesrul": 60, "launchd": [61, 104], "launchdstatu": 61, "lxd": [62, 105], "lxdcontain": 62, "mysql": [63, 106], "mysqldatabas": 63, "mysqlusergr": 63, "mysqlus": 63, "npm": [64, 107], "npmpackag": 64, "openrc": [65, 108], "openrcen": 65, "openrcstatu": 65, "pacman": [66, 109], "pacmanpackag": 66, "pacmanunpackgroup": 66, "pip": [67, 88, 110], "pip3packag": 67, "pippackag": 67, "pkg": [68, 111], "pkgpackag": 68, "pkgin": [69, 112], "pkginpackag": 69, "postgr": [70, 113], "postgresdatabas": 70, "postgresrol": 70, "postgresql": [71, 114], "postgresqldatabas": 71, "postgresqlrol": 71, "rpm": [72, 97, 127, 129], "rpmpackag": 72, "rpmpackageprovid": 72, "selinux": [74, 75, 118], "filecontext": 74, "filecontextmap": 74, "seboolean": 74, "seport": 74, "server": [75, 119], "arch": 75, "crontab": [75, 119], "date": 75, "hasgui": 75, "home": 75, "hostnam": [75, 119], "kernel": 75, "kernelmodul": 75, "kernelvers": 75, "linuxdistribut": 75, "linuxgui": 75, "linuxnam": 75, "lsbreleas": 75, "macosvers": 75, "mount": [75, 119, 125], "o": 75, "osvers": 75, "path": 75, "securitylimit": 75, "sysctl": [75, 119], "tmpdir": 75, "which": 75, "snap": [76, 120], "snapbasefact": 76, "snappackag": 76, "systemd": [77, 122], "systemden": 77, "systemdstatu": 77, "sysvinit": [78, 123], "initdstatu": 78, "upstart": [79, 124], "upstartstatu": 79, "vzctl": [80, 125], "openvzcontain": 80, "xbp": [81, 126], "xbpspackag": 81, "yum": [82, 127], "yumrepositori": 82, "zypper": [84, 129], "zypperrepositori": 84, "frequent": 85, "ask": 85, "question": 85, "do": 85, "i": [85, 132], "current": 85, "sudo": 85, "an": [85, 132], "chmod": 85, "chown": 85, "start": [86, 125], "definit": 86, "note": 86, "creat": [86, 125], "instal": [88, 96, 131], "pipx": [], "window": 88, "runtim": 89, "hierarchi": 89, "extern": 89, "sourc": [89, 131], "basic": 90, "languag": 90, "databas": [90, 106, 113, 114], "updat": [91, 92, 93, 97, 109, 112, 126, 127, 129], "stateless": [91, 92, 93, 96, 97, 98, 99, 106, 109, 112, 113, 114, 115, 116, 117, 119, 121, 122, 125, 126, 127, 129], "dist_upgrad": 92, "kei": [92, 97, 127], "ppa": 92, "repo": [92, 97, 102, 127, 129], "cask_upgrad": 93, "cask": 93, "tap": 93, "download": [99, 121], "line": 99, "put": 99, "replac": 99, "rsync": 99, "sync": 99, "templat": 99, "bare_repo": 102, "worktre": 102, "chain": 103, "rule": 103, "contain": [98, 105], "dump": [106, 113, 114], "load": [106, 113, 114], "sql": [106, 113, 114], "venv": 110, "virtualenv": 110, "puppet": 115, "agent": 115, "python": 116, "call": 116, "raise_except": 116, "boolean": 118, "file_context": 118, "file_context_map": 118, "port": 118, "modprob": 119, "script": 119, "script_templ": 119, "security_limit": 119, "user_authorized_kei": 119, "wait": 119, "keyscan": 121, "upload": 121, "daemon_reload": 122, "enabl": 123, "delet": 125, "restart": 125, "set": 125, "stop": 125, "unmount": 125, "perform": 130, "serif": 131, "pro": 131, "instruct": 131, "involv": 131, "further": 131, "inform": 131, "help": 132, "support": 132, "think": 132, "ve": 132, "got": 132, "bug": 132, "have": 132, "idea": 132, "d": 132, "like": 132, "The": 133, "object": 133, "nest": 133, "includ": 133, "enforc": 133, "requir": 133, "type": 35, "dockervolum": 53, "runit": [73, 117], "runitmanag": 73, "runitstatu": 73, "imag": 98, "network": 98, "prune": 98, "volum": [83, 98, 128], "auto": 117, "wait_runsv": 117, "flatpak": [55, 100], "flatpakbasefact": 55, "flatpakpackag": 55, "zf": [83, 128], "dataset": [83, 128], "filesystem": [83, 128], "pool": 83, "snapshot": [83, 128]}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 57}, "alltitles": {"Writing Connectors": [[0, "writing-connectors"]], "Inventory Connector": [[0, "inventory-connector"]], "Executing Connector": [[0, "executing-connector"]], "Packaging Deploys": [[1, "packaging-deploys"]], "Examples": [[1, "examples"], [32, "examples"], [133, "examples"]], "Global Arguments": [[1, "global-arguments"], [24, "global-arguments"], [133, "global-arguments"]], "Data in Deploys": [[1, "data-in-deploys"]], "Using the API": [[2, "using-the-api"]], "Writing Facts & Operations": [[3, "writing-facts-operations"]], "Operations": [[3, "operations"]], "Input: arguments": [[3, "input-arguments"]], "Output: commands": [[3, "output-commands"]], "Example: managing files": [[3, "example-managing-files"]], "Facts": [[3, "facts"]], "Importing & Using Facts": [[3, "importing-using-facts"]], "Example: getting swap status": [[3, "example-getting-swap-status"]], "Example: getting the list of files in a directory": [[3, "example-getting-the-list-of-files-in-a-directory"]], "Example: getting any output from a command": [[3, "example-getting-any-output-from-a-command"]], "API Reference": [[4, "api-reference"]], "Core API": [[4, null]], "pyinfra.api.arguments module": [[5, "module-pyinfra.api.arguments"]], "pyinfra.api.arguments_typed module": [[6, "module-pyinfra.api.arguments_typed"]], "pyinfra.api.command module": [[7, "module-pyinfra.api.command"]], "pyinfra.api.config module": [[8, "module-pyinfra.api.config"]], "pyinfra.api.connect module": [[9, "module-pyinfra.api.connect"]], "pyinfra.api.connectors module": [[10, "module-pyinfra.api.connectors"]], "pyinfra.api.deploy module": [[11, "module-pyinfra.api.deploy"]], "pyinfra.api.exceptions module": [[12, "module-pyinfra.api.exceptions"]], "pyinfra.api.facts module": [[13, "module-pyinfra.api.facts"]], "pyinfra.api.host module": [[14, "module-pyinfra.api.host"]], "pyinfra.api.inventory module": [[15, "module-pyinfra.api.inventory"]], "pyinfra.api.operation module": [[16, "module-pyinfra.api.operation"]], "pyinfra.api.operations module": [[17, "module-pyinfra.api.operations"]], "pyinfra.api.state module": [[18, "module-pyinfra.api.state"]], "pyinfra.api.util module": [[19, "module-pyinfra.api.util"]], "pyinfra.context module": [[20, "module-pyinfra.context"]], "pyinfra.local module": [[21, "module-pyinfra.local"]], "pyinfra.progress module": [[22, "module-pyinfra.progress"]], "pyinfra.version module": [[23, "module-pyinfra.version"]], "Privilege & user escalation": [[24, "privilege-user-escalation"]], "Shell control & features": [[24, "shell-control-features"]], "Operation meta & callbacks": [[24, "operation-meta-callbacks"]], "Execution strategy": [[24, "execution-strategy"]], "Using the CLI": [[25, "using-the-cli"]], "CLI arguments & options": [[25, "cli-arguments-options"]], "Verbosity": [[25, "verbosity"]], "Inventory": [[25, "inventory"]], "Limit": [[25, "limit"]], "Ad-hoc command execution": [[25, "ad-hoc-command-execution"]], "Example: debugging distributed services using pyinfra": [[25, "example-debugging-distributed-services-using-pyinfra"]], "Executing ad-hoc operations": [[25, "executing-ad-hoc-operations"]], "Example: managing packages with ad-hoc pyinfra commands": [[25, "example-managing-packages-with-ad-hoc-pyinfra-commands"]], "Example: managing services with ad-hoc pyinfra commands": [[25, "example-managing-services-with-ad-hoc-pyinfra-commands"]], "Example: rebooting with ad-hoc pyinfra commands": [[25, "example-rebooting-with-ad-hoc-pyinfra-commands"]], "Additional debug info": [[25, "additional-debug-info"]], "Shell Autocompletion": [[25, "shell-autocompletion"]], "Compatibility": [[26, "compatibility"]], "pyinfra Versions": [[26, "pyinfra-versions"]], "Control Systems": [[26, "control-systems"]], "Editor Integration": [[26, "editor-integration"]], "PyCharm": [[26, "pycharm"]], "Remote Systems": [[26, "remote-systems"]], "Upgrading pyinfra from 0.x -> 1.x": [[26, "upgrading-pyinfra-from-0-x-1-x"]], "Rename the modules module": [[26, "rename-the-modules-module"]], "Naming operations": [[26, "naming-operations"]], "Connectors Index": [[27, "connectors-index"]], "@ssh Connector": [[27, null], [32, "ssh-connector"]], "@docker Connector": [[27, null], [29, "docker-connector"]], "@terraform Connector": [[27, null], [33, "terraform-connector"]], "@local Connector": [[27, null], [31, "local-connector"]], "@chroot Connector": [[28, "chroot-connector"]], "Usage": [[28, "usage"], [29, "usage"], [30, "usage"], [31, "usage"], [33, "usage"], [34, "usage"]], "Available Data": [[29, "available-data"], [32, "available-data"]], "@dockerssh Connector": [[30, "dockerssh-connector"]], "@vagrant Connector": [[34, "vagrant-connector"]], "Contributing": [[35, "contributing"]], "Guides": [[35, "guides"]], "Branches": [[35, "branches"]], "Dev Setup": [[35, "dev-setup"]], "Code Style & Type Checking": [[35, "code-style-type-checking"]], "Tests": [[35, "tests"]], "Unit Tests": [[35, "unit-tests"]], "End to End Tests": [[35, "end-to-end-tests"]], "Generate Documentation": [[35, "generate-documentation"]], "How pyinfra Works": [[36, "how-pyinfra-works"], [87, "how-pyinfra-works"]], "How pyinfra Detects Changes & Orders Operations": [[36, "how-pyinfra-detects-changes-orders-operations"]], "When does this matter?": [[36, "when-does-this-matter"]], "Using Host Facts": [[36, "using-host-facts"]], "Checking Operation Changes": [[36, "checking-operation-changes"]], "Example Deploys": [[37, "example-deploys"]], "Client Side Assets": [[38, "client-side-assets"]], "Data Across Multiple Environments": [[39, "data-across-multiple-environments"]], "Dynamic Execution during Deploy": [[40, "dynamic-execution-during-deploy"]], "Dynamic Inventories & Data": [[41, "dynamic-inventories-data"]], "Groups & Roles": [[42, "groups-roles"]], "Using Secrets in pyinfra": [[43, "using-secrets-in-pyinfra"]], "Facts Index": [[44, "facts-index"]], "Apk Facts": [[45, "apk-facts"]], "apk.ApkPackages": [[45, "apk-apkpackages"]], "Apt Facts": [[46, "apt-facts"]], "apt.AptKeys": [[46, "apt-aptkeys"]], "apt.AptSources": [[46, "apt-aptsources"]], "Brew Facts": [[47, "brew-facts"]], "brew.BrewCasks": [[47, "brew-brewcasks"]], "brew.BrewPackages": [[47, "brew-brewpackages"]], "brew.BrewTaps": [[47, "brew-brewtaps"]], "brew.BrewVersion": [[47, "brew-brewversion"]], "Bsdinit Facts": [[48, "bsdinit-facts"]], "bsdinit.RcdStatus": [[48, "bsdinit-rcdstatus"]], "Cargo Facts": [[49, "cargo-facts"]], "cargo.CargoPackages": [[49, "cargo-cargopackages"]], "Choco Facts": [[50, "choco-facts"]], "choco.ChocoPackages": [[50, "choco-chocopackages"]], "choco.ChocoVersion": [[50, "choco-chocoversion"]], "Deb Facts": [[51, "deb-facts"]], "deb.DebArch": [[51, "deb-debarch"]], "deb.DebPackage": [[51, "deb-debpackage"]], "deb.DebPackages": [[51, "deb-debpackages"]], "Dnf Facts": [[52, "dnf-facts"]], "dnf.DnfRepositories": [[52, "dnf-dnfrepositories"]], "Docker Facts": [[53, "docker-facts"]], "docker.DockerContainer": [[53, "docker-dockercontainer"]], "docker.DockerContainers": [[53, "docker-dockercontainers"]], "docker.DockerImage": [[53, "docker-dockerimage"]], "docker.DockerImages": [[53, "docker-dockerimages"]], "docker.DockerNetwork": [[53, "docker-dockernetwork"]], "docker.DockerNetworks": [[53, "docker-dockernetworks"]], "docker.DockerSingleMixin": [[53, "docker-dockersinglemixin"]], "docker.DockerSystemInfo": [[53, "docker-dockersysteminfo"]], "docker.DockerVolume": [[53, "docker-dockervolume"]], "docker.DockerVolumes": [[53, "docker-dockervolumes"]], "Files Facts": [[54, "files-facts"]], "files.Block": [[54, "files-block"]], "files.Directory": [[54, "files-directory"]], "files.File": [[54, "files-file"]], "files.FindDirectories": [[54, "files-finddirectories"]], "files.FindFiles": [[54, "files-findfiles"]], "files.FindInFile": [[54, "files-findinfile"]], "files.FindLinks": [[54, "files-findlinks"]], "files.Flags": [[54, "files-flags"]], "files.Link": [[54, "files-link"]], "files.Md5File": [[54, "files-md5file"]], "files.Sha1File": [[54, "files-sha1file"]], "files.Sha256File": [[54, "files-sha256file"]], "files.Socket": [[54, "files-socket"]], "Flatpak Facts": [[55, "flatpak-facts"]], "flatpak.FlatpakBaseFact": [[55, "flatpak-flatpakbasefact"]], "flatpak.FlatpakPackage": [[55, "flatpak-flatpakpackage"]], "flatpak.FlatpakPackages": [[55, "flatpak-flatpakpackages"]], "Gem Facts": [[56, "gem-facts"]], "gem.GemPackages": [[56, "gem-gempackages"]], "Git Facts": [[57, "git-facts"]], "git.GitBranch": [[57, "git-gitbranch"]], "git.GitConfig": [[57, "git-gitconfig"]], "git.GitTrackingBranch": [[57, "git-gittrackingbranch"]], "Gpg Facts": [[58, "gpg-facts"]], "gpg.GpgKey": [[58, "gpg-gpgkey"]], "gpg.GpgKeys": [[58, "gpg-gpgkeys"]], "gpg.GpgSecretKeys": [[58, "gpg-gpgsecretkeys"]], "Hardware Facts": [[59, "hardware-facts"]], "hardware.BlockDevices": [[59, "hardware-blockdevices"]], "hardware.Cpus": [[59, "hardware-cpus"]], "hardware.Ipv4Addresses": [[59, "hardware-ipv4addresses"]], "hardware.Ipv4Addrs": [[59, "hardware-ipv4addrs"]], "hardware.Ipv6Addresses": [[59, "hardware-ipv6addresses"]], "hardware.Ipv6Addrs": [[59, "hardware-ipv6addrs"]], "hardware.Memory": [[59, "hardware-memory"]], "hardware.NetworkDevices": [[59, "hardware-networkdevices"]], "Iptables Facts": [[60, "iptables-facts"]], "iptables.Ip6tablesChains": [[60, "iptables-ip6tableschains"]], "iptables.Ip6tablesRules": [[60, "iptables-ip6tablesrules"]], "iptables.IptablesChains": [[60, "iptables-iptableschains"]], "iptables.IptablesRules": [[60, "iptables-iptablesrules"]], "Launchd Facts": [[61, "launchd-facts"]], "launchd.LaunchdStatus": [[61, "launchd-launchdstatus"]], "Lxd Facts": [[62, "lxd-facts"]], "lxd.LxdContainers": [[62, "lxd-lxdcontainers"]], "Mysql Facts": [[63, "mysql-facts"]], "mysql.MysqlDatabases": [[63, "mysql-mysqldatabases"]], "mysql.MysqlUserGrants": [[63, "mysql-mysqlusergrants"]], "mysql.MysqlUsers": [[63, "mysql-mysqlusers"]], "Npm Facts": [[64, "npm-facts"]], "npm.NpmPackages": [[64, "npm-npmpackages"]], "Openrc Facts": [[65, "openrc-facts"]], "openrc.OpenrcEnabled": [[65, "openrc-openrcenabled"]], "openrc.OpenrcStatus": [[65, "openrc-openrcstatus"]], "Pacman Facts": [[66, "pacman-facts"]], "pacman.PacmanPackages": [[66, "pacman-pacmanpackages"]], "pacman.PacmanUnpackGroup": [[66, "pacman-pacmanunpackgroup"]], "Pip Facts": [[67, "pip-facts"]], "pip.Pip3Packages": [[67, "pip-pip3packages"]], "pip.PipPackages": [[67, "pip-pippackages"]], "Pkg Facts": [[68, "pkg-facts"]], "pkg.PkgPackages": [[68, "pkg-pkgpackages"]], "Pkgin Facts": [[69, "pkgin-facts"]], "pkgin.PkginPackages": [[69, "pkgin-pkginpackages"]], "Postgres Facts": [[70, "postgres-facts"]], "postgres.PostgresDatabases": [[70, "postgres-postgresdatabases"]], "postgres.PostgresRoles": [[70, "postgres-postgresroles"]], "Postgresql Facts": [[71, "postgresql-facts"]], "postgresql.PostgresqlDatabases": [[71, "postgresql-postgresqldatabases"]], "postgresql.PostgresqlRoles": [[71, "postgresql-postgresqlroles"]], "Rpm Facts": [[72, "rpm-facts"]], "rpm.RpmPackage": [[72, "rpm-rpmpackage"]], "rpm.RpmPackageProvides": [[72, "rpm-rpmpackageprovides"]], "rpm.RpmPackages": [[72, "rpm-rpmpackages"]], "Runit Facts": [[73, "runit-facts"]], "runit.RunitManaged": [[73, "runit-runitmanaged"]], "runit.RunitStatus": [[73, "runit-runitstatus"]], "Selinux Facts": [[74, "selinux-facts"]], "selinux.FileContext": [[74, "selinux-filecontext"]], "selinux.FileContextMapping": [[74, "selinux-filecontextmapping"]], "selinux.SEBoolean": [[74, "selinux-seboolean"]], "selinux.SEPort": [[74, "selinux-seport"]], "selinux.SEPorts": [[74, "selinux-seports"]], "Server Facts": [[75, "server-facts"]], "server.Arch": [[75, "server-arch"]], "server.Command": [[75, "server-command"]], "server.Crontab": [[75, "server-crontab"]], "server.Date": [[75, "server-date"]], "server.Groups": [[75, "server-groups"]], "server.HasGui": [[75, "server-hasgui"]], "server.Home": [[75, "server-home"]], "server.Hostname": [[75, "server-hostname"]], "server.Kernel": [[75, "server-kernel"]], "server.KernelModules": [[75, "server-kernelmodules"]], "server.KernelVersion": [[75, "server-kernelversion"]], "server.LinuxDistribution": [[75, "server-linuxdistribution"]], "server.LinuxGui": [[75, "server-linuxgui"]], "server.LinuxName": [[75, "server-linuxname"]], "server.Locales": [[75, "server-locales"]], "server.LsbRelease": [[75, "server-lsbrelease"]], "server.MacosVersion": [[75, "server-macosversion"]], "server.Mounts": [[75, "server-mounts"]], "server.Os": [[75, "server-os"]], "server.OsVersion": [[75, "server-osversion"]], "server.Path": [[75, "server-path"]], "server.SecurityLimits": [[75, "server-securitylimits"]], "server.Selinux": [[75, "server-selinux"]], "server.Sysctl": [[75, "server-sysctl"]], "server.TmpDir": [[75, "server-tmpdir"]], "server.User": [[75, "server-user"]], "server.Users": [[75, "server-users"]], "server.Which": [[75, "server-which"]], "Snap Facts": [[76, "snap-facts"]], "snap.SnapBaseFact": [[76, "snap-snapbasefact"]], "snap.SnapPackage": [[76, "snap-snappackage"]], "snap.SnapPackages": [[76, "snap-snappackages"]], "Systemd Facts": [[77, "systemd-facts"]], "systemd.SystemdEnabled": [[77, "systemd-systemdenabled"]], "systemd.SystemdStatus": [[77, "systemd-systemdstatus"]], "Sysvinit Facts": [[78, "sysvinit-facts"]], "sysvinit.InitdStatus": [[78, "sysvinit-initdstatus"]], "Upstart Facts": [[79, "upstart-facts"]], "upstart.UpstartStatus": [[79, "upstart-upstartstatus"]], "Vzctl Facts": [[80, "vzctl-facts"]], "vzctl.OpenvzContainers": [[80, "vzctl-openvzcontainers"]], "Xbps Facts": [[81, "xbps-facts"]], "xbps.XbpsPackages": [[81, "xbps-xbpspackages"]], "Yum Facts": [[82, "yum-facts"]], "yum.YumRepositories": [[82, "yum-yumrepositories"]], "Zfs Facts": [[83, "zfs-facts"]], "zfs.Datasets": [[83, "zfs-datasets"]], "zfs.Filesystems": [[83, "zfs-filesystems"]], "zfs.Pools": [[83, "zfs-pools"]], "zfs.Snapshots": [[83, "zfs-snapshots"]], "zfs.Volumes": [[83, "zfs-volumes"]], "Zypper Facts": [[84, "zypper-facts"]], "zypper.ZypperRepositories": [[84, "zypper-zypperrepositories"]], "Frequently Asked Questions": [[85, "frequently-asked-questions"]], "How do I get the name of the current host?": [[85, "how-do-i-get-the-name-of-the-current-host"]], "How do I use sudo in an operation?": [[85, "how-do-i-use-sudo-in-an-operation"]], "How do I chmod or chown a file/directory/link?": [[85, "how-do-i-chmod-or-chown-a-file-directory-link"]], "Getting Started": [[86, "getting-started"]], "Ad-hoc commands with pyinfra": [[86, "ad-hoc-commands-with-pyinfra"]], "State definitions": [[86, "state-definitions"]], "Note for Docker users": [[86, null]], "Create a Deploy": [[86, "create-a-deploy"]], "pyinfra Documentation": [[87, "pyinfra-documentation"]], "Using pyinfra": [[87, "using-pyinfra"]], "Deploy Reference": [[87, "deploy-reference"]], "Installation": [[88, "installation"]], "Pip": [[88, "pip"]], "Windows": [[88, "windows"]], "Inventory & Data": [[89, "inventory-data"]], "Inventory Files": [[89, "inventory-files"]], "Limiting inventory at runtime": [[89, "limiting-inventory-at-runtime"]], "Host Data": [[89, "host-data"]], "Group Data Files": [[89, "group-data-files"]], "Data Hierarchy": [[89, "data-hierarchy"]], "Connecting with Data": [[89, "connecting-with-data"]], "Global Arguments with Data": [[89, "global-arguments-with-data"]], "External Sources for Data": [[89, "external-sources-for-data"]], "Operations Index": [[90, "operations-index"]], "Basics": [[90, null]], "System Packages": [[90, null]], "Language Packages": [[90, null]], "Databases": [[90, null]], "Apk Operations": [[91, "apk-operations"]], "apk.packages": [[91, "apk-packages"]], "apk.update": [[91, "apk-update"]], "Stateless operation": [[91, null], [91, null], [92, null], [92, null], [92, null], [92, null], [93, null], [93, null], [93, null], [96, null], [97, null], [97, null], [98, null], [98, null], [99, null], [99, null], [106, null], [106, null], [106, null], [109, null], [109, null], [112, null], [112, null], [113, null], [113, null], [113, null], [114, null], [114, null], [114, null], [114, null], [114, null], [115, null], [116, null], [116, null], [117, null], [119, null], [119, null], [119, null], [119, null], [119, null], [121, null], [121, null], [122, null], [125, null], [125, null], [125, null], [125, null], [125, null], [125, null], [125, null], [125, null], [126, null], [126, null], [127, null], [127, null], [129, null]], "apk.upgrade": [[91, "apk-upgrade"]], "Apt Operations": [[92, "apt-operations"]], "apt.deb": [[92, "apt-deb"]], "apt.dist_upgrade": [[92, "apt-dist-upgrade"]], "apt.key": [[92, "apt-key"]], "apt.packages": [[92, "apt-packages"]], "apt.ppa": [[92, "apt-ppa"]], "apt.repo": [[92, "apt-repo"]], "apt.update": [[92, "apt-update"]], "apt.upgrade": [[92, "apt-upgrade"]], "Brew Operations": [[93, "brew-operations"]], "brew.cask_upgrade": [[93, "brew-cask-upgrade"]], "brew.casks": [[93, "brew-casks"]], "brew.packages": [[93, "brew-packages"]], "brew.tap": [[93, "brew-tap"]], "brew.update": [[93, "brew-update"]], "brew.upgrade": [[93, "brew-upgrade"]], "Bsdinit Operations": [[94, "bsdinit-operations"]], "bsdinit.service": [[94, "bsdinit-service"]], "Cargo Operations": [[95, "cargo-operations"]], "cargo.packages": [[95, "cargo-packages"]], "Choco Operations": [[96, "choco-operations"]], "choco.install": [[96, "choco-install"]], "choco.packages": [[96, "choco-packages"]], "Dnf Operations": [[97, "dnf-operations"]], "dnf.key": [[97, "dnf-key"]], "dnf.packages": [[97, "dnf-packages"]], "dnf.repo": [[97, "dnf-repo"]], "dnf.rpm": [[97, "dnf-rpm"]], "dnf.update": [[97, "dnf-update"]], "Docker Operations": [[98, "docker-operations"]], "docker.container": [[98, "docker-container"]], "docker.image": [[98, "docker-image"]], "docker.network": [[98, "docker-network"]], "docker.prune": [[98, "docker-prune"]], "docker.volume": [[98, "docker-volume"]], "Files Operations": [[99, "files-operations"]], "files.block": [[99, "files-block"]], "files.directory": [[99, "files-directory"]], "files.download": [[99, "files-download"]], "files.file": [[99, "files-file"]], "files.flags": [[99, "files-flags"]], "files.get": [[99, "files-get"]], "files.line": [[99, "files-line"]], "files.link": [[99, "files-link"]], "files.put": [[99, "files-put"]], "files.replace": [[99, "files-replace"]], "files.rsync": [[99, "files-rsync"]], "files.sync": [[99, "files-sync"]], "files.template": [[99, "files-template"]], "Flatpak Operations": [[100, "flatpak-operations"]], "flatpak.packages": [[100, "flatpak-packages"]], "Gem Operations": [[101, "gem-operations"]], "gem.packages": [[101, "gem-packages"]], "Git Operations": [[102, "git-operations"]], "git.bare_repo": [[102, "git-bare-repo"]], "git.config": [[102, "git-config"]], "git.repo": [[102, "git-repo"]], "git.worktree": [[102, "git-worktree"]], "Iptables Operations": [[103, "iptables-operations"]], "iptables.chain": [[103, "iptables-chain"]], "iptables.rule": [[103, "iptables-rule"]], "Launchd Operations": [[104, "launchd-operations"]], "launchd.service": [[104, "launchd-service"]], "Lxd Operations": [[105, "lxd-operations"]], "lxd.container": [[105, "lxd-container"]], "Mysql Operations": [[106, "mysql-operations"]], "mysql.database": [[106, "mysql-database"]], "mysql.dump": [[106, "mysql-dump"]], "mysql.load": [[106, "mysql-load"]], "mysql.privileges": [[106, "mysql-privileges"]], "mysql.sql": [[106, "mysql-sql"]], "mysql.user": [[106, "mysql-user"]], "Npm Operations": [[107, "npm-operations"]], "npm.packages": [[107, "npm-packages"]], "Openrc Operations": [[108, "openrc-operations"]], "openrc.service": [[108, "openrc-service"]], "Pacman Operations": [[109, "pacman-operations"]], "pacman.packages": [[109, "pacman-packages"]], "pacman.update": [[109, "pacman-update"]], "pacman.upgrade": [[109, "pacman-upgrade"]], "Pip Operations": [[110, "pip-operations"]], "pip.packages": [[110, "pip-packages"]], "pip.venv": [[110, "pip-venv"]], "pip.virtualenv": [[110, "pip-virtualenv"]], "Pkg Operations": [[111, "pkg-operations"]], "pkg.packages": [[111, "pkg-packages"]], "Pkgin Operations": [[112, "pkgin-operations"]], "pkgin.packages": [[112, "pkgin-packages"]], "pkgin.update": [[112, "pkgin-update"]], "pkgin.upgrade": [[112, "pkgin-upgrade"]], "Postgres Operations": [[113, "postgres-operations"]], "postgres.database": [[113, "postgres-database"]], "postgres.dump": [[113, "postgres-dump"]], "postgres.load": [[113, "postgres-load"]], "postgres.role": [[113, "postgres-role"]], "postgres.sql": [[113, "postgres-sql"]], "Postgresql Operations": [[114, "postgresql-operations"]], "postgresql.database": [[114, "postgresql-database"]], "postgresql.dump": [[114, "postgresql-dump"]], "postgresql.load": [[114, "postgresql-load"]], "postgresql.role": [[114, "postgresql-role"]], "postgresql.sql": [[114, "postgresql-sql"]], "Puppet Operations": [[115, "puppet-operations"]], "puppet.agent": [[115, "puppet-agent"]], "Python Operations": [[116, "python-operations"]], "python.call": [[116, "python-call"]], "python.raise_exception": [[116, "python-raise-exception"]], "Runit Operations": [[117, "runit-operations"]], "runit.auto": [[117, "runit-auto"]], "runit.manage": [[117, "runit-manage"]], "runit.service": [[117, "runit-service"]], "runit.wait_runsv": [[117, "runit-wait-runsv"]], "Selinux Operations": [[118, "selinux-operations"]], "selinux.boolean": [[118, "selinux-boolean"]], "selinux.file_context": [[118, "selinux-file-context"]], "selinux.file_context_mapping": [[118, "selinux-file-context-mapping"]], "selinux.port": [[118, "selinux-port"]], "Server Operations": [[119, "server-operations"]], "server.crontab": [[119, "server-crontab"]], "server.group": [[119, "server-group"]], "server.hostname": [[119, "server-hostname"]], "server.locale": [[119, "server-locale"]], "server.modprobe": [[119, "server-modprobe"]], "server.mount": [[119, "server-mount"]], "server.packages": [[119, "server-packages"]], "server.reboot": [[119, "server-reboot"]], "server.script": [[119, "server-script"]], "server.script_template": [[119, "server-script-template"]], "server.security_limit": [[119, "server-security-limit"]], "server.service": [[119, "server-service"]], "server.shell": [[119, "server-shell"]], "server.sysctl": [[119, "server-sysctl"]], "server.user": [[119, "server-user"]], "server.user_authorized_keys": [[119, "server-user-authorized-keys"]], "server.wait": [[119, "server-wait"]], "Snap Operations": [[120, "snap-operations"]], "snap.package": [[120, "snap-package"]], "Ssh Operations": [[121, "ssh-operations"]], "ssh.command": [[121, "ssh-command"]], "ssh.download": [[121, "ssh-download"]], "ssh.keyscan": [[121, "ssh-keyscan"]], "ssh.upload": [[121, "ssh-upload"]], "Systemd Operations": [[122, "systemd-operations"]], "systemd.daemon_reload": [[122, "systemd-daemon-reload"]], "systemd.service": [[122, "systemd-service"]], "Sysvinit Operations": [[123, "sysvinit-operations"]], "sysvinit.enable": [[123, "sysvinit-enable"]], "sysvinit.service": [[123, "sysvinit-service"]], "Upstart Operations": [[124, "upstart-operations"]], "upstart.service": [[124, "upstart-service"]], "Vzctl Operations": [[125, "vzctl-operations"]], "vzctl.create": [[125, "vzctl-create"]], "vzctl.delete": [[125, "vzctl-delete"]], "vzctl.mount": [[125, "vzctl-mount"]], "vzctl.restart": [[125, "vzctl-restart"]], "vzctl.set": [[125, "vzctl-set"]], "vzctl.start": [[125, "vzctl-start"]], "vzctl.stop": [[125, "vzctl-stop"]], "vzctl.unmount": [[125, "vzctl-unmount"]], "Xbps Operations": [[126, "xbps-operations"]], "xbps.packages": [[126, "xbps-packages"]], "xbps.update": [[126, "xbps-update"]], "xbps.upgrade": [[126, "xbps-upgrade"]], "Yum Operations": [[127, "yum-operations"]], "yum.key": [[127, "yum-key"]], "yum.packages": [[127, "yum-packages"]], "yum.repo": [[127, "yum-repo"]], "yum.rpm": [[127, "yum-rpm"]], "yum.update": [[127, "yum-update"]], "Zfs Operations": [[128, "zfs-operations"]], "zfs.dataset": [[128, "zfs-dataset"]], "zfs.filesystem": [[128, "zfs-filesystem"]], "zfs.snapshot": [[128, "zfs-snapshot"]], "zfs.volume": [[128, "zfs-volume"]], "Zypper Operations": [[129, "zypper-operations"]], "zypper.packages": [[129, "zypper-packages"]], "zypper.repo": [[129, "zypper-repo"]], "zypper.rpm": [[129, "zypper-rpm"]], "zypper.update": [[129, "zypper-update"]], "Performance": [[130, "performance"]], "Source Serif Pro": [[131, "source-serif-pro"]], "Installation instructions": [[131, "installation-instructions"]], "Getting Involved": [[131, "getting-involved"]], "Further information": [[131, "further-information"]], "Help & Support": [[132, "help-support"]], "I think I\u2019ve got a bug!": [[132, "i-think-i-ve-got-a-bug"]], "I have an idea!": [[132, "i-have-an-idea"]], "I\u2019d like to contribute!": [[132, "i-d-like-to-contribute"]], "Using Operations": [[133, "using-operations"]], "The host Object": [[133, "the-host-object"]], "Host & Group Data": [[133, "host-group-data"]], "Host Facts": [[133, "host-facts"]], "The inventory Object": [[133, "the-inventory-object"]], "Operation Changes & Output": [[133, "operation-changes-output"]], "Operation Output": [[133, "operation-output"]], "Nested Operations": [[133, "nested-operations"]], "Include Multiple Files": [[133, "include-multiple-files"]], "The config Object": [[133, "the-config-object"]], "Enforcing Requirements": [[133, "enforcing-requirements"]]}, "indexentries": {"allarguments (class in pyinfra.api.arguments)": [[5, "pyinfra.api.arguments.AllArguments"]], "argumentmeta (class in pyinfra.api.arguments)": [[5, "pyinfra.api.arguments.ArgumentMeta"]], "connectorarguments (class in pyinfra.api.arguments)": [[5, "pyinfra.api.arguments.ConnectorArguments"]], "executionarguments (class in pyinfra.api.arguments)": [[5, "pyinfra.api.arguments.ExecutionArguments"]], "metaarguments (class in pyinfra.api.arguments)": [[5, "pyinfra.api.arguments.MetaArguments"]], "all_global_arguments() (in module pyinfra.api.arguments)": [[5, "pyinfra.api.arguments.all_global_arguments"]], "default (pyinfra.api.arguments.argumentmeta attribute)": [[5, "pyinfra.api.arguments.ArgumentMeta.default"]], "description (pyinfra.api.arguments.argumentmeta attribute)": [[5, "pyinfra.api.arguments.ArgumentMeta.description"]], "generate_env() (in module pyinfra.api.arguments)": [[5, "pyinfra.api.arguments.generate_env"]], "handler (pyinfra.api.arguments.argumentmeta attribute)": [[5, "pyinfra.api.arguments.ArgumentMeta.handler"]], "module": [[5, "module-pyinfra.api.arguments"], [6, "module-pyinfra.api.arguments_typed"], [7, "module-pyinfra.api.command"], [8, "module-pyinfra.api.config"], [9, "module-pyinfra.api.connect"], [10, "module-pyinfra.api.connectors"], [11, "module-pyinfra.api.deploy"], [12, "module-pyinfra.api.exceptions"], [13, "module-pyinfra.api.facts"], [14, "module-pyinfra.api.host"], [15, "module-pyinfra.api.inventory"], [16, "module-pyinfra.api.operation"], [17, "module-pyinfra.api.operations"], [18, "module-pyinfra.api.state"], [19, "module-pyinfra.api.util"], [20, "module-pyinfra.context"], [21, "module-pyinfra.local"], [22, "module-pyinfra.progress"], [23, "module-pyinfra.version"]], "name (pyinfra.api.arguments.allarguments attribute)": [[5, "pyinfra.api.arguments.AllArguments.name"]], "name (pyinfra.api.arguments.metaarguments attribute)": [[5, "pyinfra.api.arguments.MetaArguments.name"]], "pop_global_arguments() (in module pyinfra.api.arguments)": [[5, "pyinfra.api.arguments.pop_global_arguments"]], "pyinfra.api.arguments": [[5, "module-pyinfra.api.arguments"]], "pyinfraoperation (class in pyinfra.api.arguments_typed)": [[6, "pyinfra.api.arguments_typed.PyinfraOperation"]], "pyinfra.api.arguments_typed": [[6, "module-pyinfra.api.arguments_typed"]], "filedownloadcommand (class in pyinfra.api.command)": [[7, "pyinfra.api.command.FileDownloadCommand"]], "fileuploadcommand (class in pyinfra.api.command)": [[7, "pyinfra.api.command.FileUploadCommand"]], "functioncommand (class in pyinfra.api.command)": [[7, "pyinfra.api.command.FunctionCommand"]], "maskstring (class in pyinfra.api.command)": [[7, "pyinfra.api.command.MaskString"]], "pyinfracommand (class in pyinfra.api.command)": [[7, "pyinfra.api.command.PyinfraCommand"]], "quotestring (class in pyinfra.api.command)": [[7, "pyinfra.api.command.QuoteString"]], "rsynccommand (class in pyinfra.api.command)": [[7, "pyinfra.api.command.RsyncCommand"]], "stringcommand (class in pyinfra.api.command)": [[7, "pyinfra.api.command.StringCommand"]], "connector_arguments (pyinfra.api.command.pyinfracommand attribute)": [[7, "pyinfra.api.command.PyinfraCommand.connector_arguments"]], "execute() (pyinfra.api.command.filedownloadcommand method)": [[7, "pyinfra.api.command.FileDownloadCommand.execute"]], "execute() (pyinfra.api.command.fileuploadcommand method)": [[7, "pyinfra.api.command.FileUploadCommand.execute"]], "execute() (pyinfra.api.command.functioncommand method)": [[7, "pyinfra.api.command.FunctionCommand.execute"]], "execute() (pyinfra.api.command.pyinfracommand method)": [[7, "pyinfra.api.command.PyinfraCommand.execute"]], "execute() (pyinfra.api.command.rsynccommand method)": [[7, "pyinfra.api.command.RsyncCommand.execute"]], "execute() (pyinfra.api.command.stringcommand method)": [[7, "pyinfra.api.command.StringCommand.execute"]], "get_masked_value() (pyinfra.api.command.stringcommand method)": [[7, "pyinfra.api.command.StringCommand.get_masked_value"]], "get_raw_value() (pyinfra.api.command.stringcommand method)": [[7, "pyinfra.api.command.StringCommand.get_raw_value"]], "make_formatted_string_command() (in module pyinfra.api.command)": [[7, "pyinfra.api.command.make_formatted_string_command"]], "obj (pyinfra.api.command.quotestring attribute)": [[7, "pyinfra.api.command.QuoteString.obj"]], "pyinfra.api.command": [[7, "module-pyinfra.api.command"]], "connect_timeout (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.CONNECT_TIMEOUT"]], "config (class in pyinfra.api.config)": [[8, "pyinfra.api.config.Config"]], "configdefaults (class in pyinfra.api.config)": [[8, "pyinfra.api.config.ConfigDefaults"]], "default_temp_dir (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.DEFAULT_TEMP_DIR"]], "doas (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.DOAS"]], "doas_user (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.DOAS_USER"]], "fail_percent (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.FAIL_PERCENT"]], "ignore_errors (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.IGNORE_ERRORS"]], "parallel (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.PARALLEL"]], "preserve_sudo_env (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.PRESERVE_SUDO_ENV"]], "preserve_su_env (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.PRESERVE_SU_ENV"]], "require_packages (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.REQUIRE_PACKAGES"]], "require_pyinfra_version (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.REQUIRE_PYINFRA_VERSION"]], "shell (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.SHELL"]], "sudo (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.SUDO"]], "sudo_password (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.SUDO_PASSWORD"]], "sudo_user (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.SUDO_USER"]], "su_shell (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.SU_SHELL"]], "su_user (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.SU_USER"]], "temp_dir (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.TEMP_DIR"]], "use_sudo_login (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.USE_SUDO_LOGIN"]], "use_su_login (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.USE_SU_LOGIN"]], "check_pyinfra_version() (in module pyinfra.api.config)": [[8, "pyinfra.api.config.check_pyinfra_version"]], "check_require_packages() (in module pyinfra.api.config)": [[8, "pyinfra.api.config.check_require_packages"]], "copy() (pyinfra.api.config.config method)": [[8, "pyinfra.api.config.Config.copy"]], "get_current_state() (pyinfra.api.config.config method)": [[8, "pyinfra.api.config.Config.get_current_state"]], "lock_current_state() (pyinfra.api.config.config method)": [[8, "pyinfra.api.config.Config.lock_current_state"]], "pyinfra.api.config": [[8, "module-pyinfra.api.config"]], "reset_locked_state() (pyinfra.api.config.config method)": [[8, "pyinfra.api.config.Config.reset_locked_state"]], "set_current_state() (pyinfra.api.config.config method)": [[8, "pyinfra.api.config.Config.set_current_state"]], "connect_all() (in module pyinfra.api.connect)": [[9, "pyinfra.api.connect.connect_all"]], "disconnect_all() (in module pyinfra.api.connect)": [[9, "pyinfra.api.connect.disconnect_all"]], "pyinfra.api.connect": [[9, "module-pyinfra.api.connect"]], "get_all_connectors() (in module pyinfra.api.connectors)": [[10, "pyinfra.api.connectors.get_all_connectors"]], "get_execution_connector() (in module pyinfra.api.connectors)": [[10, "pyinfra.api.connectors.get_execution_connector"]], "get_execution_connectors() (in module pyinfra.api.connectors)": [[10, "pyinfra.api.connectors.get_execution_connectors"]], "pyinfra.api.connectors": [[10, "module-pyinfra.api.connectors"]], "add_deploy() (in module pyinfra.api.deploy)": [[11, "pyinfra.api.deploy.add_deploy"]], "deploy() (in module pyinfra.api.deploy)": [[11, "pyinfra.api.deploy.deploy"]], "pyinfra.api.deploy": [[11, "module-pyinfra.api.deploy"]], "argumenttypeerror": [[12, "pyinfra.api.exceptions.ArgumentTypeError"]], "connecterror": [[12, "pyinfra.api.exceptions.ConnectError"]], "connectordatatypeerror": [[12, "pyinfra.api.exceptions.ConnectorDataTypeError"]], "deployerror": [[12, "pyinfra.api.exceptions.DeployError"]], "facterror": [[12, "pyinfra.api.exceptions.FactError"]], "facttypeerror": [[12, "pyinfra.api.exceptions.FactTypeError"]], "factvalueerror": [[12, "pyinfra.api.exceptions.FactValueError"]], "inventoryerror": [[12, "pyinfra.api.exceptions.InventoryError"]], "noconnectorerror": [[12, "pyinfra.api.exceptions.NoConnectorError"]], "nogrouperror": [[12, "pyinfra.api.exceptions.NoGroupError"]], "nohosterror": [[12, "pyinfra.api.exceptions.NoHostError"]], "operationerror": [[12, "pyinfra.api.exceptions.OperationError"]], "operationtypeerror": [[12, "pyinfra.api.exceptions.OperationTypeError"]], "operationvalueerror": [[12, "pyinfra.api.exceptions.OperationValueError"]], "pyinfraerror": [[12, "pyinfra.api.exceptions.PyinfraError"]], "pyinfra.api.exceptions": [[12, "module-pyinfra.api.exceptions"]], "factbase (class in pyinfra.api.facts)": [[13, "pyinfra.api.facts.FactBase"]], "shortfactbase (class in pyinfra.api.facts)": [[13, "pyinfra.api.facts.ShortFactBase"]], "abstract (pyinfra.api.facts.factbase attribute)": [[13, "pyinfra.api.facts.FactBase.abstract"]], "command (pyinfra.api.facts.factbase attribute)": [[13, "pyinfra.api.facts.FactBase.command"]], "default() (pyinfra.api.facts.factbase static method)": [[13, "pyinfra.api.facts.FactBase.default"]], "fact (pyinfra.api.facts.shortfactbase attribute)": [[13, "pyinfra.api.facts.ShortFactBase.fact"]], "get_fact() (in module pyinfra.api.facts)": [[13, "pyinfra.api.facts.get_fact"]], "get_facts() (in module pyinfra.api.facts)": [[13, "pyinfra.api.facts.get_facts"]], "get_host_fact() (in module pyinfra.api.facts)": [[13, "pyinfra.api.facts.get_host_fact"]], "get_short_facts() (in module pyinfra.api.facts)": [[13, "pyinfra.api.facts.get_short_facts"]], "name (pyinfra.api.facts.factbase attribute)": [[13, "pyinfra.api.facts.FactBase.name"]], "name (pyinfra.api.facts.shortfactbase attribute)": [[13, "pyinfra.api.facts.ShortFactBase.name"]], "process() (pyinfra.api.facts.factbase method)": [[13, "pyinfra.api.facts.FactBase.process"]], "process_data() (pyinfra.api.facts.shortfactbase method)": [[13, "pyinfra.api.facts.ShortFactBase.process_data"]], "process_pipeline() (pyinfra.api.facts.factbase method)": [[13, "pyinfra.api.facts.FactBase.process_pipeline"]], "pyinfra.api.facts": [[13, "module-pyinfra.api.facts"]], "requires_command() (pyinfra.api.facts.factbase method)": [[13, "pyinfra.api.facts.FactBase.requires_command"]], "shell_executable (pyinfra.api.facts.factbase attribute)": [[13, "pyinfra.api.facts.FactBase.shell_executable"]], "host (class in pyinfra.api.host)": [[14, "pyinfra.api.host.Host"]], "hostdata (class in pyinfra.api.host)": [[14, "pyinfra.api.host.HostData"]], "t (pyinfra.api.host.host attribute)": [[14, "pyinfra.api.host.Host.T"]], "arguments() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.arguments"]], "check_can_rsync() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.check_can_rsync"]], "connect() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.connect"]], "connected (pyinfra.api.host.host attribute)": [[14, "pyinfra.api.host.Host.connected"]], "connector (pyinfra.api.host.host attribute)": [[14, "pyinfra.api.host.Host.connector"]], "connector_cls (pyinfra.api.host.host attribute)": [[14, "pyinfra.api.host.Host.connector_cls"]], "connector_data (pyinfra.api.host.host attribute)": [[14, "pyinfra.api.host.Host.connector_data"]], "current_deploy_data (pyinfra.api.host.host attribute)": [[14, "pyinfra.api.host.Host.current_deploy_data"]], "current_deploy_kwargs (pyinfra.api.host.host attribute)": [[14, "pyinfra.api.host.Host.current_deploy_kwargs"]], "current_deploy_name (pyinfra.api.host.host attribute)": [[14, "pyinfra.api.host.Host.current_deploy_name"]], "current_op_deploy_data (pyinfra.api.host.host attribute)": [[14, "pyinfra.api.host.Host.current_op_deploy_data"]], "current_op_global_arguments (pyinfra.api.host.host attribute)": [[14, "pyinfra.api.host.Host.current_op_global_arguments"]], "current_op_hash (pyinfra.api.host.host attribute)": [[14, "pyinfra.api.host.Host.current_op_hash"]], "deploy() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.deploy"]], "dict() (pyinfra.api.host.hostdata method)": [[14, "pyinfra.api.host.HostData.dict"]], "disconnect() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.disconnect"]], "executing_op_hash (pyinfra.api.host.host attribute)": [[14, "pyinfra.api.host.Host.executing_op_hash"]], "extract_callable_datas() (in module pyinfra.api.host)": [[14, "pyinfra.api.host.extract_callable_datas"]], "get() (pyinfra.api.host.hostdata method)": [[14, "pyinfra.api.host.HostData.get"]], "get_deploy_data() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.get_deploy_data"]], "get_fact() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.get_fact"]], "get_file() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.get_file"]], "get_temp_filename() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.get_temp_filename"]], "group_data (pyinfra.api.host.host property)": [[14, "pyinfra.api.host.Host.group_data"]], "host_data (pyinfra.api.host.host property)": [[14, "pyinfra.api.host.Host.host_data"]], "in_callback_op (pyinfra.api.host.host attribute)": [[14, "pyinfra.api.host.Host.in_callback_op"]], "in_deploy (pyinfra.api.host.host attribute)": [[14, "pyinfra.api.host.Host.in_deploy"]], "in_op (pyinfra.api.host.host attribute)": [[14, "pyinfra.api.host.Host.in_op"]], "init() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.init"]], "log() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.log"]], "log_styled() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.log_styled"]], "loop() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.loop"]], "loop_position (pyinfra.api.host.host attribute)": [[14, "pyinfra.api.host.Host.loop_position"]], "nested_executing_op_hash (pyinfra.api.host.host attribute)": [[14, "pyinfra.api.host.Host.nested_executing_op_hash"]], "noop() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.noop"]], "override_datas (pyinfra.api.host.hostdata attribute)": [[14, "pyinfra.api.host.HostData.override_datas"]], "print_prefix (pyinfra.api.host.host property)": [[14, "pyinfra.api.host.Host.print_prefix"]], "put_file() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.put_file"]], "pyinfra.api.host": [[14, "module-pyinfra.api.host"]], "rsync() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.rsync"]], "run_shell_command() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.run_shell_command"]], "state (pyinfra.api.host.host attribute)": [[14, "pyinfra.api.host.Host.state"]], "style_print_prefix() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.style_print_prefix"]], "when() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.when"]], "inventory (class in pyinfra.api.inventory)": [[15, "pyinfra.api.inventory.Inventory"]], "empty() (pyinfra.api.inventory.inventory static method)": [[15, "pyinfra.api.inventory.Inventory.empty"]], "extract_name_data() (in module pyinfra.api.inventory)": [[15, "pyinfra.api.inventory.extract_name_data"]], "get_data() (pyinfra.api.inventory.inventory method)": [[15, "pyinfra.api.inventory.Inventory.get_data"]], "get_group() (pyinfra.api.inventory.inventory method)": [[15, "pyinfra.api.inventory.Inventory.get_group"]], "get_group_data() (pyinfra.api.inventory.inventory method)": [[15, "pyinfra.api.inventory.Inventory.get_group_data"]], "get_groups_data() (pyinfra.api.inventory.inventory method)": [[15, "pyinfra.api.inventory.Inventory.get_groups_data"]], "get_host() (pyinfra.api.inventory.inventory method)": [[15, "pyinfra.api.inventory.Inventory.get_host"]], "get_host_data() (pyinfra.api.inventory.inventory method)": [[15, "pyinfra.api.inventory.Inventory.get_host_data"]], "get_override_data() (pyinfra.api.inventory.inventory method)": [[15, "pyinfra.api.inventory.Inventory.get_override_data"]], "iter_activated_hosts() (pyinfra.api.inventory.inventory method)": [[15, "pyinfra.api.inventory.Inventory.iter_activated_hosts"]], "iter_active_hosts() (pyinfra.api.inventory.inventory method)": [[15, "pyinfra.api.inventory.Inventory.iter_active_hosts"]], "len_activated_hosts() (pyinfra.api.inventory.inventory method)": [[15, "pyinfra.api.inventory.Inventory.len_activated_hosts"]], "len_active_hosts() (pyinfra.api.inventory.inventory method)": [[15, "pyinfra.api.inventory.Inventory.len_active_hosts"]], "make_hosts_and_groups() (pyinfra.api.inventory.inventory method)": [[15, "pyinfra.api.inventory.Inventory.make_hosts_and_groups"]], "pyinfra.api.inventory": [[15, "module-pyinfra.api.inventory"]], "state (pyinfra.api.inventory.inventory attribute)": [[15, "pyinfra.api.inventory.Inventory.state"]], "operationmeta (class in pyinfra.api.operation)": [[16, "pyinfra.api.operation.OperationMeta"]], "add_op() (in module pyinfra.api.operation)": [[16, "pyinfra.api.operation.add_op"]], "attach_args() (in module pyinfra.api.operation)": [[16, "pyinfra.api.operation.attach_args"]], "changed (pyinfra.api.operation.operationmeta property)": [[16, "pyinfra.api.operation.OperationMeta.changed"]], "did_change() (pyinfra.api.operation.operationmeta method)": [[16, "pyinfra.api.operation.OperationMeta.did_change"]], "did_error() (pyinfra.api.operation.operationmeta method)": [[16, "pyinfra.api.operation.OperationMeta.did_error"]], "did_not_change() (pyinfra.api.operation.operationmeta method)": [[16, "pyinfra.api.operation.OperationMeta.did_not_change"]], "did_succeed() (pyinfra.api.operation.operationmeta method)": [[16, "pyinfra.api.operation.OperationMeta.did_succeed"]], "ensure_shared_op_meta() (in module pyinfra.api.operation)": [[16, "pyinfra.api.operation.ensure_shared_op_meta"]], "execute_immediately() (in module pyinfra.api.operation)": [[16, "pyinfra.api.operation.execute_immediately"]], "executed (pyinfra.api.operation.operationmeta property)": [[16, "pyinfra.api.operation.OperationMeta.executed"]], "generate_operation_name() (in module pyinfra.api.operation)": [[16, "pyinfra.api.operation.generate_operation_name"]], "get_operation_name_from_func() (in module pyinfra.api.operation)": [[16, "pyinfra.api.operation.get_operation_name_from_func"]], "is_complete() (pyinfra.api.operation.operationmeta method)": [[16, "pyinfra.api.operation.OperationMeta.is_complete"]], "operation() (in module pyinfra.api.operation)": [[16, "pyinfra.api.operation.operation"]], "pyinfra.api.operation": [[16, "module-pyinfra.api.operation"]], "set_complete() (pyinfra.api.operation.operationmeta method)": [[16, "pyinfra.api.operation.OperationMeta.set_complete"]], "solve_operation_consistency() (in module pyinfra.api.operation)": [[16, "pyinfra.api.operation.solve_operation_consistency"]], "stderr (pyinfra.api.operation.operationmeta property)": [[16, "pyinfra.api.operation.OperationMeta.stderr"]], "stderr_lines (pyinfra.api.operation.operationmeta property)": [[16, "pyinfra.api.operation.OperationMeta.stderr_lines"]], "stdout (pyinfra.api.operation.operationmeta property)": [[16, "pyinfra.api.operation.OperationMeta.stdout"]], "stdout_lines (pyinfra.api.operation.operationmeta property)": [[16, "pyinfra.api.operation.OperationMeta.stdout_lines"]], "will_change (pyinfra.api.operation.operationmeta property)": [[16, "pyinfra.api.operation.OperationMeta.will_change"]], "pyinfra.api.operations": [[17, "module-pyinfra.api.operations"]], "run_host_op() (in module pyinfra.api.operations)": [[17, "pyinfra.api.operations.run_host_op"]], "run_ops() (in module pyinfra.api.operations)": [[17, "pyinfra.api.operations.run_ops"]], "basestatecallback (class in pyinfra.api.state)": [[18, "pyinfra.api.state.BaseStateCallback"]], "connect (pyinfra.api.state.statestage attribute)": [[18, "pyinfra.api.state.StateStage.Connect"]], "disconnect (pyinfra.api.state.statestage attribute)": [[18, "pyinfra.api.state.StateStage.Disconnect"]], "execute (pyinfra.api.state.statestage attribute)": [[18, "pyinfra.api.state.StateStage.Execute"]], "prepare (pyinfra.api.state.statestage attribute)": [[18, "pyinfra.api.state.StateStage.Prepare"]], "setup (pyinfra.api.state.statestage attribute)": [[18, "pyinfra.api.state.StateStage.Setup"]], "state (class in pyinfra.api.state)": [[18, "pyinfra.api.state.State"]], "statehostmeta (class in pyinfra.api.state)": [[18, "pyinfra.api.state.StateHostMeta"]], "statehostresults (class in pyinfra.api.state)": [[18, "pyinfra.api.state.StateHostResults"]], "stateoperationhostdata (class in pyinfra.api.state)": [[18, "pyinfra.api.state.StateOperationHostData"]], "stateoperationmeta (class in pyinfra.api.state)": [[18, "pyinfra.api.state.StateOperationMeta"]], "statestage (class in pyinfra.api.state)": [[18, "pyinfra.api.state.StateStage"]], "activate_host() (pyinfra.api.state.state method)": [[18, "pyinfra.api.state.State.activate_host"]], "add_callback_handler() (pyinfra.api.state.state method)": [[18, "pyinfra.api.state.State.add_callback_handler"]], "args (pyinfra.api.state.stateoperationmeta attribute)": [[18, "pyinfra.api.state.StateOperationMeta.args"]], "check_for_changes (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.check_for_changes"]], "command_generator (pyinfra.api.state.stateoperationhostdata attribute)": [[18, "pyinfra.api.state.StateOperationHostData.command_generator"]], "config (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.config"]], "current_deploy_filename (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.current_deploy_filename"]], "current_exec_filename (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.current_exec_filename"]], "current_op_file_number (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.current_op_file_number"]], "current_stage (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.current_stage"]], "cwd (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.cwd"]], "error_ops (pyinfra.api.state.statehostresults attribute)": [[18, "pyinfra.api.state.StateHostResults.error_ops"]], "fail_hosts() (pyinfra.api.state.state method)": [[18, "pyinfra.api.state.State.fail_hosts"]], "get_meta_for_host() (pyinfra.api.state.state method)": [[18, "pyinfra.api.state.State.get_meta_for_host"]], "get_op_data_for_host() (pyinfra.api.state.state method)": [[18, "pyinfra.api.state.State.get_op_data_for_host"]], "get_op_meta() (pyinfra.api.state.state method)": [[18, "pyinfra.api.state.State.get_op_meta"]], "get_op_order() (pyinfra.api.state.state method)": [[18, "pyinfra.api.state.State.get_op_order"]], "get_results_for_host() (pyinfra.api.state.state method)": [[18, "pyinfra.api.state.State.get_results_for_host"]], "get_warning_counter() (pyinfra.api.state.state method)": [[18, "pyinfra.api.state.State.get_warning_counter"]], "global_arguments (pyinfra.api.state.stateoperationhostdata attribute)": [[18, "pyinfra.api.state.StateOperationHostData.global_arguments"]], "global_arguments (pyinfra.api.state.stateoperationmeta attribute)": [[18, "pyinfra.api.state.StateOperationMeta.global_arguments"]], "host_before_connect() (pyinfra.api.state.basestatecallback static method)": [[18, "pyinfra.api.state.BaseStateCallback.host_before_connect"]], "host_connect() (pyinfra.api.state.basestatecallback static method)": [[18, "pyinfra.api.state.BaseStateCallback.host_connect"]], "host_connect_error() (pyinfra.api.state.basestatecallback static method)": [[18, "pyinfra.api.state.BaseStateCallback.host_connect_error"]], "host_disconnect() (pyinfra.api.state.basestatecallback static method)": [[18, "pyinfra.api.state.BaseStateCallback.host_disconnect"]], "ignored_error_ops (pyinfra.api.state.statehostresults attribute)": [[18, "pyinfra.api.state.StateHostResults.ignored_error_ops"]], "increment_warning_counter() (pyinfra.api.state.state method)": [[18, "pyinfra.api.state.State.increment_warning_counter"]], "init() (pyinfra.api.state.state method)": [[18, "pyinfra.api.state.State.init"]], "initialised (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.initialised"]], "inventory (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.inventory"]], "is_executing (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.is_executing"]], "is_host_in_limit() (pyinfra.api.state.state method)": [[18, "pyinfra.api.state.State.is_host_in_limit"]], "names (pyinfra.api.state.stateoperationmeta attribute)": [[18, "pyinfra.api.state.StateOperationMeta.names"]], "op_hashes (pyinfra.api.state.statehostmeta attribute)": [[18, "pyinfra.api.state.StateHostMeta.op_hashes"]], "op_order (pyinfra.api.state.stateoperationmeta attribute)": [[18, "pyinfra.api.state.StateOperationMeta.op_order"]], "operation_end() (pyinfra.api.state.basestatecallback static method)": [[18, "pyinfra.api.state.BaseStateCallback.operation_end"]], "operation_host_error() (pyinfra.api.state.basestatecallback static method)": [[18, "pyinfra.api.state.BaseStateCallback.operation_host_error"]], "operation_host_start() (pyinfra.api.state.basestatecallback static method)": [[18, "pyinfra.api.state.BaseStateCallback.operation_host_start"]], "operation_host_success() (pyinfra.api.state.basestatecallback static method)": [[18, "pyinfra.api.state.BaseStateCallback.operation_host_success"]], "operation_meta (pyinfra.api.state.stateoperationhostdata attribute)": [[18, "pyinfra.api.state.StateOperationHostData.operation_meta"]], "operation_start() (pyinfra.api.state.basestatecallback static method)": [[18, "pyinfra.api.state.BaseStateCallback.operation_start"]], "ops (pyinfra.api.state.statehostmeta attribute)": [[18, "pyinfra.api.state.StateHostMeta.ops"]], "ops (pyinfra.api.state.statehostresults attribute)": [[18, "pyinfra.api.state.StateHostResults.ops"]], "ops_change (pyinfra.api.state.statehostmeta attribute)": [[18, "pyinfra.api.state.StateHostMeta.ops_change"]], "ops_no_change (pyinfra.api.state.statehostmeta attribute)": [[18, "pyinfra.api.state.StateHostMeta.ops_no_change"]], "parent_op_hash (pyinfra.api.state.stateoperationhostdata attribute)": [[18, "pyinfra.api.state.StateOperationHostData.parent_op_hash"]], "partial_ops (pyinfra.api.state.statehostresults attribute)": [[18, "pyinfra.api.state.StateHostResults.partial_ops"]], "pool (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.pool"]], "print_fact_info (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.print_fact_info"]], "print_fact_input (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.print_fact_input"]], "print_fact_output (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.print_fact_output"]], "print_input (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.print_input"]], "print_noop_info (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.print_noop_info"]], "print_output (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.print_output"]], "pyinfra.api.state": [[18, "module-pyinfra.api.state"]], "set_op_data_for_host() (pyinfra.api.state.state method)": [[18, "pyinfra.api.state.State.set_op_data_for_host"]], "set_stage() (pyinfra.api.state.state method)": [[18, "pyinfra.api.state.State.set_stage"]], "should_check_for_changes() (pyinfra.api.state.state method)": [[18, "pyinfra.api.state.State.should_check_for_changes"]], "should_raise_failed_hosts (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.should_raise_failed_hosts"]], "stage_warnings (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.stage_warnings"]], "success_ops (pyinfra.api.state.statehostresults attribute)": [[18, "pyinfra.api.state.StateHostResults.success_ops"]], "trigger_callbacks() (pyinfra.api.state.state method)": [[18, "pyinfra.api.state.State.trigger_callbacks"]], "cache_key (pyinfra.api.util.get_file_io property)": [[19, "pyinfra.api.util.get_file_io.cache_key"]], "filename_or_io (pyinfra.api.util.get_file_io attribute)": [[19, "pyinfra.api.util.get_file_io.filename_or_io"]], "format_exception() (in module pyinfra.api.util)": [[19, "pyinfra.api.util.format_exception"]], "get_call_location() (in module pyinfra.api.util)": [[19, "pyinfra.api.util.get_call_location"]], "get_caller_frameinfo() (in module pyinfra.api.util)": [[19, "pyinfra.api.util.get_caller_frameinfo"]], "get_file_io (class in pyinfra.api.util)": [[19, "pyinfra.api.util.get_file_io"]], "get_file_path() (in module pyinfra.api.util)": [[19, "pyinfra.api.util.get_file_path"]], "get_file_sha1() (in module pyinfra.api.util)": [[19, "pyinfra.api.util.get_file_sha1"]], "get_kwargs_str() (in module pyinfra.api.util)": [[19, "pyinfra.api.util.get_kwargs_str"]], "get_operation_order_from_stack() (in module pyinfra.api.util)": [[19, "pyinfra.api.util.get_operation_order_from_stack"]], "get_path_permissions_mode() (in module pyinfra.api.util)": [[19, "pyinfra.api.util.get_path_permissions_mode"]], "get_template() (in module pyinfra.api.util)": [[19, "pyinfra.api.util.get_template"]], "log_error_or_warning() (in module pyinfra.api.util)": [[19, "pyinfra.api.util.log_error_or_warning"]], "log_host_command_error() (in module pyinfra.api.util)": [[19, "pyinfra.api.util.log_host_command_error"]], "log_operation_start() (in module pyinfra.api.util)": [[19, "pyinfra.api.util.log_operation_start"]], "make_hash() (in module pyinfra.api.util)": [[19, "pyinfra.api.util.make_hash"]], "memoize() (in module pyinfra.api.util)": [[19, "pyinfra.api.util.memoize"]], "mode (pyinfra.api.util.get_file_io attribute)": [[19, "pyinfra.api.util.get_file_io.mode"]], "print_host_combined_output() (in module pyinfra.api.util)": [[19, "pyinfra.api.util.print_host_combined_output"]], "pyinfra.api.util": [[19, "module-pyinfra.api.util"]], "raise_if_bad_type() (in module pyinfra.api.util)": [[19, "pyinfra.api.util.raise_if_bad_type"]], "sha1_hash() (in module pyinfra.api.util)": [[19, "pyinfra.api.util.sha1_hash"]], "try_int() (in module pyinfra.api.util)": [[19, "pyinfra.api.util.try_int"]], "contextmanager (class in pyinfra.context)": [[20, "pyinfra.context.ContextManager"]], "contextobject (class in pyinfra.context)": [[20, "pyinfra.context.ContextObject"]], "localcontextobject (class in pyinfra.context)": [[20, "pyinfra.context.LocalContextObject"]], "container (class in pyinfra.context)": [[20, "pyinfra.context.container"]], "get() (pyinfra.context.contextmanager method)": [[20, "pyinfra.context.ContextManager.get"]], "init_base_classes() (in module pyinfra.context)": [[20, "pyinfra.context.init_base_classes"]], "isset() (pyinfra.context.contextmanager method)": [[20, "pyinfra.context.ContextManager.isset"]], "module (pyinfra.context.container attribute)": [[20, "pyinfra.context.container.module"]], "pyinfra.context": [[20, "module-pyinfra.context"]], "reset() (pyinfra.context.contextmanager method)": [[20, "pyinfra.context.ContextManager.reset"]], "set() (pyinfra.context.contextmanager method)": [[20, "pyinfra.context.ContextManager.set"]], "set_base() (pyinfra.context.contextmanager method)": [[20, "pyinfra.context.ContextManager.set_base"]], "use() (pyinfra.context.contextmanager method)": [[20, "pyinfra.context.ContextManager.use"]], "include() (in module pyinfra.local)": [[21, "pyinfra.local.include"]], "pyinfra.local": [[21, "module-pyinfra.local"]], "shell() (in module pyinfra.local)": [[21, "pyinfra.local.shell"]], "progress_spinner() (in module pyinfra.progress)": [[22, "pyinfra.progress.progress_spinner"]], "pyinfra.progress": [[22, "module-pyinfra.progress"]], "pyinfra.version": [[23, "module-pyinfra.version"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["api/connectors", "api/deploys", "api/index", "api/operations", "api/reference", "apidoc/pyinfra.api.arguments", "apidoc/pyinfra.api.arguments_typed", "apidoc/pyinfra.api.command", "apidoc/pyinfra.api.config", "apidoc/pyinfra.api.connect", "apidoc/pyinfra.api.connectors", "apidoc/pyinfra.api.deploy", "apidoc/pyinfra.api.exceptions", "apidoc/pyinfra.api.facts", "apidoc/pyinfra.api.host", "apidoc/pyinfra.api.inventory", "apidoc/pyinfra.api.operation", "apidoc/pyinfra.api.operations", "apidoc/pyinfra.api.state", "apidoc/pyinfra.api.util", "apidoc/pyinfra.context", "apidoc/pyinfra.local", "apidoc/pyinfra.progress", "apidoc/pyinfra.version", "arguments", "cli", "compatibility", "connectors", "connectors/chroot", "connectors/docker", "connectors/dockerssh", "connectors/local", "connectors/ssh", "connectors/terraform", "connectors/vagrant", "contributing", "deploy-process", "examples", "examples/client_side_assets", "examples/data_multiple_environments", "examples/dynamic_execution_deploy", "examples/dynamic_inventories_data", "examples/groups_roles", "examples/secret_storage", "facts", "facts/apk", "facts/apt", "facts/brew", "facts/bsdinit", "facts/cargo", "facts/choco", "facts/deb", "facts/dnf", "facts/docker", "facts/files", "facts/flatpak", "facts/gem", "facts/git", "facts/gpg", "facts/hardware", "facts/iptables", "facts/launchd", "facts/lxd", "facts/mysql", "facts/npm", "facts/openrc", "facts/pacman", "facts/pip", "facts/pkg", "facts/pkgin", "facts/postgres", "facts/postgresql", "facts/rpm", "facts/runit", "facts/selinux", "facts/server", "facts/snap", "facts/systemd", "facts/sysvinit", "facts/upstart", "facts/vzctl", "facts/xbps", "facts/yum", "facts/zfs", "facts/zypper", "faq", "getting-started", "index", "install", "inventory-data", "operations", "operations/apk", "operations/apt", "operations/brew", "operations/bsdinit", "operations/cargo", "operations/choco", "operations/dnf", "operations/docker", "operations/files", "operations/flatpak", "operations/gem", "operations/git", "operations/iptables", "operations/launchd", "operations/lxd", "operations/mysql", "operations/npm", "operations/openrc", "operations/pacman", "operations/pip", "operations/pkg", "operations/pkgin", "operations/postgres", "operations/postgresql", "operations/puppet", "operations/python", "operations/runit", "operations/selinux", "operations/server", "operations/snap", "operations/ssh", "operations/systemd", "operations/sysvinit", "operations/upstart", "operations/vzctl", "operations/xbps", "operations/yum", "operations/zfs", "operations/zypper", "performance", "public/en/0.x/_static/fonts/source-serif-pro/README", "support", "using-operations"], "filenames": ["api/connectors.md", "api/deploys.md", "api/index.rst", "api/operations.md", "api/reference.rst", "apidoc/pyinfra.api.arguments.rst", "apidoc/pyinfra.api.arguments_typed.rst", "apidoc/pyinfra.api.command.rst", "apidoc/pyinfra.api.config.rst", "apidoc/pyinfra.api.connect.rst", "apidoc/pyinfra.api.connectors.rst", "apidoc/pyinfra.api.deploy.rst", "apidoc/pyinfra.api.exceptions.rst", "apidoc/pyinfra.api.facts.rst", "apidoc/pyinfra.api.host.rst", "apidoc/pyinfra.api.inventory.rst", "apidoc/pyinfra.api.operation.rst", "apidoc/pyinfra.api.operations.rst", "apidoc/pyinfra.api.state.rst", "apidoc/pyinfra.api.util.rst", "apidoc/pyinfra.context.rst", "apidoc/pyinfra.local.rst", "apidoc/pyinfra.progress.rst", "apidoc/pyinfra.version.rst", "arguments.rst", "cli.md", "compatibility.md", "connectors.rst", "connectors/chroot.rst", "connectors/docker.rst", "connectors/dockerssh.rst", "connectors/local.rst", "connectors/ssh.rst", "connectors/terraform.rst", "connectors/vagrant.rst", "contributing.md", "deploy-process.rst", "examples.rst", "examples/client_side_assets.md", "examples/data_multiple_environments.md", "examples/dynamic_execution_deploy.md", "examples/dynamic_inventories_data.md", "examples/groups_roles.md", "examples/secret_storage.md", "facts.rst", "facts/apk.rst", "facts/apt.rst", "facts/brew.rst", "facts/bsdinit.rst", "facts/cargo.rst", "facts/choco.rst", "facts/deb.rst", "facts/dnf.rst", "facts/docker.rst", "facts/files.rst", "facts/flatpak.rst", "facts/gem.rst", "facts/git.rst", "facts/gpg.rst", "facts/hardware.rst", "facts/iptables.rst", "facts/launchd.rst", "facts/lxd.rst", "facts/mysql.rst", "facts/npm.rst", "facts/openrc.rst", "facts/pacman.rst", "facts/pip.rst", "facts/pkg.rst", "facts/pkgin.rst", "facts/postgres.rst", "facts/postgresql.rst", "facts/rpm.rst", "facts/runit.rst", "facts/selinux.rst", "facts/server.rst", "facts/snap.rst", "facts/systemd.rst", "facts/sysvinit.rst", "facts/upstart.rst", "facts/vzctl.rst", "facts/xbps.rst", "facts/yum.rst", "facts/zfs.rst", "facts/zypper.rst", "faq.rst", "getting-started.rst", "index.rst", "install.md", "inventory-data.rst", "operations.rst", "operations/apk.rst", "operations/apt.rst", "operations/brew.rst", "operations/bsdinit.rst", "operations/cargo.rst", "operations/choco.rst", "operations/dnf.rst", "operations/docker.rst", "operations/files.rst", "operations/flatpak.rst", "operations/gem.rst", "operations/git.rst", "operations/iptables.rst", "operations/launchd.rst", "operations/lxd.rst", "operations/mysql.rst", "operations/npm.rst", "operations/openrc.rst", "operations/pacman.rst", "operations/pip.rst", "operations/pkg.rst", "operations/pkgin.rst", "operations/postgres.rst", "operations/postgresql.rst", "operations/puppet.rst", "operations/python.rst", "operations/runit.rst", "operations/selinux.rst", "operations/server.rst", "operations/snap.rst", "operations/ssh.rst", "operations/systemd.rst", "operations/sysvinit.rst", "operations/upstart.rst", "operations/vzctl.rst", "operations/xbps.rst", "operations/yum.rst", "operations/zfs.rst", "operations/zypper.rst", "performance.rst", "public/en/0.x/_static/fonts/source-serif-pro/README.md", "support.md", "using-operations.rst"], "titles": ["Writing Connectors", "Packaging Deploys", "Using the API", "Writing Facts & Operations", "API Reference", "pyinfra.api.arguments module", "pyinfra.api.arguments_typed module", "pyinfra.api.command module", "pyinfra.api.config module", "pyinfra.api.connect module", "pyinfra.api.connectors module", "pyinfra.api.deploy module", "pyinfra.api.exceptions module", "pyinfra.api.facts module", "pyinfra.api.host module", "pyinfra.api.inventory module", "pyinfra.api.operation module", "pyinfra.api.operations module", "pyinfra.api.state module", "pyinfra.api.util module", "pyinfra.context module", "pyinfra.local module", "pyinfra.progress module", "pyinfra.version module", "Global Arguments", "Using the CLI", "Compatibility", "Connectors Index", "@chroot Connector", "@docker Connector", "@dockerssh Connector", "@local Connector", "@ssh Connector", "@terraform Connector", "@vagrant Connector", "Contributing", "How pyinfra Works", "Example Deploys", "Client Side Assets", "Data Across Multiple Environments", "Dynamic Execution during Deploy", "Dynamic Inventories & Data", "Groups & Roles", "Using Secrets in pyinfra", "Facts Index", "Apk Facts", "Apt Facts", "Brew Facts", "Bsdinit Facts", "Cargo Facts", "Choco Facts", "Deb Facts", "Dnf Facts", "Docker Facts", "Files Facts", "Flatpak Facts", "Gem Facts", "Git Facts", "Gpg Facts", "Hardware Facts", "Iptables Facts", "Launchd Facts", "Lxd Facts", "Mysql Facts", "Npm Facts", "Openrc Facts", "Pacman Facts", "Pip Facts", "Pkg Facts", "Pkgin Facts", "Postgres Facts", "Postgresql Facts", "Rpm Facts", "Runit Facts", "Selinux Facts", "Server Facts", "Snap Facts", "Systemd Facts", "Sysvinit Facts", "Upstart Facts", "Vzctl Facts", "Xbps Facts", "Yum Facts", "Zfs Facts", "Zypper Facts", "Frequently Asked Questions", "Getting Started", "pyinfra Documentation", "Installation", "Inventory & Data", "Operations Index", "Apk Operations", "Apt Operations", "Brew Operations", "Bsdinit Operations", "Cargo Operations", "Choco Operations", "Dnf Operations", "Docker Operations", "Files Operations", "Flatpak Operations", "Gem Operations", "Git Operations", "Iptables Operations", "Launchd Operations", "Lxd Operations", "Mysql Operations", "Npm Operations", "Openrc Operations", "Pacman Operations", "Pip Operations", "Pkg Operations", "Pkgin Operations", "Postgres Operations", "Postgresql Operations", "Puppet Operations", "Python Operations", "Runit Operations", "Selinux Operations", "Server Operations", "Snap Operations", "Ssh Operations", "Systemd Operations", "Sysvinit Operations", "Upstart Operations", "Vzctl Operations", "Xbps Operations", "Yum Operations", "Zfs Operations", "Zypper Operations", "Performance", "Source Serif Pro", "Help & Support", "Using Operations"], "terms": {"enabl": [0, 1, 3, 7, 11, 13, 25, 26, 27, 32, 36, 52, 65, 75, 77, 82, 84, 90, 94, 97, 98, 104, 108, 117, 119, 122, 124, 127, 129], "pyinfra": [0, 1, 2, 3, 4, 24, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 54, 70, 85, 88, 89, 90, 92, 97, 99, 102, 110, 113, 119, 121, 124, 127, 129, 130, 132, 133], "directli": [0, 14, 25, 125], "integr": [0, 27], "other": [0, 3, 13, 24, 25, 27, 32, 35, 40, 75, 89, 92, 113, 117, 119, 121, 123, 133], "tool": [0, 1, 25, 27, 35, 88, 119, 130, 131], "system": [0, 1, 25, 48, 53, 54, 75, 92, 97, 98, 99, 103, 119, 120, 127, 129, 131], "connecto": [], "ar": [0, 1, 3, 4, 12, 15, 16, 20, 24, 25, 26, 27, 32, 35, 36, 37, 38, 44, 48, 54, 77, 85, 86, 88, 89, 90, 92, 97, 99, 111, 119, 125, 126, 127, 129, 133], "written": [0, 3, 26, 36], "python": [0, 1, 2, 3, 21, 26, 35, 40, 41, 43, 86, 87, 88, 89, 90, 99, 110, 119, 133], "class": [0, 3, 5, 6, 7, 8, 13, 14, 15, 16, 18, 19, 20, 116], "inventoryconnector": 0, "baseconnector": [0, 14], "handles_execut": 0, "fals": [0, 3, 8, 14, 16, 17, 18, 19, 21, 24, 32, 36, 54, 70, 73, 77, 86, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 106, 107, 108, 109, 110, 112, 113, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 133], "staticmethod": 0, "def": [0, 1, 3, 26, 40, 41, 43, 116, 133], "make_names_data": 0, "_": [0, 3, 24], "none": [0, 3, 5, 7, 8, 11, 13, 14, 15, 16, 17, 18, 19, 20, 22, 54, 57, 58, 63, 64, 67, 70, 71, 73, 74, 75, 77, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 107, 108, 109, 110, 111, 112, 113, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129], "gener": [0, 3, 5, 6, 12, 13, 14, 16, 19, 25, 26, 27, 33, 34, 36, 40, 41, 44, 78, 92, 99, 119, 133], "target": [0, 3, 14, 15, 25, 27, 29, 32, 36, 41, 54, 74, 75, 86, 87, 89, 99, 103, 106, 113, 118, 119, 133], "yield": [0, 3], "tupl": [0, 5, 14, 15, 16, 18, 19, 47, 89, 99, 102], "name": [0, 1, 2, 3, 5, 10, 11, 13, 14, 15, 16, 18, 19, 24, 25, 28, 29, 30, 31, 33, 34, 36, 40, 41, 44, 52, 60, 61, 65, 66, 72, 73, 75, 76, 77, 78, 79, 82, 84, 86, 89, 91, 92, 93, 94, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 109, 110, 111, 112, 113, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 126, 127, 128, 129, 133], "data": [0, 3, 4, 5, 11, 12, 13, 14, 15, 25, 27, 33, 36, 37, 63, 70, 74, 86, 87, 119], "group": [0, 1, 12, 14, 15, 25, 29, 32, 36, 37, 39, 41, 44, 54, 66, 85, 86, 87, 90, 99, 102], "local": [0, 2, 4, 25, 26, 35, 38, 42, 44, 86, 87, 89, 90, 94, 99, 102, 110, 117, 121, 133], "A": [0, 1, 2, 4, 13, 26, 29, 30, 39, 42, 86, 87, 89, 133], "implement": [0, 21, 27, 116], "requir": [0, 1, 13, 26, 35, 36, 74, 86, 92, 99, 103, 106, 110, 113, 118, 119], "few": [0, 26, 89, 130], "more": [0, 1, 25, 26, 33, 58, 86, 99, 123, 130, 133], "method": [0, 3, 14, 26], "localconnector": 0, "true": [0, 1, 2, 3, 13, 14, 16, 18, 24, 25, 31, 32, 36, 40, 54, 70, 73, 77, 85, 86, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 115, 116, 117, 118, 119, 120, 122, 123, 124, 125, 126, 127, 128, 129, 133], "see": [0, 1, 2, 24, 36, 44, 45, 46, 47, 48, 49, 50, 52, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 86, 89, 93, 99, 100, 101, 106, 113, 119, 120, 123, 132, 133], "abov": [0, 1, 25, 27, 36, 86, 88, 106, 113], "run_shell_command": [0, 14, 21, 40, 116], "self": [0, 3], "command": [0, 2, 4, 13, 14, 16, 21, 24, 26, 27, 30, 32, 36, 40, 44, 72, 87, 89, 90, 91, 92, 93, 94, 96, 97, 98, 99, 104, 106, 108, 109, 110, 112, 113, 114, 115, 116, 117, 119, 122, 123, 124, 125, 126, 127, 129, 130, 133], "stringcommand": [0, 3, 7, 13], "print_output": [0, 18, 21], "bool": [0, 8, 13, 14, 16, 17, 18, 19, 21, 24, 32], "print_input": [0, 18, 21], "argument": [0, 4, 7, 12, 14, 19, 26, 32, 36, 44, 85, 86, 87, 90, 92, 97, 99, 103, 106, 110, 113, 116, 119, 120, 125, 127, 129], "unpack": [0, 7, 14], "connectorargu": [0, 5, 7], "commandoutput": [0, 14, 16, 19], "machin": [0, 25, 27, 30, 31, 77, 86, 89, 99, 119, 122, 133], "arg": [0, 6, 7, 11, 13, 14, 16, 18, 89, 99, 103, 116, 119], "actual": [0, 36, 66, 85, 99], "whether": [0, 3, 17, 24, 32, 65, 77, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 117, 118, 119, 120, 122, 123, 124, 125, 126, 127, 128, 129], "print": [0, 2, 25, 86], "output": [0, 12, 13, 16, 19, 21, 25, 26, 27, 33, 40, 48, 53, 75, 86, 89, 103, 119], "input": [0, 19, 25, 103], "global": [0, 3, 4, 5, 12, 13, 26, 36, 49, 64, 86, 87, 90, 99, 102, 106, 107, 110, 113, 129], "return": [0, 2, 3, 5, 7, 15, 18, 19, 24, 25, 41, 43, 45, 46, 47, 49, 50, 51, 52, 53, 54, 55, 56, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 84, 89, 97, 115, 127, 133], "indic": [0, 3, 18, 75, 77], "success": [0, 16, 24, 92], "stdout": [0, 2, 16, 40, 116, 133], "stderr": [0, 2, 16, 40, 116], "line": [0, 3, 21, 25, 40, 44, 54, 75, 90, 116, 119], "put_fil": [0, 14], "filename_or_io": [0, 3, 19], "remote_filenam": [0, 3, 121], "remote_temp_filenam": [0, 7], "ignor": [0, 21, 24, 99, 119], "upload": [0, 3, 14, 36, 38, 90, 99, 119], "file": [0, 14, 19, 21, 25, 26, 32, 36, 37, 38, 41, 42, 44, 52, 58, 72, 74, 75, 82, 86, 87, 90, 92, 97, 102, 106, 110, 111, 113, 117, 118, 119, 121, 122, 123, 124, 127, 129, 131], "io": [0, 7, 19, 99, 120], "object": [0, 2, 7, 8, 14, 15, 16, 18, 19, 20, 33, 99], "copi": [0, 8, 99, 110], "temporari": [0, 14, 75, 121], "directori": [0, 21, 24, 26, 44, 64, 75, 89, 90, 92, 102, 107, 110, 111, 117, 118, 119, 133], "locat": [0, 3, 75, 99, 110, 121], "succ": [], "failur": 0, "get_fil": [0, 14], "download": [0, 3, 14, 84, 88, 90, 92, 97, 127, 129], "our": [0, 86], "filenam": [0, 14, 19, 21, 32, 92, 97, 99, 106, 113, 119, 121, 127, 129], "oper": [1, 2, 4, 5, 11, 12, 13, 14, 19, 28, 29, 35, 37, 40, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 54, 55, 56, 57, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 86, 87, 89, 130], "execut": [1, 2, 3, 4, 7, 11, 14, 16, 17, 18, 20, 21, 26, 27, 28, 29, 31, 35, 36, 37, 44, 75, 85, 86, 87, 89, 91, 92, 93, 96, 97, 98, 99, 106, 109, 112, 113, 114, 115, 116, 117, 119, 121, 122, 125, 126, 127, 129, 130, 133], "low": [1, 14, 78], "level": [1, 14, 25, 74, 78, 119], "filesystem": [1, 44, 54, 75, 90, 99, 119, 125], "systemd": [1, 44, 86, 90, 99, 104, 119], "manag": [1, 18, 61, 73, 79, 83, 87, 90, 91, 92, 93, 94, 95, 96, 97, 98, 100, 101, 102, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 119, 120, 122, 123, 124, 125, 126, 127, 128, 130], "etc": [1, 2, 24, 36, 48, 52, 72, 78, 82, 85, 86, 92, 94, 97, 99, 103, 117, 119, 122, 123, 124, 127, 129, 133], "i": [1, 2, 3, 4, 12, 13, 16, 18, 24, 25, 26, 27, 30, 31, 32, 33, 35, 36, 37, 38, 40, 41, 42, 44, 54, 59, 73, 74, 75, 86, 87, 88, 89, 91, 92, 93, 96, 97, 98, 99, 101, 102, 105, 106, 109, 110, 111, 112, 113, 114, 115, 116, 117, 119, 121, 122, 123, 124, 125, 126, 127, 129, 130, 131, 133], "higher": 1, "abstract": [1, 13], "combin": [1, 4, 14, 25, 89], "one": [1, 3, 11, 16, 25, 27, 33, 36, 40, 54, 58, 85, 88, 97, 98, 99, 121, 127, 133], "togeth": [1, 92], "setup": [1, 4, 18, 36, 44, 133], "configur": [1, 8, 9, 14, 17, 27, 40, 41, 75, 87, 89, 102, 119, 133], "someth": [1, 86, 99, 119], "docker": [1, 25, 26, 30, 35, 44, 87, 89, 90, 92, 97, 99, 119, 127, 133], "certbot": 1, "nginx": [1, 24, 25, 31, 36, 98], "usual": [1, 42], "defin": [1, 2, 3, 4, 15, 25, 36, 40, 85, 86, 89, 90, 103, 124, 133], "user": [1, 2, 11, 12, 16, 20, 25, 26, 32, 33, 44, 54, 63, 74, 77, 85, 89, 90, 92, 96, 99, 102, 113, 117, 121, 122, 133], "us": [1, 4, 7, 13, 14, 15, 19, 20, 24, 26, 27, 31, 32, 33, 35, 37, 40, 41, 42, 44, 51, 54, 59, 74, 75, 77, 86, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 131, 132], "It": [1, 3, 25, 41, 42, 88, 89, 133], "also": [1, 2, 3, 26, 33, 35, 41, 45, 46, 47, 48, 49, 50, 52, 53, 54, 55, 56, 57, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 89, 99, 106, 115, 133], "possibl": [1, 13, 25, 26, 36, 41, 88, 89, 133], "modul": [1, 3, 4, 41, 42, 44, 75, 88, 90, 103, 105, 106, 110, 113, 116, 119], "make": [1, 3, 19, 26, 36, 86, 89, 90, 99, 113, 133], "them": [1, 86, 90, 113], "reusabl": [1, 87], "shareabl": 1, "via": [1, 14, 25, 32, 35, 40, 44, 86, 89, 92, 97, 127, 129, 133], "pypi": 1, "These": [1, 20, 25, 26, 42, 86, 89, 92, 97, 103, 119, 127, 129], "can": [1, 2, 3, 25, 26, 27, 29, 30, 32, 33, 36, 40, 41, 42, 43, 44, 48, 85, 86, 87, 89, 91, 92, 93, 95, 96, 97, 99, 101, 102, 103, 107, 109, 110, 113, 117, 119, 127, 129, 132, 133], "import": [1, 2, 20, 26, 36, 38, 40, 41, 42, 43, 44, 85, 86, 89, 99, 106, 113, 133], "your": [0, 1, 2, 3, 25, 35, 38, 87, 99, 120, 133], "own": [1, 2, 3, 4, 24, 87, 99, 111, 113, 133], "code": [1, 2, 20, 24, 36, 41, 78, 115, 116, 119, 130, 133], "utilis": 1, "essenti": [1, 35], "two": [1, 11, 25, 32, 39, 54, 86, 89, 99, 111, 121, 133], "chang": [1, 2, 3, 12, 16, 24, 26, 31, 35, 40, 86, 89, 90, 99, 102, 106, 113, 115, 118, 119, 122, 125, 131], "from": [1, 2, 5, 11, 14, 15, 16, 19, 24, 25, 27, 29, 33, 36, 38, 40, 41, 42, 43, 44, 54, 85, 86, 87, 89, 92, 97, 98, 99, 102, 103, 106, 113, 118, 119, 121, 127, 129, 133], "wrap": [1, 11, 14, 99], "everyth": [1, 26], "function": [1, 3, 5, 7, 11, 16, 24, 26, 35, 40, 116, 131, 133], "decor": [1, 11, 16, 26], "api": [1, 3, 21, 26, 35, 40, 41, 87], "apt": [1, 25, 31, 36, 40, 44, 51, 77, 85, 86, 87, 89, 90, 133], "instal": [1, 25, 31, 35, 36, 38, 40, 42, 44, 45, 46, 47, 49, 50, 51, 52, 55, 56, 59, 64, 66, 67, 68, 69, 72, 74, 75, 76, 81, 82, 84, 86, 90, 91, 92, 93, 95, 97, 100, 101, 107, 109, 110, 111, 112, 119, 120, 126, 127, 129, 133], "mariadb": 1, "install_mariadb": 1, "server": [1, 2, 3, 9, 11, 13, 16, 17, 24, 25, 26, 27, 35, 36, 40, 41, 42, 44, 59, 85, 86, 87, 89, 90, 92, 94, 99, 106, 111, 113, 115, 118, 121, 123, 133], "thi": [1, 2, 3, 4, 13, 14, 15, 16, 19, 24, 25, 26, 29, 30, 31, 32, 35, 38, 39, 40, 41, 42, 44, 59, 74, 75, 85, 86, 89, 91, 92, 93, 94, 96, 97, 98, 99, 102, 103, 104, 106, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 129, 131, 132, 133], "could": [1, 3], "like": [1, 3, 25, 26, 33, 36, 41, 44, 86, 89, 91, 92, 93, 94, 95, 96, 99, 101, 104, 107, 108, 109, 110, 117, 122, 123, 124, 129, 130, 133], "so": [1, 3, 13, 15, 25, 26, 33, 36, 44, 89, 111, 118, 119, 124, 133], "packaged_deploi": 1, "basic": [1, 37, 86, 87], "simpli": [1, 3, 38, 92, 124, 133], "prometheu": 1, "complex": [1, 42, 99, 133], "contain": [1, 4, 9, 20, 25, 27, 29, 30, 32, 39, 53, 62, 75, 80, 86, 89, 90, 99, 119, 125, 129], "multipl": [1, 14, 25, 29, 30, 32, 34, 36, 37, 42, 44, 89, 93, 99, 100, 102, 119, 120], "instanc": [1, 7, 25, 75, 86], "variou": 1, "export": [1, 99], "servic": [1, 36, 40, 61, 65, 73, 77, 79, 86, 90, 98, 99, 118, 133], "accept": [1, 3, 32, 90], "same": [1, 15, 32, 42, 48, 74, 89, 92, 98, 99, 102, 120], "thei": [1, 2, 3, 36, 77, 99, 117, 133], "appli": [1, 24, 86, 99, 103, 113, 115, 125], "everi": [1, 25, 36, 78, 119], "call": [1, 3, 5, 11, 13, 16, 26, 36, 40, 44, 90, 99, 133], "within": [1, 18, 21, 26, 28, 42, 44, 86, 116, 119, 133], "take": [1, 3, 7, 11, 16, 35, 86, 106, 113, 119], "sudo": [1, 2, 8, 16, 24, 25, 86, 99, 116, 121, 133], "set": [1, 2, 3, 13, 16, 18, 19, 20, 24, 26, 29, 32, 37, 54, 63, 73, 74, 75, 85, 87, 89, 90, 92, 97, 98, 99, 102, 106, 111, 117, 118, 119, 121, 124, 127, 128, 129, 131, 133], "default": [1, 3, 5, 8, 13, 14, 15, 24, 25, 29, 32, 35, 36, 39, 65, 85, 89, 92, 99, 102, 106, 107, 108, 111, 119, 121, 129, 133], "ani": [1, 2, 4, 5, 11, 13, 14, 15, 16, 19, 24, 25, 26, 27, 32, 34, 35, 36, 38, 39, 40, 75, 86, 87, 88, 89, 90, 92, 97, 99, 102, 106, 117, 119, 127, 129], "provid": [1, 2, 3, 15, 20, 25, 29, 30, 36, 43, 54, 66, 72, 89, 92, 98, 99, 118, 119, 131, 133], "host": [1, 2, 3, 4, 5, 7, 11, 12, 13, 15, 16, 17, 18, 19, 24, 25, 27, 29, 31, 32, 33, 34, 38, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 86, 87, 92, 97, 99, 102, 106, 113, 116, 119, 121, 125, 127], "preced": 1, "sensibl": 1, "option": [1, 8, 16, 18, 21, 35, 63, 73, 75, 88, 92, 97, 98, 99, 106, 113, 117, 119, 120, 127, 129], "end": [1, 20, 36, 40, 54, 99], "customis": 1, "modifi": [1, 27, 29, 119, 128], "mariadb_vers": 1, "1": [1, 7, 18, 19, 25, 32, 33, 35, 52, 59, 72, 78, 82, 84, 89, 97, 99, 119, 123, 127, 129, 133], "2": [1, 18, 25, 32, 33, 59, 75, 89, 99, 102, 115, 123], "3": [1, 2, 18, 29, 30, 33, 35, 59, 88, 89, 123], "data_default": [1, 11], "f": [1, 3, 25, 75, 92, 93, 97, 116, 119, 127, 133], "In": [0, 2, 24, 25, 26, 36, 40, 86, 89, 131], "addit": [2, 24, 26, 35, 85, 89, 92, 97, 110, 127, 128, 129, 131], "cli": [2, 11, 20, 26, 86, 87, 88, 89, 106, 113], "full": [25, 26, 75, 86, 89, 92, 133], "As": [2, 25, 36, 41], "v1": [26, 41, 102], "consid": [2, 24, 132], "mostli": 2, "stabl": [2, 55, 76, 97, 120, 127], "an": [2, 3, 4, 9, 11, 12, 16, 18, 19, 25, 29, 32, 34, 35, 36, 39, 43, 44, 54, 55, 76, 86, 99, 102, 105, 117, 118, 133], "exampl": [4, 7, 24, 27, 31, 33, 36, 40, 41, 42, 44, 86, 87, 89, 91, 92, 93, 96, 97, 98, 99, 100, 101, 102, 103, 105, 106, 109, 110, 111, 112, 113, 115, 116, 117, 118, 119, 120, 121, 122, 123, 126, 127, 128, 129], "how": [2, 3, 27, 29, 32, 35, 44, 99, 110, 119], "embed": [], "below": [25, 27, 36, 88, 99, 132, 133], "refer": [2, 35, 89, 131], "build": [3, 29, 35, 38, 88, 119, 131, 133], "block": [3, 44, 59, 90, 103], "document": [3, 26, 37, 85, 133], "describ": [3, 25, 26, 36, 39, 86, 90], "you": [0, 2, 3, 26, 28, 29, 30, 32, 33, 35, 36, 37, 39, 40, 44, 85, 86, 87, 88, 89, 99, 116, 119, 132, 133], "extend": 3, "": [0, 2, 3, 4, 13, 14, 15, 16, 19, 21, 25, 32, 35, 36, 41, 54, 63, 86, 89, 98, 99, 106, 111, 113, 119, 120, 122, 126, 130, 133], "pass": [3, 11, 12, 16, 25, 26, 29, 32, 42, 44, 89, 92, 94, 99, 104, 108, 110, 116, 117, 119, 122, 124, 133], "current": [3, 4, 5, 13, 18, 20, 26, 34, 35, 75, 89, 99, 102, 119, 133], "deploi": [3, 4, 5, 8, 12, 13, 14, 16, 17, 18, 20, 24, 25, 26, 36, 38, 39, 41, 42, 44, 89, 92, 97, 98, 99, 116, 119, 127, 129, 133], "state": [2, 3, 4, 5, 7, 9, 11, 12, 13, 14, 15, 16, 17, 19, 21, 36, 40, 44, 59, 73, 75, 90, 94, 99, 104, 108, 117, 118, 119, 122, 123, 124, 127, 130, 133], "read": [3, 9, 14, 34, 36, 44, 106, 113, 119, 122], "compar": 3, "except": [3, 4, 15, 19, 24, 36, 116, 133], "those": [3, 42], "start": [2, 3, 25, 29, 35, 37, 54, 87, 90, 98, 99, 117, 119, 123, 124, 130, 133], "which": [3, 4, 13, 15, 25, 26, 36, 37, 44, 89, 99, 102, 110, 111, 118, 119, 123, 133], "reserv": [3, 26], "intern": [3, 16, 41], "my_oper": 3, "three": [3, 27, 36, 130], "type": [3, 5, 12, 13, 14, 19, 24, 29, 32, 46, 74, 75, 84, 118, 119, 129], "shell": [2, 3, 7, 8, 14, 21, 26, 38, 40, 42, 75, 85, 86, 90, 99, 133], "repres": [3, 14, 15, 20, 98, 133], "string": [3, 7, 19, 21, 24, 51, 74, 92, 99, 119], "OR": [3, 133], "echo": [2, 3, 25, 40, 75, 86, 116, 121, 133], "fileuploadcommand": [3, 7], "filedownloadcommand": [3, 7], "functioncommand": [3, 7], "args_list": 3, "kwargs_dict": 3, "addition": 3, "overrid": [3, 15, 32, 89, 119, 124], "most": [3, 26, 36, 87, 133], "_sudo": [3, 24, 25, 31, 85, 86, 87, 89, 99, 133], "syntax": [3, 86, 99], "path": [2, 3, 19, 25, 36, 44, 54, 74, 85, 88, 99, 102, 110, 115, 118, 119, 133], "some": [2, 3, 25, 26, 40, 41, 86, 92, 99, 132, 133], "simplifi": 3, "version": [2, 3, 4, 8, 35, 45, 47, 49, 50, 51, 55, 56, 64, 66, 67, 68, 69, 72, 75, 76, 81, 91, 92, 93, 95, 96, 97, 101, 103, 107, 109, 110, 111, 112, 127, 129, 133], "creat": [3, 4, 24, 27, 29, 35, 89, 90, 97, 98, 99, 102, 110, 113, 118, 119, 121, 123, 127, 128, 129, 133], "remov": [3, 26, 29, 36, 91, 92, 93, 95, 96, 97, 98, 99, 100, 101, 102, 103, 105, 106, 107, 109, 110, 111, 112, 113, 117, 118, 119, 120, 121, 126, 127, 129], "remot": [3, 13, 16, 25, 30, 38, 40, 44, 54, 75, 86, 92, 97, 99, 102, 119, 121, 127, 129], "base": [3, 5, 6, 7, 8, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 29, 30, 35, 36, 99, 105, 131, 133], "present": [3, 14, 36, 91, 92, 93, 95, 96, 97, 98, 99, 100, 101, 102, 103, 105, 106, 107, 109, 110, 111, 112, 113, 118, 119, 120, 121, 126, 127, 128, 129], "kwarg": [3, 5, 6, 7, 8, 11, 13, 14, 16, 18, 19, 116], "should": [3, 14, 26, 35, 37, 86, 87, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 117, 119, 120, 121, 122, 123, 124, 126, 127, 128, 129, 133], "exist": [3, 19, 26, 29, 44, 54, 63, 74, 92, 97, 98, 99, 102, 103, 105, 110, 113, 117, 118, 119, 121, 124, 127, 128, 129, 133], "info": [3, 14, 38, 39, 53, 75, 78, 133], "get_fact": [2, 3, 13, 14, 36, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 92, 97, 127, 133], "Not": 3, "rais": [3, 12, 116, 133], "operationerror": [3, 12], "0": [3, 7, 8, 18, 19, 24, 25, 32, 40, 41, 55, 59, 72, 75, 76, 78, 84, 92, 99, 102, 115, 119, 120, 123, 133], "format": [3, 7, 40, 53, 74, 92, 98, 99], "doesn": [3, 54, 99, 133], "t": [3, 5, 13, 14, 36, 54, 86, 92, 97, 99, 111, 117, 119, 127, 129, 133], "we": [2, 3, 4, 25, 36, 40, 41, 89, 99, 115], "want": [3, 27, 44, 90, 99], "touch": [3, 92, 99], "don": [3, 92, 99, 119], "elif": [3, 41], "rm": 3, "either": [3, 19, 25, 29, 99, 106, 113, 115, 133], "process": [3, 13], "The": [3, 4, 8, 11, 13, 16, 20, 24, 25, 26, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 39, 54, 85, 86, 87, 89, 99, 103, 105, 113, 116, 119, 130], "handler": [3, 5, 18], "anyth": [3, 25, 86], "normal": [3, 11, 89], "dict": [3, 5, 13, 14, 18, 19, 32, 45, 47, 49, 50, 51, 56, 59, 60, 61, 63, 64, 65, 66, 67, 68, 69, 70, 72, 73, 75, 78, 79, 80, 81, 99], "mai": [3, 44, 88, 89, 99, 118], "valu": [0, 3, 5, 12, 15, 18, 19, 25, 33, 36, 43, 44, 75, 89, 98, 99, 102, 118, 119], "error": [3, 12, 18, 21, 24], "occur": 3, "dure": [3, 12, 24, 37, 119, 133], "collect": [3, 13, 15, 25, 40, 86, 133], "requires_command": [3, 13], "variabl": [3, 5, 20, 24, 33, 43, 75, 85, 89, 99, 111, 119, 133], "specifi": [3, 24, 32, 33, 54, 72, 74, 91, 92, 93, 95, 96, 97, 99, 101, 102, 105, 107, 110, 112, 117, 118, 119, 127, 129], "must": [3, 25, 26, 29, 30, 33, 74, 92, 119], "avail": [3, 24, 27, 59, 75, 87, 89, 91, 111, 117, 130, 133], "If": [3, 24, 37, 44, 54, 74, 85, 87, 88, 89, 92, 97, 99, 119, 127, 129, 133], "empti": [3, 15, 54, 74, 92], "For": [3, 25, 33, 41, 44, 89, 99, 117, 123, 131, 133], "htop": [3, 36], "boolean": [3, 17, 18, 74, 75, 77, 90], "declar": 3, "attribut": [3, 13, 14, 133], "factbas": [3, 13, 14], "swapen": 3, "swapon": 3, "show": [3, 26, 99, 119], "len": 3, "have": [3, 21, 24, 36, 39, 99, 102, 103, 106, 117, 119, 121], "is_swap_en": 3, "found": [2, 3, 44, 54, 58, 78, 99], "given": [3, 19, 64, 65, 75, 89, 99, 118, 119], "findfil": [3, 44, 99], "point": [0, 3, 99], "recurs": [3, 54, 99, 102, 128], "find": [3, 54, 132], "list_of_fil": 3, "somewher": 3, "raw": [3, 75, 99, 119], "rawcommandoutput": 3, "n": [3, 25, 116], "join": [3, 116], "re": [3, 11, 86, 87, 99], "command_output": 3, "design": [4, 25, 40, 131], "follow": [0, 4, 25, 26, 29, 32, 33, 89, 92, 97, 111, 127, 133], "go": [4, 129], "consist": [4, 16], "inventori": [2, 4, 9, 12, 14, 18, 27, 31, 32, 34, 36, 37, 39, 42, 85, 86, 87, 90, 121], "plu": [4, 25], "config": [2, 4, 5, 18, 32, 36, 38, 90, 99, 119, 124], "flag": [4, 7, 18, 26, 44, 89, 90, 119], "now": [4, 25, 26, 86], "add_op": [2, 4, 16], "add_deploi": [4, 11], "done": [4, 89, 99], "run_op": [2, 4, 17], "best": [4, 37, 97, 127], "action": [4, 133], "main": [2, 4, 46, 84, 92, 102, 133], "py": [2, 4, 11, 21, 25, 31, 32, 36, 38, 39, 41, 42, 43, 44, 86, 89, 106, 113, 133], "arguments_typ": 4, "connect": [2, 4, 12, 14, 18, 24, 25, 27, 32, 36, 38, 86, 106, 113, 118, 121, 122], "connector": [4, 12, 14, 25, 26, 35, 87, 89, 99], "fact": [2, 4, 12, 14, 24, 25, 26, 35, 85, 87, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129], "util": [4, 14], "context": [4, 5, 13, 19, 74, 85, 116, 118, 133], "progress": 4, "allargu": [5, 14, 16, 18], "metaargu": 5, "executionargu": 5, "str": [5, 7, 8, 11, 13, 14, 15, 16, 17, 18, 19, 21, 24, 29, 32], "argumentmeta": 5, "descript": [5, 14, 19, 24, 29, 32, 75, 97, 127, 129], "callabl": [5, 7, 11, 13, 14, 16, 18, 19, 24], "typeddict": 5, "generate_env": 5, "pop_global_argu": 5, "keys_to_check": 5, "list": [5, 13, 14, 15, 16, 18, 19, 21, 24, 26, 27, 33, 41, 42, 46, 47, 52, 54, 55, 59, 60, 62, 66, 72, 75, 76, 82, 84, 86, 87, 89, 91, 92, 93, 95, 96, 97, 98, 99, 100, 101, 106, 107, 109, 110, 111, 112, 116, 119, 120, 124, 126, 127, 129, 132, 133], "pop": 5, "keyword": [5, 24, 32, 99, 116], "prefer": 5, "order": [0, 5, 15, 86, 87], "direct": [5, 25, 92], "being": [5, 99], "pyinfraoper": [6, 16], "p": [6, 16, 99], "protocol": [6, 74, 103, 118], "src": [7, 58, 89, 92, 93, 97, 99, 102, 106, 113, 119, 127, 129, 133], "dest": [7, 89, 99, 102, 106, 113, 133], "pyinfracommand": [7, 18], "connector_argu": 7, "func_kwarg": 7, "maskstr": 7, "quotestr": 7, "obj": [7, 9, 11, 16, 17, 19], "rsynccommand": 7, "bit": [7, 19, 99], "_separ": 7, "get_masked_valu": 7, "get_raw_valu": 7, "make_formatted_string_command": 7, "helper": 7, "script": [7, 25, 35, 48, 78, 90, 123], "split": [7, 21], "shlex": 7, "each": [2, 7, 24, 27, 36, 44, 63, 86, 89, 119], "curl_command": 7, "curl": [7, 99], "sslf": 7, "o": [2, 7, 36, 43, 44, 52, 82, 94, 111, 119, 131, 133], "configdefault": 8, "get_current_st": 8, "lock_current_st": 8, "reset_locked_st": 8, "set_current_st": 8, "config_st": 8, "connect_timeout": 8, "int": [8, 14, 15, 16, 18, 19, 24, 32], "10": [8, 26, 59, 88, 99, 105, 117, 119], "default_temp_dir": 8, "tmp": [8, 99, 106, 113, 119, 121], "doa": [8, 24], "doas_us": 8, "fail_perc": [8, 18], "ignore_error": [8, 19, 21], "parallel": [8, 9, 24, 25, 29, 30, 36], "preserve_sudo_env": 8, "preserve_su_env": 8, "require_packag": [8, 133], "require_pyinfra_vers": [8, 133], "sh": [8, 24, 25, 35, 93], "sudo_password": 8, "sudo_us": [8, 99, 113], "su_shel": 8, "su_us": 8, "temp_dir": 8, "use_sudo_login": [8, 115], "use_su_login": [8, 115], "check_pyinfra_vers": 8, "check_require_packag": 8, "requirements_config": 8, "connect_al": [2, 9], "all": [2, 5, 9, 11, 15, 16, 17, 24, 26, 27, 32, 34, 35, 36, 39, 41, 42, 43, 53, 58, 73, 87, 89, 90, 91, 92, 93, 97, 98, 99, 106, 109, 112, 113, 119, 126, 127, 129, 131, 133], "write": [9, 27, 35, 44, 87, 90, 99, 118, 119, 133], "paramet": [9, 11, 15, 16, 17, 21], "disconnect_al": 9, "get_all_connector": 10, "get_execution_connector": 10, "come": [11, 26, 119], "form": [11, 99], "disk": [11, 119, 128], "eg": [11, 13, 25, 51, 89, 92, 99, 103, 121, 123, 125], "latter": 11, "usabl": 11, "across": [11, 17, 37, 130, 133], "extens": [11, 99, 103], "creation": [11, 102, 116], "openstack": 11, "deploy_func": 11, "prepar": [11, 16, 18, 36, 99], "add": [0, 11, 16, 25, 26, 36, 88, 91, 92, 93, 96, 97, 99, 101, 102, 103, 105, 106, 109, 110, 112, 113, 118, 119, 121, 127, 129], "ie": [11, 13, 16, 32, 35, 89, 97, 127, 129], "pyinfra_": 11, "packag": [11, 31, 35, 36, 40, 43, 44, 45, 47, 49, 50, 51, 55, 56, 64, 66, 67, 68, 69, 72, 76, 81, 85, 86, 87, 88, 89, 133], "insid": [11, 41, 110, 133], "wide": 11, "argumenttypeerror": 12, "pyinfraerror": 12, "typeerror": 12, "when": [12, 14, 21, 24, 25, 26, 85, 86, 89, 92, 97, 99, 102, 103, 119, 123, 127, 129, 133], "invalid": 12, "connecterror": 12, "fail": [12, 18, 36, 73, 88], "connectordatatypeerror": 12, "ha": [12, 24, 26, 46, 74, 75, 96, 119, 132, 133], "deployerror": 12, "sub": [12, 98], "facterror": 12, "gather": [12, 87], "stage": [12, 18, 36, 39], "unabl": 12, "facttypeerror": 12, "factvalueerror": 12, "valueerror": 12, "inventoryerror": 12, "relat": [12, 75, 118], "noconnectorerror": 12, "request": [12, 35, 40, 41, 99, 132], "miss": 12, "nogrouperror": [12, 15], "keyerror": 12, "nohosterror": [12, 15], "operationtypeerror": 12, "operationvalueerror": 12, "diff": [13, 16, 86, 87], "desir": [13, 36, 86, 118], "produc": 13, "final": [2, 13, 26], "note": [2, 13, 25, 30, 74, 92, 96, 97, 99, 101, 105, 111, 115, 118, 119, 126, 127, 130], "doe": [13, 54, 74, 99, 105, 110, 118, 119], "out": [13, 24, 25, 27, 36, 44, 90, 99, 133], "give": [13, 110, 119], "me": 13, "ip": [13, 33, 80, 98, 99, 103], "b": 13, "while": [13, 78, 130], "static": [13, 15, 18], "iter": [13, 14, 15, 18, 24, 119], "process_pipelin": 13, "shell_execut": 13, "shortfactbas": [13, 14], "process_data": 13, "cl": 13, "ensure_host": 13, "apply_failed_host": 13, "get_host_fact": 13, "get_short_fact": 13, "short_fact": 13, "connector_cl": 14, "ssh": [14, 21, 25, 33, 35, 77, 86, 89, 90, 99, 103, 119], "sshconnector": 14, "thin": 14, "link": [14, 44, 90, 102, 117, 119, 123], "up": [2, 14, 38, 59, 86, 98, 99, 119, 121], "check_can_rsync": 14, "reason": [14, 36, 130], "show_error": 14, "raise_except": [14, 90], "connector_data": 14, "current_deploy_data": 14, "current_deploy_kwarg": 14, "current_deploy_nam": 14, "current_op_deploy_data": 14, "current_op_global_argu": 14, "current_op_hash": 14, "in_deploi": 14, "instead": [14, 16, 24, 92, 99, 110, 119, 133], "disconnect": [14, 18, 36], "executing_op_hash": 14, "get_deploy_data": 14, "name_or_cl": 14, "get": [2, 14, 15, 19, 20, 24, 25, 27, 35, 36, 37, 41, 44, 59, 87, 89, 90, 92, 97, 127, 133], "cach": [14, 19, 92], "get_temp_filenam": 14, "hash_kei": 14, "hash_filenam": 14, "properti": [14, 16, 19, 92, 128], "group_data": [14, 39, 41, 43, 89], "host_data": 14, "in_callback_op": 14, "in_op": 14, "init": [14, 18, 25, 48, 78, 86, 94, 108, 119, 123, 124], "log": [14, 25, 103, 133], "messag": [14, 99, 116], "log_func": 14, "bound": [14, 32], "logger": [14, 38, 133], "warn": [14, 26, 99], "log_styl": 14, "loop": 14, "loop_posit": 14, "nested_executing_op_hash": 14, "noop": [14, 25], "print_prefix": 14, "rsync": [14, 90], "style_print_prefix": 14, "condit": [14, 36, 133], "hostdata": 14, "attrdata": 14, "search": [14, 117], "kei": [0, 14, 20, 24, 29, 32, 44, 46, 52, 58, 75, 82, 89, 90, 98, 102, 119, 121, 129], "override_data": [14, 15], "extract_callable_data": 14, "union": [14, 24], "names_data": 15, "store": [15, 89, 99], "access": [2, 15, 26, 41, 89, 110, 120, 133], "dictionari": [15, 19, 24, 33, 59, 75, 77, 99, 110], "ssh_": 15, "deprec": [15, 26, 59, 75, 92], "winrm_": 15, "map": [15, 24, 74, 77, 98, 118, 125], "get_data": 15, "attach": [15, 89, 98, 119], "get_group": 15, "belong": [15, 66, 103], "get_group_data": 15, "singl": [15, 25, 32, 36, 53, 73, 99], "get_groups_data": 15, "aggreg": 15, "var": [15, 25, 40, 73, 92, 99, 117, 133], "twice": 15, "last": 15, "hold": [15, 111], "get_host": [15, 133], "get_host_data": 15, "hostnam": [15, 25, 32, 33, 41, 44, 63, 85, 87, 89, 90, 106, 113, 121, 125, 133], "get_override_data": 15, "iter_activated_host": 15, "over": [15, 25, 32, 36, 86, 99, 121], "activ": [15, 18, 32, 77, 89, 119], "iter_active_host": 15, "len_activated_host": 15, "number": [15, 24, 32, 59, 74, 85, 119, 133], "len_active_host": 15, "make_hosts_and_group": 15, "extract_name_data": 15, "core": [16, 76, 78], "wrapper": 16, "intercept": 16, "against": [16, 25, 26, 29, 86, 87, 89, 99, 106, 113], "run": [2, 16, 17, 24, 25, 26, 27, 29, 30, 34, 35, 36, 38, 40, 42, 62, 73, 80, 86, 91, 92, 93, 94, 97, 98, 99, 104, 108, 109, 112, 115, 116, 117, 118, 119, 121, 122, 123, 124, 126, 127, 129, 133], "later": 16, "__main__": 16, "operationmeta": [2, 16, 18], "hash": [16, 19, 54, 99], "is_chang": 16, "did_chang": [16, 36, 133], "did_error": 16, "did_not_chang": 16, "did_succe": 16, "is_complet": 16, "set_complet": 16, "combined_output": 16, "stderr_lin": 16, "stdout_lin": 16, "op_func": 16, "attach_arg": 16, "op_meta": [16, 19], "ensure_shared_op_meta": 16, "op_hash": [16, 17, 18], "op_ord": [16, 18], "global_argu": [16, 18], "execute_immedi": 16, "generate_operation_nam": 16, "func": [16, 19], "get_operation_name_from_func": 16, "is_idempot": 16, "idempotent_notic": 16, "is_deprec": 16, "deprecated_for": 16, "_set_in_op": 16, "simpl": [16, 25, 36, 86, 99, 119, 130], "turn": 16, "represent": 16, "su": [16, 24, 109], "_user": 16, "env": [16, 25, 39, 110], "solve_operation_consist": 16, "run_host_op": 17, "serial": 17, "no_wait": 17, "manner": 17, "wait": [17, 90, 117], "between": [17, 26, 32, 54, 99, 119, 133], "basestatecallback": 18, "host_before_connect": 18, "host_connect": 18, "host_connect_error": 18, "host_disconnect": 18, "operation_end": 18, "operation_host_error": 18, "operation_host_start": 18, "operation_host_success": 18, "operation_start": 18, "check_for_chang": 18, "activate_host": 18, "add_callback_handl": 18, "current_deploy_filenam": 18, "current_exec_filenam": 18, "current_op_file_numb": 18, "current_stag": 18, "statestag": 18, "cwd": [18, 21], "fail_host": 18, "hosts_to_fail": 18, "activated_count": 18, "get_meta_for_host": 18, "statehostmeta": 18, "get_op_data_for_host": 18, "stateoperationhostdata": 18, "get_op_meta": 18, "stateoperationmeta": [18, 19], "get_op_ord": 18, "get_results_for_host": 18, "statehostresult": 18, "get_warning_count": 18, "increment_warning_count": 18, "initial_limit": 18, "initialis": 18, "is_execut": 18, "is_host_in_limit": 18, "limit": [18, 42, 75, 103, 113, 119], "pool": [18, 44], "print_fact_info": 18, "print_fact_input": 18, "print_fact_output": 18, "print_noop_info": 18, "set_op_data_for_host": 18, "op_data": 18, "set_stag": 18, "should_check_for_chang": 18, "should_raise_failed_host": 18, "stage_warn": 18, "trigger_callback": 18, "method_nam": 18, "op": [2, 18], "ops_chang": 18, "ops_no_chang": 18, "error_op": 18, "ignored_error_op": 18, "partial_op": 18, "success_op": 18, "command_gener": 18, "operation_meta": 18, "parent_op_hash": 18, "intenum": 18, "enumer": 18, "5": [18, 26, 32, 33, 63, 123], "4": [18, 33, 76, 92, 103, 120, 123], "format_except": 19, "e": [19, 35, 87, 98, 102, 119, 128, 133], "get_call_loc": 19, "frame_offset": 19, "get_caller_frameinfo": 19, "get_file_io": 19, "mode": [19, 20, 26, 35, 54, 75, 77, 85, 99, 133], "rb": 19, "processor": 19, "open": [19, 106, 119, 131], "close": 19, "leav": [19, 29, 92], "alon": 19, "cache_kei": 19, "get_file_path": 19, "get_file_sha1": 19, "calcul": 19, "sha1": [19, 54, 99], "buffer": [19, 24], "handl": [19, 86, 99, 103, 119], "larger": 19, "get_kwargs_str": 19, "get_operation_order_from_stack": 19, "get_path_permissions_mod": 19, "pathnam": 19, "permiss": [19, 85, 96, 99], "integ": [19, 99], "get_templ": 19, "jinja2": [19, 99], "templat": [19, 90, 113, 119, 125, 133], "log_error_or_warn": 19, "continue_on_error": 19, "log_host_command_error": 19, "timeout": [19, 24, 117], "log_operation_start": 19, "op_typ": 19, "prefix": [19, 24, 74, 89, 103], "make_hash": 19, "arbitrari": [19, 25, 106, 113], "nest": 19, "id": [19, 29, 40, 46, 55, 58, 75, 76, 92, 97, 105, 127], "memoiz": 19, "print_host_combined_output": 19, "raise_if_bad_typ": 19, "type_": 19, "message_prefix": 19, "sha1_hash": 19, "try_int": 19, "contextobject": 20, "contextmanag": 20, "specif": [20, 24, 25, 26, 34, 60, 98, 102, 106, 119, 122, 133], "throughout": 20, "alwai": [20, 36, 86, 91, 92, 93, 96, 97, 98, 99, 106, 109, 110, 112, 113, 114, 115, 116, 117, 119, 121, 122, 125, 126, 127, 129, 133], "context_cl": 20, "isset": 20, "reset": 20, "set_bas": 20, "localcontextobject": 20, "init_base_class": 20, "includ": [21, 33, 37, 42], "splitlin": 21, "subprocess": [2, 21, 25, 31], "progress_spinn": 22, "item": [22, 75, 119], "prefix_messag": 22, "its": [24, 25, 35, 46, 124, 128], "With": 24, "avoid": 24, "clash": 24, "_sudo_us": [24, 85, 89, 133], "non": [24, 99], "root": [24, 28, 74, 75, 99, 110, 118], "_use_sudo_login": [24, 85], "login": [24, 85, 113], "_sudo_password": [24, 26], "password": [24, 32, 43, 75, 89, 99, 106, 113, 119], "need": [0, 2, 24, 25, 26, 32, 38, 40, 85, 86, 88, 92, 117, 118, 119, 132, 133], "prompt": 24, "_preserve_sudo_env": [24, 85], "preserv": [24, 85], "environ": [24, 37, 43, 75, 85, 87, 98, 99, 110, 111], "_su_us": 24, "_use_su_login": 24, "_preserve_su_env": 24, "_su_shel": 24, "_su": 24, "onli": [24, 25, 26, 31, 36, 44, 73, 75, 86, 89, 97, 99, 103, 111, 119, 123, 127, 129, 133], "under": [24, 89, 99], "linux": [24, 26, 31, 35, 48, 75, 86, 92, 97, 99, 109, 119, 123, 127, 131, 133], "nologin": 24, "similar": 24, "_doa": 24, "_doas_us": 24, "my": [24, 25, 32, 34, 40, 86, 125], "secret": [24, 37, 58, 99], "_shell_execut": [24, 133], "_chdir": 24, "switch": [24, 133], "befor": [24, 26, 36, 38, 40, 91, 92, 93, 97, 99, 102, 109, 112, 118, 119, 121, 126, 127, 129], "_env": [24, 87], "_success_exit_cod": 24, "exit": [24, 25, 78], "_timeout": 24, "_get_pti": 24, "pseudotti": 24, "_stdin": 24, "send": [24, 131], "stdin": 24, "bootstrap": [24, 133], "param": 24, "openssl": 24, "dhparam": 24, "pem": 24, "4096": [24, 46, 58], "ssl": [24, 99], "cert": 24, "_ignore_error": 24, "_continue_on_error": 24, "continu": [24, 35, 99], "after": [2, 24, 25, 99, 102, 106, 117], "_if": [24, 36, 133], "_parallel": 24, "batch": 24, "_run_onc": 24, "onc": [24, 36, 38], "first": [24, 26, 36, 40, 86, 89, 99, 117], "_serial": [24, 87], "rather": [24, 102, 110, 133], "than": [24, 98, 102, 110, 133], "extrem": [25, 87], "power": [25, 87], "page": [25, 26, 27, 86, 87, 99, 132], "usag": [25, 35], "net": [25, 32, 41, 86, 89, 121, 125], "comma": 25, "separ": [25, 42, 89, 99], "deploy_web": 25, "deploy_db": 25, "home": [2, 25, 44, 99, 102, 119, 121, 128, 133], "exec": [25, 86], "hello": [25, 46, 58, 86, 116, 119, 120], "world": [25, 86, 116, 120], "linuxnam": [25, 44, 133], "By": [25, 89, 92, 111, 117, 119], "high": 25, "inform": [25, 43, 44, 46, 51, 54, 55, 58, 72, 75, 76, 99, 133], "increas": [25, 26], "v": [25, 75, 99, 119], "well": [25, 27, 37, 40, 48], "x": [2, 25, 35, 92, 102, 123, 131], "alreadi": [25, 86, 92, 99, 102, 110, 121], "vv": 25, "vvv": 25, "both": [25, 27, 54, 86, 89, 99, 133], "support": [25, 26, 78, 88, 99, 123], "rang": [25, 98], "load": [25, 38, 89, 90, 119, 133], "cento": [25, 26, 52, 75, 82, 86, 97, 99, 123, 127, 133], "8": [25, 26, 29, 30, 70, 75, 86, 103, 119, 129], "time": [25, 35, 36, 38, 75, 86, 89, 92, 99, 102, 117, 119, 130, 133], "match": [25, 36, 54, 89, 99, 118], "glob": [25, 89], "style": [25, 26, 89], "pattern": [25, 37, 54, 87, 133], "app_serv": [25, 41, 89], "db": [25, 36, 41, 89, 113], "my_command_goes_her": 25, "right": [25, 133], "hand": [25, 132], "side": [25, 26, 37, 75, 99], "One": [25, 41, 88, 130], "top": 25, "featur": [25, 26, 41, 132], "abil": 25, "real": 25, "perfect": [25, 38], "larg": [25, 99], "elasticsearch": [25, 85], "cluster": 25, "stream": 25, "achiev": [25, 40, 43, 133], "easili": 25, "tail": 25, "builtin": 25, "here": [2, 25, 36, 37, 41, 87, 92, 121, 130, 133], "ensur": [25, 36, 40, 86, 88, 91, 92, 93, 95, 96, 97, 99, 101, 102, 107, 109, 110, 111, 112, 116, 119, 126, 127, 129, 133], "ubuntu": [25, 26, 29, 30, 44, 46, 75, 80, 86, 89, 92, 105, 123, 133], "updat": [2, 25, 26, 31, 36, 40, 90, 95, 96, 99, 101, 102, 103, 106, 107, 110, 111, 113, 118, 119, 122, 123, 133], "inventory2": 25, "yum": [25, 44, 90, 99, 133], "box": [25, 27], "control": [25, 29, 32, 85, 87, 98, 99, 110, 117, 123, 133], "boot": [25, 94, 104, 108, 117, 119, 122, 124], "coupl": 25, "wai": [25, 87, 120, 124, 133], "adhoc": 25, "assum": [25, 40, 89, 92, 96, 99, 101, 102, 119], "reboot_timeout": [25, 119], "delai": [25, 32, 36, 119], "bash_profil": [25, 115], "profil": 25, "bash": [2, 25, 75, 119], "sourc": [2, 25, 46, 51, 92, 97, 99, 102, 103, 127, 129, 130], "complet": [25, 36, 99, 119], "zsh": 25, "were": [25, 131], "_pyinfra_complet": 25, "bash_sourc": 25, "zsh_sourc": 25, "guarante": 26, "offer": [26, 78], "where": [26, 99, 103, 111, 117, 121, 133], "semant": [26, 47], "rule": [26, 60, 90], "mean": [2, 26, 32, 41, 86, 89, 99, 119, 133], "break": [26, 99, 133], "minor": [26, 47, 75], "Such": 26, "major": [26, 35, 47, 75, 97, 127], "due": 26, "next": [26, 36, 86], "releas": [26, 35, 75, 97, 99, 127, 129], "semver": 26, "latest": [26, 35, 88, 91, 92, 93, 95, 96, 97, 101, 107, 110, 111, 112, 120, 127, 129, 130], "previou": [26, 36], "new": [26, 27, 29, 32, 44, 86, 87, 90, 98, 99, 102, 113, 119, 132], "patch": [26, 47], "bug": 26, "fix": [26, 35], "work": [26, 35, 40, 54, 74, 89, 99, 102, 110, 111, 133], "anywher": [26, 89], "mac": [26, 93, 131], "window": [26, 35, 131], "To": [26, 35, 36, 86, 99, 119], "debug": [26, 36, 89], "explicitli": 26, "gevent": 26, "aim": [26, 36], "unix": [26, 131], "develop": [26, 35, 39, 88], "distro": [26, 92], "18": [26, 75, 86], "20": [26, 75, 123, 133], "debian": [26, 75, 92, 123], "9": [26, 76], "7": [26, 55, 88, 97, 127], "fedora": [26, 75, 123], "33": [26, 59], "alpin": [26, 29, 30, 91, 98], "bsd": [26, 48, 94, 111, 119], "flavour": 26, "openbsd": [26, 111, 119], "6": [26, 33, 88, 123], "freebsd": [26, 111], "12": [26, 55, 59], "netbsd": [26, 111], "hardenedbsd": 26, "11": [26, 59], "dragonflybsd": 26, "opensus": [26, 84, 129], "leap15": 26, "tumblewe": 26, "maco": [26, 31, 35, 75, 86], "15": [26, 92], "posix": [26, 119], "move": [26, 36, 99, 121], "lot": 26, "old": [26, 35, 99], "legaci": 26, "encount": 26, "seen": 26, "changelog": 26, "bring": 26, "again": [26, 36], "v2": [26, 129], "sens": 26, "replac": [26, 90], "wa": [26, 99, 121, 130], "confus": 26, "someshel": 26, "do": [27, 32, 36, 86, 92, 99, 119, 120, 133], "thing": [27, 36, 38, 86, 89], "vagrant": [27, 121], "check": [27, 32, 44, 54, 73, 78, 90, 91, 92, 93, 97, 105, 112, 119, 121, 127, 129, 132], "guid": [27, 44, 86, 87, 90], "popular": [27, 90], "chroot": 27, "dockerssh": 27, "allow": [28, 29, 30, 92, 113, 116, 118, 120, 133], "anoth": [28, 34, 40, 75, 121, 133], "imag": [29, 30, 53, 86, 90, 105], "save": [29, 86, 89, 99, 125, 133], "bionic": [29, 30, 75, 92], "2beb8c15a1b1": 29, "interact": [29, 32], "docker_identifi": 29, "beta": 30, "remotehost": 30, "compat": [31, 110, 119, 132], "ident": [32, 40, 119], "ssh_hostnam": [32, 33], "ssh_port": 32, "port": [32, 74, 90, 98, 99, 103, 106, 113, 115, 119, 121], "ssh_user": [32, 33, 89], "ssh_password": 32, "ssh_kei": [32, 89], "ssh_key_password": [32, 89], "ssh_allow_ag": 32, "agent": [32, 90, 130], "ssh_look_for_kei": 32, "look": [32, 36], "privat": 32, "ssh_forward_ag": 32, "forward": [32, 103], "ssh_config_fil": 32, "ssh_known_hosts_fil": 32, "known_host": [32, 99, 102, 121], "ssh_strict_host_key_check": 32, "strict": 32, "ssh_paramiko_connect_kwarg": 32, "paramiko": 32, "sshclient": 32, "ssh_connect_retri": 32, "tri": [32, 99], "ssh_connect_retry_min_delai": 32, "lower": 32, "random": [32, 40], "retri": 32, "float": 32, "ssh_connect_retry_max_delai": 32, "upper": 32, "share": [32, 39, 87, 98], "usernam": [32, 41, 106, 113], "ssh_usernam": [], "fetch": [33, 41, 85, 92], "flatten": 33, "json": [33, 41, 53], "server_group": 33, "server_group_node_ip": 33, "would": [33, 36, 39, 119], "extra": [33, 99, 103], "statu": [34, 40, 61, 65, 73, 74, 78, 79, 116], "vm": [34, 39, 119, 128], "thank": 35, "third": 35, "parti": 35, "pull": [35, 89, 98, 102], "help": [35, 78, 86], "expand": [35, 66, 99], "growth": 35, "ad": [2, 26, 35, 59, 87, 89, 99, 102, 115, 117, 130, 133], "There": [35, 133], "per": [35, 89, 122], "track": [35, 102, 120], "off": [35, 74], "unless": [35, 36, 86, 92, 99, 119, 133], "virtualenv": [35, 90], "choic": 35, "m": [35, 119], "venv": [35, 90], "pyenv": 35, "clone": [35, 102], "repo": [35, 40, 57, 84, 89, 90, 99], "git": [35, 44, 86, 89, 90], "github": [35, 37, 39, 89, 93, 102, 129, 130, 131, 133], "com": [2, 35, 39, 40, 44, 46, 58, 88, 89, 92, 93, 97, 99, 102, 119, 121, 127, 128, 129, 131], "fizzadar": [39, 89, 102], "edit": [35, 88, 99, 102, 119, 124], "cd": 35, "pip": [35, 44, 86, 90], "suit": 35, "part": [35, 59, 99, 119], "pytest": 35, "cov": 35, "coverag": 35, "expect": [35, 36, 78, 115], "drop": [26, 35, 103, 113], "overal": 35, "project": [0, 35, 38, 42, 93, 131], "select": [35, 63, 88], "e2": 35, "yet": [2, 35], "end_to_end_loc": 35, "end_to_end_ssh": 35, "end_to_end_dock": 35, "sphinx": 35, "doc": [2, 35, 93, 99, 132], "view": 35, "localhost": [35, 63, 99, 106], "8000": 35, "http": [2, 35, 39, 40, 46, 52, 78, 82, 84, 88, 92, 93, 96, 97, 99, 100, 101, 102, 111, 120, 127, 129], "d": [35, 48, 78, 92, 94, 99, 122, 123, 124], "lint": 35, "flake8": 35, "black": 35, "isort": 35, "codestyl": [], "just": [38, 89, 93, 98], "five": 36, "phase": [36, 133], "determin": [36, 44, 86], "cleanup": 36, "step": [36, 86], "through": [36, 99], "goal": 36, "about": [0, 36, 54, 131, 133], "ll": 36, "depth": 36, "explain": 36, "why": 36, "critic": 36, "databas": [36, 42, 63, 70], "webserv": [36, 42, 119], "web_serv": [36, 41, 42], "web": [36, 41, 42, 99, 118], "01": 36, "02": 36, "03": 36, "db_server": [36, 41, 42, 89], "And": [2, 36, 39, 42], "iftop": [36, 85, 86], "cache_tim": [36, 92, 99], "3600": [36, 92], "postgr": [36, 44, 90, 133], "postgresql": [36, 44, 70, 89, 90, 113], "realli": 36, "slow": 36, "But": 36, "stop": [36, 86, 90, 98, 123], "until": [36, 92, 97, 98, 127, 129], "onto": 36, "sequenti": 36, "individu": [36, 86, 89, 133], "pg_hba": 36, "made": [36, 38, 86], "immut": [36, 133], "arch": [36, 44, 109, 111, 133], "absolut": [36, 133], "sure": [36, 132, 133], "let": [2, 36, 39], "bad": 36, "highlight": [36, 37, 133], "problem": [36, 116], "site": [36, 110], "rememb": [36, 99], "figur": 36, "correct": 36, "detail": [36, 75, 89, 113, 125, 133], "explan": 36, "evalu": 36, "becom": [36, 89, 125], "solut": [36, 88], "reli": 36, "second": [36, 86, 92, 99, 117, 119], "case": [36, 86, 87, 97, 99, 111, 126, 127], "noth": [36, 86], "reload": [36, 94, 108, 117, 119, 122, 123, 124], "outcom": 36, "remove_default_sit": 36, "sinc": [36, 99, 119], "exactli": 36, "checkout": [37, 102], "properli": 37, "introduc": 37, "folder": [37, 99, 102, 133], "structur": [37, 74, 111], "common": [37, 87, 92, 99, 133], "practic": 37, "client": 37, "asset": 37, "dynam": 37, "role": [37, 70, 74, 90, 133], "often": 38, "pre": 38, "compil": [38, 88], "place": [38, 99, 103], "perform": 38, "kind": [38, 133], "yarn": 38, "alongsid": 38, "pick": [26, 38], "sai": [39, 133], "app": [39, 52, 55, 82, 89, 133], "wish": 39, "product": [39, 89], "dev": [39, 59, 74, 75], "good": [39, 86, 133], "layout": 39, "git_repo": 39, "differ": [32, 39, 44, 87, 99, 119], "git_branch": 39, "master": [39, 98, 102, 115], "around": 40, "idea": 40, "sometim": 40, "feed": 40, "mid": [40, 92, 97, 127, 129], "zeroti": 40, "authent": [40, 133], "authorize_serv": 40, "cat": 40, "lib": [40, 92], "public": [40, 58, 119], "assert": [40, 116], "ok": [40, 116], "server_id": 40, "author": 40, "respons": 40, "post": 40, "raise_for_statu": 40, "back": [26, 40, 99], "biggest": 41, "regular": 41, "result": [41, 133], "get_serv": 41, "mycompani": 41, "append": [41, 99, 103], "initi": 41, "without": [41, 91, 92, 93, 95, 96, 97, 99, 101, 107, 110, 112, 124, 127, 129], "master_db_serv": 41, "db_user": 41, "involv": [42, 99], "task": [42, 129, 133], "everywher": 42, "web1": 42, "web2": 42, "web3": 42, "db1": 42, "db2": 42, "db3": 42, "dbserver": 42, "encrypt": [43, 119], "sensit": [43, 97, 111, 126, 127], "privi": 43, "getpass": 43, "get_secret": 43, "encrypted_secret": 43, "pleas": [43, 59, 75, 131, 132], "peek": 43, "my_secret": 43, "altern": [43, 73, 89, 117], "might": 43, "top_secret_password": 43, "alter": [44, 63, 113], "popul": 44, "begin": [44, 54, 99], "test": [2, 44, 86, 88, 102, 111, 119, 130, 133], "myhost": 44, "date": [44, 86, 92, 99], "openssh": 44, "myhost2": 44, "deb": [44, 46, 90], "debpackag": [44, 92], "anotherfil": 44, "txt": [44, 121, 133], "leverag": 44, "namespac": 44, "shortcut": [44, 59, 75], "sidebar": 44, "apk": [44, 90], "apkpackag": [44, 91], "aptkei": [44, 92], "aptsourc": [44, 92], "brew": [44, 90], "brewcask": [44, 93], "brewpackag": [44, 93], "brewtap": [44, 93], "brewvers": [44, 93], "bsdinit": [44, 90], "rcdstatu": [44, 94], "cargo": [44, 90], "cargopackag": [44, 95], "choco": [44, 90], "chocopackag": [44, 96], "chocovers": 44, "debarch": 44, "dnf": [44, 86, 90, 127], "dnfrepositori": 44, "dockercontain": [44, 98], "dockerimag": 44, "dockernetwork": [44, 98], "dockersinglemixin": 44, "dockersysteminfo": 44, "finddirectori": 44, "findinfil": [44, 99, 119, 121], "findlink": [44, 123], "md5file": [44, 99], "sha1fil": [44, 99], "sha256fil": [44, 99], "socket": 44, "gem": [44, 90, 96], "gempackag": [44, 101], "gitbranch": [44, 102], "gitconfig": [44, 102], "gittrackingbranch": [44, 102], "gpg": [44, 46, 52, 82, 92, 97, 127, 129], "gpgkei": [44, 52, 82, 92, 97, 127, 129], "gpgsecretkei": 44, "hardwar": 44, "blockdevic": 44, "cpu": 44, "ipv4address": 44, "ipv4addr": 44, "ipv6address": 44, "ipv6addr": 44, "memori": 44, "networkdevic": 44, "iptabl": [44, 90], "ip6tableschain": [44, 103], "ip6tablesrul": [44, 103], "iptableschain": [44, 103], "iptablesrul": [44, 103], "launchd": [44, 90], "launchdstatu": [44, 104], "lxd": [44, 76, 90, 119, 120], "lxdcontain": [44, 105], "mysql": [44, 90], "mysqldatabas": [44, 106], "mysqlusergr": [44, 106], "mysqlus": [44, 106], "npm": [44, 90], "npmpackag": [44, 107], "openrc": [44, 90], "openrcen": [44, 108], "openrcstatu": [44, 108], "pacman": [44, 90], "pacmanpackag": [44, 109], "pacmanunpackgroup": [44, 109], "pip3packag": 44, "pippackag": [44, 110], "pkg": [44, 90, 91, 92, 93, 95, 96, 97, 101, 107, 109, 110, 127, 129], "pkgpackag": [44, 111], "pkgin": [44, 90], "pkginpackag": [44, 112], "postgresdatabas": [44, 113], "postgresrol": [44, 113], "postgresqldatabas": 44, "postgresqlrol": 44, "rpm": [44, 52, 82, 84, 90], "rpmpackag": [44, 97, 127, 129], "rpmpackageprovid": [44, 97, 127], "selinux": [44, 90], "filecontext": [44, 118], "filecontextmap": [44, 118], "seboolean": [44, 118], "seport": [44, 118], "crontab": [44, 90, 99], "hasgui": 44, "kernel": [44, 92, 119], "kernelmodul": [44, 119], "kernelvers": 44, "linuxdistribut": [44, 97, 123, 127], "linuxgui": 44, "lsbreleas": 44, "macosvers": 44, "mount": [44, 59, 90], "osvers": [44, 92, 111], "securitylimit": 44, "sysctl": [44, 90], "tmpdir": 44, "snap": [44, 90], "snapbasefact": 44, "snappackag": [44, 120], "systemden": [44, 122], "systemdstatu": [44, 122], "sysvinit": [44, 90], "initdstatu": [44, 123], "upstart": [44, 90], "upstartstatu": [44, 124], "vzctl": [44, 90], "openvzcontain": [44, 125], "xbp": [44, 90], "xbpspackag": [44, 126], "yumrepositori": 44, "zypper": [44, 90], "zypperrepositori": 44, "package_nam": [45, 47, 49, 50, 51, 56, 64, 66, 67, 68, 69, 72, 81], "keychain": [46, 58], "length": [46, 58], "uid": [46, 58, 75, 119], "oxygem": [46, 58], "url": [46, 58, 92, 93, 97, 99, 102, 115, 127, 129], "archiv": [46, 51], "org": [46, 52, 55, 78, 82, 84, 88, 92, 96, 97, 100, 101, 111, 127, 129], "distribut": [46, 75, 84, 123, 133], "trusti": 46, "compon": 46, "multivers": 46, "cask": [47, 90], "tap": [47, 90], "initd_statu": 48, "rc": [48, 94, 108, 122, 123, 124], "unlik": 48, "behav": 48, "trust": 48, "chocolatei": [50, 96], "architectur": [51, 75], "repositori": [51, 52, 82, 84, 91, 92, 93, 97, 102, 109, 111, 112, 126, 127, 129, 133], "amd64": [51, 88], "dpkg": 51, "releasev": [52, 82, 84], "baseurl": [52, 82, 84, 97, 127, 129], "mirror": [52, 82, 111], "contentdir": [52, 82], "basearch": [52, 82, 97, 127], "gpgcheck": [52, 82, 97, 127, 129], "pki": [52, 82], "centosoffici": [52, 82], "object_id": 53, "inspect": 53, "network": [53, 59, 90], "content": [54, 99, 118, 124], "marker": [54, 99], "possibli": [54, 73], "xrai": 54, "alpha": [54, 99], "644": [54, 85, 99, 133], "size": [54, 75, 128], "3928": 54, "quote_path": 54, "interpolate_vari": [54, 99, 119], "text": [54, 99, 133], "grep": [54, 99], "link_target": 54, "md5": [54, 99], "sha1sum": [54, 99], "doest": 54, "sha256": [54, 99], "keyr": 58, "fingerprint": 58, "abc": 58, "devic": [59, 75, 119], "sda1": 59, "39489508": 59, "used_perc": 59, "836392": 59, "40325900": 59, "interfac": [59, 103], "ipv4": [59, 98], "address": [59, 98, 99], "eth0": 59, "127": 59, "ipv6": [59, 98], "fe80": 59, "a00": 59, "27ff": 59, "mb": 59, "ipv4_address": 59, "ipv6_address": 59, "easier": 59, "tabl": [60, 63, 103, 106], "filter": [60, 98, 99, 103], "ip6tabl": [60, 103], "chain": [60, 90], "polici": [60, 103, 118], "prerout": [60, 103], "jump": [60, 103], "dnat": [60, 103], "mysql_us": [63, 106], "mysql_password": [63, 106], "mysql_host": [63, 106], "mysql_port": [63, 106], "associ": 63, "character_set": 63, "latin1": 63, "collation_nam": 63, "latin1_swedish_ci": 63, "grant": [63, 106], "privileg": [63, 74, 85, 90, 113, 118], "pyinfra_stuff": [63, 70, 106, 113], "insert": [63, 103], "max_connect": [63, 106], "runlevel": [65, 108, 123, 124], "virtual": [66, 110, 129], "psql_user": [70, 71, 113], "psql_password": [70, 71, 113], "psql_host": [70, 71, 113], "psql_port": [70, 71, 113], "metadata": [70, 133], "encod": [70, 113], "utf8": [70, 113], "collat": [70, 106], "en_u": [70, 75], "utf": [70, 75, 119], "ctype": 70, "super": 70, "createrol": [70, 113], "createdb": [70, 113], "my_packag": 72, "capabl": [72, 75], "system_u": 74, "object_r": 74, "default_t": 74, "s0": 74, "tcp": [74, 103, 118], "udp": [74, 103, 118], "dccp": [74, 118], "sctp": [74, 118], "been": [26, 74], "policycoreutil": 74, "definit": 74, "accord": 75, "unam": [75, 92], "cron": [75, 119], "minut": [75, 119], "hour": [75, 119], "month": [75, 119], "day_of_month": [75, 119], "day_of_week": [75, 119], "special_tim": [75, 119], "daili": [75, 77, 119], "datetim": 75, "gui": [75, 99], "module_nam": 75, "live": [75, 103], "gentoo": [75, 123], "04": [75, 86, 105, 133], "release_meta": [75, 97, 127], "codenam": 75, "focal": 75, "id_lik": 75, "c": [75, 88], "lsb_releas": 75, "lt": 75, "mv2": 75, "ext4": 75, "rw": 75, "relatim": 75, "renam": 75, "secur": [75, 119], "domain": [75, 119], "limit_typ": [75, 119], "soft": [75, 119], "nofil": [75, 119], "1048576": 75, "hard": [75, 99, 119], "memlock": 75, "unlimit": 75, "discov": [75, 87], "inotifi": 75, "max_queued_ev": 75, "16384": 75, "inod": 75, "44565": 75, "360": 75, "user_nam": [75, 77, 122], "comment": [75, 119], "bin": [2, 75, 99, 110, 119], "main_user_group": 75, "user_id": 75, "gid": [75, 119], "main_user_group_id": 75, "lastlog": 75, "last_login_tim": 75, "encrypted_password": 75, "publish": 76, "canon": 76, "j60k4jy0hppjwojw8dzdyc8obxkxujru": 76, "channel": [76, 120], "core18": 76, "core20": 76, "snapd": 76, "user_mod": [77, 122], "unit": [77, 122], "containerd": 77, "timer": [77, 122], "unfortun": 78, "mani": [78, 92], "misbehav": 78, "displai": 78, "refspec": 78, "linuxbas": 78, "lsb_3": 78, "lsb": 78, "iniscrptact": 78, "html": [2, 78, 98, 99], "openvz": [80, 125], "ctid": [80, 125], "666": 80, "ostempl": 80, "autorefresh": 84, "leap": 84, "oss": 84, "md": [84, 129], "faq": 85, "escal": 85, "someus": 85, "ing": [85, 86], "ownership": 85, "stuff": 86, "instruct": [86, 92, 133], "assign": [86, 89], "uptim": 86, "immedi": [86, 133], "quick": [86, 87, 132], "spin": 86, "what": [86, 99, 133], "won": [86, 92, 97, 111, 117, 127, 129], "becaus": [86, 88, 89, 123, 133], "vim": [86, 91, 92, 93, 97, 109, 111, 112, 119, 126, 127, 129], "httpd": 86, "report": [86, 132], "imageid": 86, "reus": 86, "commit": [86, 102], "think": [86, 89, 133], "ansibl": [86, 130], "playbook": 86, "chef": 86, "cookbook": 86, "my_host": 86, "subsequ": 86, "That": 86, "infrastructur": 87, "welcom": 87, "v3": [2, 87], "quickest": 87, "learn": [87, 133], "committ": 87, "hoc": [87, 130], "frequent": 87, "ask": [87, 132], "question": [87, 132], "answer": 87, "commonli": 87, "focu": 87, "index": [87, 89, 133], "terraform": 87, "g": [87, 98, 119, 128, 133], "redistribut": 87, "recommend": [35, 88, 91, 92], "windowsserver2019": 88, "www": [88, 92, 99, 100], "ex": [88, 92, 98], "administr": [88, 96, 117], "perhap": 88, "visual": 88, "studio": 88, "commun": [88, 132], "visualstudio": 88, "microsoft": 88, "desktop": 88, "least": 88, "msvc": 88, "v142": 88, "sdk": [55, 88], "cmake": 88, "atl": 88, "daemon": [89, 122], "data_dict": 89, "install_postgr": 89, "dir": [89, 99], "group_nam": 89, "receiv": 89, "app_us": [89, 133], "myuser": [89, 133], "app_dir": [89, 133], "opt": [89, 98, 133], "rel": [89, 99, 119, 133], "chdir": [26, 89], "basi": 89, "explor": 89, "some_kei": 89, "pretti": 89, "much": [89, 120], "necessari": [90, 99], "reach": 90, "categori": 90, "alphabet": 90, "upgrad": [90, 95, 96, 97, 101, 107, 110, 127, 129], "dist_upgrad": 90, "ppa": 90, "cask_upgrad": 90, "put": 90, "sync": 90, "bare_repo": 90, "worktre": 90, "dump": 90, "sql": 90, "puppet": 90, "file_context": 90, "file_context_map": 90, "modprob": 90, "reboot": 90, "script_templ": 90, "security_limit": 90, "user_authorized_kei": 90, "keyscan": [90, 102], "daemon_reload": 90, "delet": [90, 99], "restart": [90, 94, 104, 108, 117, 119, 122, 123, 124], "unmount": 90, "pin": [91, 92, 93, 95, 96, 97, 101, 107, 109, 110, 127, 129], "asterisk": [91, 92], "idempot": [91, 92, 93, 96, 97, 98, 99, 102, 106, 109, 112, 113, 114, 115, 116, 117, 119, 121, 122, 125, 126, 127, 129], "forc": [91, 92, 98, 99, 102, 119, 121, 125], "whole": 91, "ye": 92, "unmet": 92, "depend": [92, 133], "isn": [92, 97, 127, 129], "wget": [92, 99], "chrome": 92, "dl": [92, 97, 127], "googl": 92, "stable_current_amd64": 92, "emploi": 92, "dist": 92, "keyserv": 92, "keyid": 92, "virtualbox": 92, "oracle_vbox_2016": 92, "asc": 92, "no_recommend": 92, "allow_downgrad": 92, "extra_install_arg": [92, 97, 110, 127, 129], "extra_uninstall_arg": [92, 97, 127, 129], "downgrad": 92, "uninstal": [92, 97, 110, 127, 129], "period": 92, "stamp": 92, "upon": 92, "r": [92, 99, 118], "72": 92, "header": [92, 99], "softwar": 92, "bitcoin": 92, "hardi": 92, "contrib": 92, "auto_remov": 92, "autoremov": 92, "transit": 92, "longer": 92, "unneed": 92, "osx": 93, "godot": 93, "vimpag": [93, 119, 126], "includeo": 93, "equival": 93, "kptdev": 93, "kpt": 93, "ktr0731": 93, "evan": 93, "usr": [94, 98, 99, 102, 110], "custom": [0, 94, 104, 108, 117, 119, 122, 124], "disabl": [94, 99, 104, 108, 117, 119, 122, 123, 124], "aka": [95, 107], "rust": 95, "notepad": 96, "notepadplusplu": 96, "linux_id": [97, 127], "clean": [97, 127, 129], "nobest": [97, 127], "enhanc": [97, 127, 129], "verbos": [97, 127, 129], "valid": [97, 127, 129], "manual": [97, 98, 118, 123, 124, 127, 129], "construct": [97, 127, 129], "ce": [97, 99, 127], "dockerc": [97, 127], "ore": [97, 127, 129], "major_centos_vers": 97, "epel": [97, 127], "fedoraproject": [97, 127], "pub": [97, 111, 127], "noarch": [97, 127], "surround": 99, "appropri": 99, "backup": [99, 119], "escape_regex_charact": 99, "try_prevent_shell_expans": 99, "regex": 99, "escap": 99, "charact": 99, "prevent": [99, 119], "mark": 99, "prepend": 99, "expans": 99, "awk": 99, "quot": 99, "entri": [0, 99, 119], "red": 99, "mar": 99, "n10": 99, "bodi": 99, "alia": 99, "zshrc": 99, "eval": 99, "thefuck": 99, "alias": 99, "force_backup": 99, "force_backup_dir": 99, "dir_that_we_want_remov": 99, "myweb": [99, 119], "netboot": 99, "tftp": 99, "nf": 99, "sha256sum": 99, "md5sum": 99, "insecur": 99, "proxi": [98, 99], "even": [99, 102, 121], "checksum": 99, "verif": 99, "yourproxi": 99, "create_remote_dir": 99, "755": 99, "umask": 99, "600": [99, 119], "clear": 99, "librari": 99, "visibl": 99, "hidden": 99, "veri": 99, "uchg": 99, "schg": 99, "add_deploy_dir": [99, 119], "create_local_dir": 99, "suitabl": 99, "whocar": 99, "sed": 99, "ensure_newlin": 99, "entir": [99, 133], "interpol": [99, 119], "swap": 99, "special": [99, 119], "iso": 99, "taken": 99, "seper": [], "newlin": 99, "mainten": 99, "maintenance_lin": 99, "down": [73, 99, 117], "FOR": 99, "motd": 99, "Then": 99, "ro": 99, "no_wdelai": 99, "insecure_lock": 99, "no_root_squash": 99, "no_subtree_check": 99, "python3": 99, "sudoer": 99, "nopasswd": 99, "doubl": 99, "quotaus": 99, "addus": 99, "conf": [99, 119], "symbol": 99, "recreat": 99, "issue2": 99, "issu": [99, 132], "assume_exist": 99, "dai": [98, 99, 119], "stringio": 99, "verboten": 99, "forbidden": 99, "binari": 99, "ax": [], "automat": [99, 117, 124], "stricthostkeycheck": 99, "dir_mod": 99, "exclud": 99, "exclude_dir": 99, "pyc": 99, "node_modul": 99, "interpret": [99, 110], "tempdir": 99, "fnmatch": 99, "behind": 99, "scene": 99, "treat": 99, "howev": 99, "deep": 99, "__pycache__": 99, "convent": 99, "suffix": 99, "j2": [99, 119, 133], "somefil": 99, "foo_vari": 99, "foo": [99, 118], "foo_dict": 99, "str1": 99, "str2": 99, "foo_list": 99, "dict_cont": 99, "list_cont": 99, "endfor": 99, "yml": 99, "rubi": 101, "rubygem": 101, "rspec": 101, "bare": 102, "chown": 102, "multi_valu": 102, "anon": 102, "mous": 102, "branch": 102, "rebas": 102, "ssh_keyscan": [102, 121], "update_submodul": 102, "recursive_submodul": 102, "submodul": 102, "detach": 102, "new_branch": 102, "commitish": 102, "from_remote_branch": 102, "assume_repo_exist": 102, "tree": 102, "head": 102, "identifi": [98, 102, 105, 119], "unclean": 102, "hotfix": 102, "4e091aa0": 102, "origin": 102, "not_protocol": 103, "not_sourc": 103, "destin": 103, "not_destin": 103, "in_interfac": 103, "not_in_interfac": 103, "out_interfac": 103, "not_out_interfac": 103, "to_destin": 103, "to_sourc": 103, "to_port": 103, "log_prefix": 103, "destination_port": 103, "source_port": 103, "incom": 103, "outgo": 103, "rout": [98, 103], "snat": 103, "redirect": 103, "physdev": 103, "traffic": 103, "22": [59, 74, 103, 121], "nat": 103, "53": 103, "8080": 103, "launchctl": 104, "16": 105, "absent": [105, 113], "ubuntu19": 105, "19": 105, "four": [106, 113], "charset": 106, "user_hostnam": 106, "user_privileg": 106, "mysql_": 106, "attempt": [113, 119], "mysqldump": 106, "pyinfra_stuff_copi": [106, 113], "flush": 106, "with_grant_opt": 106, "require_ciph": 106, "require_issu": 106, "require_subject": 106, "max_queries_per_hour": 106, "max_updates_per_hour": 106, "max_connections_per_hour": 106, "cannot": 118, "detect": 119, "somepassword": 113, "resourc": [120, 133], "50": [], "certif": [], "x509": [], "se": [], "st": [], "stockholm": [], "edh": [], "rsa": [], "de": 59, "cbc3": [], "sha": [], "node": 107, "j": 107, "sy": 109, "plugin": 109, "fugit": 109, "virtualenv_kwarg": 110, "site_packag": 110, "always_copi": 110, "symlink": [110, 117], "standard": 110, "pkg_": 111, "variant": 111, "elsewher": 111, "pkg_path": 111, "autogener": 111, "ftp": 111, "offici": [111, 131, 132], "helpfulli": 111, "addon": 111, "tmux": 112, "psql": 113, "owner": 113, "lc_collat": 113, "lc_ctype": 113, "tablespac": 113, "connection_limit": 113, "psql_": 113, "pg_dump": 113, "superus": 113, "inherit": 113, "replic": 113, "success_exit_cod": 115, "my_callback": 116, "callback": [116, 133], "notimplementederror": 116, "bool_nam": 118, "persist": [118, 119], "apach": 118, "ldap": 118, "httpd_can_network_connect": 118, "se_typ": 118, "express": 118, "bar": 118, "serv": 118, "httpd_sys_content_t": 118, "restorecon": 118, "port_num": 118, "2222": 118, "http_port_t": 118, "care": 119, "cron_nam": 119, "whose": 119, "cronjob": 119, "futur": [2, 119], "overwrit": 119, "week": 119, "nicknam": 119, "uniqu": 119, "weekli": 119, "tar": 119, "cf": 119, "etc_bup": 119, "backup_etc": 119, "groupid": 119, "wheel": 119, "luser": 119, "hostnamectl": 119, "older": [98, 119], "hostname_fil": 119, "perman": 119, "matter": 119, "auto": [90, 119], "mynam": 119, "server1": 119, "en_gb": 119, "unload": 119, "silli": 119, "floppi": 119, "fs_type": 119, "remount": 119, "fstab": 119, "presenc": 119, "relev": 119, "reconnect": 119, "interv": 119, "300": 119, "total": 119, "60": 119, "some_var": 119, "hello2": 119, "blah": 119, "wildcard": 119, "nproc": 119, "1024": 119, "persist_fil": 119, "max": 119, "100000": 119, "authorized_kei": 119, "public_kei": 119, "delete_kei": 119, "ensure_hom": 119, "create_hom": 119, "primari": 119, "secondari": 119, "skeleton": 119, "account": 119, "userid": 119, "geco": 119, "duplic": 119, "newli": 119, "kevin": 119, "bob": 119, "authorized_key_directori": 119, "authorized_key_filenam": 119, "ed25519": 119, "netstat": 119, "80": [98, 119, 123], "snapcraft": 120, "classic": 120, "confin": 120, "tradit": 120, "correspond": 120, "vlc": [55, 100, 120], "neovim": 120, "nvim": 120, "scp": 121, "local_filenam": 121, "rescan": 121, "use_remote_sudo": 121, "systemctl": 122, "session": 122, "dnsmasq": 122, "logrot": 122, "rcx": 123, "y": [123, 126], "start_prior": 123, "stop_prior": 123, "start_level": 123, "stop_level": 123, "prioriti": 123, "d_enabl": 123, "finer": 123, "rsyslog": 123, "sysv": 123, "mess": 123, "certain": [123, 133], "rhel": 123, "chkconfig": 123, "granular": 123, "job": 124, "fiddl": 124, "vztctl": 125, "u": 126, "pager": 126, "major_vers": 127, "extra_global_install_arg": 129, "extra_global_uninstall_arg": 129, "field": 129, "opensuse_tumblewe": 129, "task_linux_amd64": 129, "less": 130, "2024": 130, "benchmark": 130, "fabric": 130, "act": 130, "closer": 130, "opentyp": 131, "font": 131, "complement": 131, "san": 131, "famili": 131, "afdko": 131, "makeotf": 131, "suggest": 131, "maintain": 131, "frank": 131, "grie\u00dfhamm": 131, "mailto": 131, "opensourcefont": 131, "adob": 131, "subject": 131, "consider": 131, "background": 131, "readm": 131, "chat": 132, "matrix": 132, "room": 132, "stack": 132, "overflow": 132, "tag": [98, 102, 132], "scan": 132, "referenc": 132, "anyon": 132, "els": 132, "submit": 132, "fantast": 132, "tell": 133, "cover": 133, "retriev": 133, "At": 133, "flow": 133, "plane": 133, "retreiv": [], "nano": 133, "db_host": 133, "db_hostnam": 133, "yaml": 133, "myapp": 133, "meta": 133, "create_us": 133, "awai": 133, "runtim": 133, "got": 133, "scenario": 133, "install_someth": 133, "overridden": 133, "great": 133, "pend": 2, "_inner": 3, "all_global_argu": 5, "_raise_if_not_complet": 16, "will_chang": 16, "nonetyp": 24, "enforc": 35, "mypi": 35, "pyright": 35, "though": 35, "handi": 35, "dockervolum": [44, 98], "runit": [44, 90], "runitmanag": [44, 117], "runitstatu": [44, 117], "volum": [44, 53, 90], "svdir": [73, 117], "agetti": 73, "tty1": 73, "dhcpcd": 73, "wpa_supplic": 73, "prune": 90, "wait_runsv": 90, "env_var": 98, "pull_alwai": 98, "expos": 98, "varibl": 98, "inject": 98, "contan": 98, "nginx_data": 98, "driver": 98, "gatewai": 98, "ip_rang": 98, "ipam_driv": 98, "subnet": 98, "scope": 98, "ipam_opt": 98, "label": 98, "ingress": 98, "network_nam": 98, "alloc": [98, 128], "cidr": 98, "segment": 98, "ipam": 98, "swarm": 98, "mesh": 98, "unus": 98, "dangl": 98, "ones": 98, "anonym": 98, "24h": 98, "90": 98, "2160h": 98, "storag": 98, "sourcedir": 117, "sv": 117, "effect": 117, "although": 117, "still": 117, "runsv": 117, "ON": 118, "NOT": 92, "wiki": 92, "debianrepositori": 92, "usethirdparti": 92, "jinja_env_kwarg": [19, 99], "flatpak": [44, 90], "flatpakbasefact": 44, "flatpakpackag": [44, 100], "zf": [44, 90], "dataset": [44, 90], "snapshot": [44, 90], "signal": 55, "ref": 55, "x86_64": 55, "gnome": 55, "platform": 55, "kde": 55, "libreoffic": 55, "videolan": [55, 100], "jinja": 99, "render": 99, "kodi": 100, "tv": 100, "destroi": 128, "dataset_nam": 128, "spars": 128, "volume_s": 128, "parent": 128, "child": 128, "extra_prop": 128, "prop": 128, "merg": 128, "conveni": 128, "tank": 128, "srv": 128, "mountpoint": 128, "compress": 128, "lz4": 128, "sun": 128, "auto_snapshot": 128, "db_srv_04": 128, "32g": 128, "old_vers": 128, "fs_name": 128, "snapshot_nam": 128, "weekly_backup": 128, "volume_nam": 128, "create_otherus": 133, "otherus": 133, "lamba": 133, "lambda": 133, "gain": 0, "knowledg": 0, "snippet": 0, "module_path": 0, "class_nam": 0, "pyinfra_custom_connector": 0, "loggingconnector": 0, "en": 2, "apidoc": 2, "result1": 2, "result2": 2, "whoami": 2, "_use_sudo_password": 26, "mydeploi": 26, "winrm": 26, "minimum": 26, "concept": 26, "ambigu": 26, "magic": 26, "enp1s0": 59, "ether": 59, "34": 59, "56": 59, "78": 59, "9a": 59, "bc": 59, "mtu": 59, "1500": 59, "192": 59, "168": 59, "100": 59, "mask_bit": 59, "24": 59, "netmask": 59, "255": 59, "2001": 59, "db8": 59, "85a3": 59, "8a2e": 59, "370": 59, "7334": 59, "64": 59, "additional_ip": 59, "1234": 59, "5678": 59, "9abc": 59, "def0": 59, "incusbr0": 59, "BE": 59, "ef": 59, "ca": 59, "fe": 59, "dead": 59, "beef": 59, "cafe": 59, "babe": 59, "lo": 59, "65536": 59, "128": 59, "veth98806fd6": 59, "aa": 59, "bb": 59, "cc": 59, "dd": 59, "ee": 59, "ff": 59, "vethda29df81": 59, "44": 59, "55": 59, "66": 59, "wlo1": 59, "77": 59, "88": 59, "99": 59, "unknown": 59, "ssh_port_t": 74, "regist": 102, "never": 102}, "objects": {"pyinfra.api": [[5, 0, 0, "-", "arguments"], [6, 0, 0, "-", "arguments_typed"], [7, 0, 0, "-", "command"], [8, 0, 0, "-", "config"], [9, 0, 0, "-", "connect"], [10, 0, 0, "-", "connectors"], [11, 0, 0, "-", "deploy"], [12, 0, 0, "-", "exceptions"], [13, 0, 0, "-", "facts"], [14, 0, 0, "-", "host"], [15, 0, 0, "-", "inventory"], [16, 0, 0, "-", "operation"], [17, 0, 0, "-", "operations"], [18, 0, 0, "-", "state"], [19, 0, 0, "-", "util"]], "pyinfra.api.arguments": [[5, 1, 1, "", "AllArguments"], [5, 1, 1, "", "ArgumentMeta"], [5, 1, 1, "", "ConnectorArguments"], [5, 1, 1, "", "ExecutionArguments"], [5, 1, 1, "", "MetaArguments"], [5, 3, 1, "", "all_global_arguments"], [5, 3, 1, "", "generate_env"], [5, 3, 1, "", "pop_global_arguments"]], "pyinfra.api.arguments.AllArguments": [[5, 2, 1, "", "name"]], "pyinfra.api.arguments.ArgumentMeta": [[5, 2, 1, "", "default"], [5, 2, 1, "", "description"], [5, 2, 1, "", "handler"]], "pyinfra.api.arguments.MetaArguments": [[5, 2, 1, "", "name"]], "pyinfra.api.arguments_typed": [[6, 1, 1, "", "PyinfraOperation"]], "pyinfra.api.command": [[7, 1, 1, "", "FileDownloadCommand"], [7, 1, 1, "", "FileUploadCommand"], [7, 1, 1, "", "FunctionCommand"], [7, 1, 1, "", "MaskString"], [7, 1, 1, "", "PyinfraCommand"], [7, 1, 1, "", "QuoteString"], [7, 1, 1, "", "RsyncCommand"], [7, 1, 1, "", "StringCommand"], [7, 3, 1, "", "make_formatted_string_command"]], "pyinfra.api.command.FileDownloadCommand": [[7, 4, 1, "", "execute"]], "pyinfra.api.command.FileUploadCommand": [[7, 4, 1, "", "execute"]], "pyinfra.api.command.FunctionCommand": [[7, 4, 1, "", "execute"]], "pyinfra.api.command.PyinfraCommand": [[7, 2, 1, "", "connector_arguments"], [7, 4, 1, "", "execute"]], "pyinfra.api.command.QuoteString": [[7, 2, 1, "", "obj"]], "pyinfra.api.command.RsyncCommand": [[7, 4, 1, "", "execute"]], "pyinfra.api.command.StringCommand": [[7, 4, 1, "", "execute"], [7, 4, 1, "", "get_masked_value"], [7, 4, 1, "", "get_raw_value"]], "pyinfra.api.config": [[8, 1, 1, "", "Config"], [8, 1, 1, "", "ConfigDefaults"], [8, 3, 1, "", "check_pyinfra_version"], [8, 3, 1, "", "check_require_packages"]], "pyinfra.api.config.Config": [[8, 4, 1, "", "copy"], [8, 4, 1, "", "get_current_state"], [8, 4, 1, "", "lock_current_state"], [8, 4, 1, "", "reset_locked_state"], [8, 4, 1, "", "set_current_state"]], "pyinfra.api.config.ConfigDefaults": [[8, 2, 1, "", "CONNECT_TIMEOUT"], [8, 2, 1, "", "DEFAULT_TEMP_DIR"], [8, 2, 1, "", "DOAS"], [8, 2, 1, "", "DOAS_USER"], [8, 2, 1, "", "FAIL_PERCENT"], [8, 2, 1, "", "IGNORE_ERRORS"], [8, 2, 1, "", "PARALLEL"], [8, 2, 1, "", "PRESERVE_SUDO_ENV"], [8, 2, 1, "", "PRESERVE_SU_ENV"], [8, 2, 1, "", "REQUIRE_PACKAGES"], [8, 2, 1, "", "REQUIRE_PYINFRA_VERSION"], [8, 2, 1, "", "SHELL"], [8, 2, 1, "", "SUDO"], [8, 2, 1, "", "SUDO_PASSWORD"], [8, 2, 1, "", "SUDO_USER"], [8, 2, 1, "", "SU_SHELL"], [8, 2, 1, "", "SU_USER"], [8, 2, 1, "", "TEMP_DIR"], [8, 2, 1, "", "USE_SUDO_LOGIN"], [8, 2, 1, "", "USE_SU_LOGIN"]], "pyinfra.api.connect": [[9, 3, 1, "", "connect_all"], [9, 3, 1, "", "disconnect_all"]], "pyinfra.api.connectors": [[10, 3, 1, "", "get_all_connectors"], [10, 3, 1, "", "get_execution_connector"], [10, 3, 1, "", "get_execution_connectors"]], "pyinfra.api.deploy": [[11, 3, 1, "", "add_deploy"], [11, 3, 1, "", "deploy"]], "pyinfra.api.exceptions": [[12, 5, 1, "", "ArgumentTypeError"], [12, 5, 1, "", "ConnectError"], [12, 5, 1, "", "ConnectorDataTypeError"], [12, 5, 1, "", "DeployError"], [12, 5, 1, "", "FactError"], [12, 5, 1, "", "FactTypeError"], [12, 5, 1, "", "FactValueError"], [12, 5, 1, "", "InventoryError"], [12, 5, 1, "", "NoConnectorError"], [12, 5, 1, "", "NoGroupError"], [12, 5, 1, "", "NoHostError"], [12, 5, 1, "", "OperationError"], [12, 5, 1, "", "OperationTypeError"], [12, 5, 1, "", "OperationValueError"], [12, 5, 1, "", "PyinfraError"]], "pyinfra.api.facts": [[13, 1, 1, "", "FactBase"], [13, 1, 1, "", "ShortFactBase"], [13, 3, 1, "", "get_fact"], [13, 3, 1, "", "get_facts"], [13, 3, 1, "", "get_host_fact"], [13, 3, 1, "", "get_short_facts"]], "pyinfra.api.facts.FactBase": [[13, 2, 1, "", "abstract"], [13, 2, 1, "", "command"], [13, 4, 1, "", "default"], [13, 2, 1, "", "name"], [13, 4, 1, "", "process"], [13, 4, 1, "", "process_pipeline"], [13, 4, 1, "", "requires_command"], [13, 2, 1, "", "shell_executable"]], "pyinfra.api.facts.ShortFactBase": [[13, 2, 1, "", "fact"], [13, 2, 1, "", "name"], [13, 4, 1, "", "process_data"]], "pyinfra.api.host": [[14, 1, 1, "", "Host"], [14, 1, 1, "", "HostData"], [14, 3, 1, "", "extract_callable_datas"]], "pyinfra.api.host.Host": [[14, 2, 1, "", "T"], [14, 4, 1, "", "arguments"], [14, 4, 1, "", "check_can_rsync"], [14, 4, 1, "", "connect"], [14, 2, 1, "", "connected"], [14, 2, 1, "", "connector"], [14, 2, 1, "", "connector_cls"], [14, 2, 1, "", "connector_data"], [14, 2, 1, "", "current_deploy_data"], [14, 2, 1, "", "current_deploy_kwargs"], [14, 2, 1, "", "current_deploy_name"], [14, 2, 1, "", "current_op_deploy_data"], [14, 2, 1, "", "current_op_global_arguments"], [14, 2, 1, "", "current_op_hash"], [14, 4, 1, "", "deploy"], [14, 4, 1, "", "disconnect"], [14, 2, 1, "", "executing_op_hash"], [14, 4, 1, "", "get_deploy_data"], [14, 4, 1, "", "get_fact"], [14, 4, 1, "", "get_file"], [14, 4, 1, "", "get_temp_filename"], [14, 6, 1, "", "group_data"], [14, 6, 1, "", "host_data"], [14, 2, 1, "", "in_callback_op"], [14, 2, 1, "", "in_deploy"], [14, 2, 1, "", "in_op"], [14, 4, 1, "", "init"], [14, 4, 1, "", "log"], [14, 4, 1, "", "log_styled"], [14, 4, 1, "", "loop"], [14, 2, 1, "", "loop_position"], [14, 2, 1, "", "nested_executing_op_hash"], [14, 4, 1, "", "noop"], [14, 6, 1, "", "print_prefix"], [14, 4, 1, "", "put_file"], [14, 4, 1, "", "rsync"], [14, 4, 1, "", "run_shell_command"], [14, 2, 1, "", "state"], [14, 4, 1, "", "style_print_prefix"], [14, 4, 1, "", "when"]], "pyinfra.api.host.HostData": [[14, 4, 1, "", "dict"], [14, 4, 1, "", "get"], [14, 2, 1, "", "override_datas"]], "pyinfra.api.inventory": [[15, 1, 1, "", "Inventory"], [15, 3, 1, "", "extract_name_data"]], "pyinfra.api.inventory.Inventory": [[15, 4, 1, "", "empty"], [15, 4, 1, "", "get_data"], [15, 4, 1, "", "get_group"], [15, 4, 1, "", "get_group_data"], [15, 4, 1, "", "get_groups_data"], [15, 4, 1, "", "get_host"], [15, 4, 1, "", "get_host_data"], [15, 4, 1, "", "get_override_data"], [15, 4, 1, "", "iter_activated_hosts"], [15, 4, 1, "", "iter_active_hosts"], [15, 4, 1, "", "len_activated_hosts"], [15, 4, 1, "", "len_active_hosts"], [15, 4, 1, "", "make_hosts_and_groups"], [15, 2, 1, "", "state"]], "pyinfra.api.operation": [[16, 1, 1, "", "OperationMeta"], [16, 3, 1, "", "add_op"], [16, 3, 1, "", "attach_args"], [16, 3, 1, "", "ensure_shared_op_meta"], [16, 3, 1, "", "execute_immediately"], [16, 3, 1, "", "generate_operation_name"], [16, 3, 1, "", "get_operation_name_from_func"], [16, 3, 1, "", "operation"], [16, 3, 1, "", "solve_operation_consistency"]], "pyinfra.api.operation.OperationMeta": [[16, 6, 1, "", "changed"], [16, 4, 1, "", "did_change"], [16, 4, 1, "", "did_error"], [16, 4, 1, "", "did_not_change"], [16, 4, 1, "", "did_succeed"], [16, 6, 1, "", "executed"], [16, 4, 1, "", "is_complete"], [16, 4, 1, "", "set_complete"], [16, 6, 1, "", "stderr"], [16, 6, 1, "", "stderr_lines"], [16, 6, 1, "", "stdout"], [16, 6, 1, "", "stdout_lines"], [16, 6, 1, "", "will_change"]], "pyinfra.api.operations": [[17, 3, 1, "", "run_host_op"], [17, 3, 1, "", "run_ops"]], "pyinfra.api.state": [[18, 1, 1, "", "BaseStateCallback"], [18, 1, 1, "", "State"], [18, 1, 1, "", "StateHostMeta"], [18, 1, 1, "", "StateHostResults"], [18, 1, 1, "", "StateOperationHostData"], [18, 1, 1, "", "StateOperationMeta"], [18, 1, 1, "", "StateStage"]], "pyinfra.api.state.BaseStateCallback": [[18, 4, 1, "", "host_before_connect"], [18, 4, 1, "", "host_connect"], [18, 4, 1, "", "host_connect_error"], [18, 4, 1, "", "host_disconnect"], [18, 4, 1, "", "operation_end"], [18, 4, 1, "", "operation_host_error"], [18, 4, 1, "", "operation_host_start"], [18, 4, 1, "", "operation_host_success"], [18, 4, 1, "", "operation_start"]], "pyinfra.api.state.State": [[18, 4, 1, "", "activate_host"], [18, 4, 1, "", "add_callback_handler"], [18, 2, 1, "", "check_for_changes"], [18, 2, 1, "", "config"], [18, 2, 1, "", "current_deploy_filename"], [18, 2, 1, "", "current_exec_filename"], [18, 2, 1, "", "current_op_file_number"], [18, 2, 1, "", "current_stage"], [18, 2, 1, "", "cwd"], [18, 4, 1, "", "fail_hosts"], [18, 4, 1, "", "get_meta_for_host"], [18, 4, 1, "", "get_op_data_for_host"], [18, 4, 1, "", "get_op_meta"], [18, 4, 1, "", "get_op_order"], [18, 4, 1, "", "get_results_for_host"], [18, 4, 1, "", "get_warning_counter"], [18, 4, 1, "", "increment_warning_counter"], [18, 4, 1, "", "init"], [18, 2, 1, "", "initialised"], [18, 2, 1, "", "inventory"], [18, 2, 1, "", "is_executing"], [18, 4, 1, "", "is_host_in_limit"], [18, 2, 1, "", "pool"], [18, 2, 1, "", "print_fact_info"], [18, 2, 1, "", "print_fact_input"], [18, 2, 1, "", "print_fact_output"], [18, 2, 1, "", "print_input"], [18, 2, 1, "", "print_noop_info"], [18, 2, 1, "", "print_output"], [18, 4, 1, "", "set_op_data_for_host"], [18, 4, 1, "", "set_stage"], [18, 4, 1, "", "should_check_for_changes"], [18, 2, 1, "", "should_raise_failed_hosts"], [18, 2, 1, "", "stage_warnings"], [18, 4, 1, "", "trigger_callbacks"]], "pyinfra.api.state.StateHostMeta": [[18, 2, 1, "", "op_hashes"], [18, 2, 1, "", "ops"], [18, 2, 1, "", "ops_change"], [18, 2, 1, "", "ops_no_change"]], "pyinfra.api.state.StateHostResults": [[18, 2, 1, "", "error_ops"], [18, 2, 1, "", "ignored_error_ops"], [18, 2, 1, "", "ops"], [18, 2, 1, "", "partial_ops"], [18, 2, 1, "", "success_ops"]], "pyinfra.api.state.StateOperationHostData": [[18, 2, 1, "", "command_generator"], [18, 2, 1, "", "global_arguments"], [18, 2, 1, "", "operation_meta"], [18, 2, 1, "", "parent_op_hash"]], "pyinfra.api.state.StateOperationMeta": [[18, 2, 1, "", "args"], [18, 2, 1, "", "global_arguments"], [18, 2, 1, "", "names"], [18, 2, 1, "", "op_order"]], "pyinfra.api.state.StateStage": [[18, 2, 1, "", "Connect"], [18, 2, 1, "", "Disconnect"], [18, 2, 1, "", "Execute"], [18, 2, 1, "", "Prepare"], [18, 2, 1, "", "Setup"]], "pyinfra.api.util": [[19, 3, 1, "", "format_exception"], [19, 3, 1, "", "get_call_location"], [19, 3, 1, "", "get_caller_frameinfo"], [19, 1, 1, "", "get_file_io"], [19, 3, 1, "", "get_file_path"], [19, 3, 1, "", "get_file_sha1"], [19, 3, 1, "", "get_kwargs_str"], [19, 3, 1, "", "get_operation_order_from_stack"], [19, 3, 1, "", "get_path_permissions_mode"], [19, 3, 1, "", "get_template"], [19, 3, 1, "", "log_error_or_warning"], [19, 3, 1, "", "log_host_command_error"], [19, 3, 1, "", "log_operation_start"], [19, 3, 1, "", "make_hash"], [19, 3, 1, "", "memoize"], [19, 3, 1, "", "print_host_combined_output"], [19, 3, 1, "", "raise_if_bad_type"], [19, 3, 1, "", "sha1_hash"], [19, 3, 1, "", "try_int"]], "pyinfra.api.util.get_file_io": [[19, 6, 1, "", "cache_key"], [19, 2, 1, "", "filename_or_io"], [19, 2, 1, "", "mode"]], "pyinfra": [[20, 0, 0, "-", "context"], [21, 0, 0, "-", "local"], [22, 0, 0, "-", "progress"], [23, 0, 0, "-", "version"]], "pyinfra.context": [[20, 1, 1, "", "ContextManager"], [20, 1, 1, "", "ContextObject"], [20, 1, 1, "", "LocalContextObject"], [20, 1, 1, "", "container"], [20, 3, 1, "", "init_base_classes"]], "pyinfra.context.ContextManager": [[20, 4, 1, "", "get"], [20, 4, 1, "", "isset"], [20, 4, 1, "", "reset"], [20, 4, 1, "", "set"], [20, 4, 1, "", "set_base"], [20, 4, 1, "", "use"]], "pyinfra.context.container": [[20, 2, 1, "", "module"]], "pyinfra.local": [[21, 3, 1, "", "include"], [21, 3, 1, "", "shell"]], "pyinfra.progress": [[22, 3, 1, "", "progress_spinner"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:attribute", "3": "py:function", "4": "py:method", "5": "py:exception", "6": "py:property"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "attribute", "Python attribute"], "3": ["py", "function", "Python function"], "4": ["py", "method", "Python method"], "5": ["py", "exception", "Python exception"], "6": ["py", "property", "Python property"]}, "titleterms": {"write": [0, 3], "connector": [0, 10, 27, 28, 29, 30, 31, 32, 33, 34], "inventori": [0, 15, 25, 41, 89, 133], "execut": [0, 24, 25, 40], "packag": [1, 25, 90, 91, 92, 93, 95, 96, 97, 100, 101, 107, 109, 110, 111, 112, 119, 120, 126, 127, 129], "deploi": [1, 11, 37, 40, 86, 87], "exampl": [1, 2, 3, 25, 32, 37, 133], "global": [1, 24, 89, 133], "argument": [1, 3, 5, 24, 25, 89, 133], "data": [1, 29, 32, 39, 41, 89, 133], "us": [2, 3, 25, 36, 43, 85, 87, 133], "api": [2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], "fact": [3, 13, 36, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 133], "oper": [3, 16, 17, 24, 25, 26, 36, 85, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 133], "input": 3, "output": [3, 133], "command": [3, 7, 25, 75, 86, 121], "manag": [3, 25, 117], "file": [3, 54, 85, 89, 99, 133], "import": 3, "get": [3, 85, 86, 99, 131], "swap": 3, "statu": 3, "list": 3, "directori": [3, 54, 85, 99], "ani": 3, "from": [3, 26], "refer": [4, 87], "core": 4, "pyinfra": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 26, 36, 43, 86, 87], "modul": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 26], "arguments_typ": 6, "config": [8, 102, 133], "connect": [9, 89], "except": 12, "host": [14, 36, 85, 89, 133], "state": [18, 86], "util": 19, "context": 20, "local": [21, 27, 31, 75, 119], "progress": 22, "version": [23, 26], "privileg": [24, 106], "user": [24, 75, 86, 106, 119], "escal": 24, "shell": [24, 25, 119], "control": [24, 26], "featur": 24, "meta": 24, "callback": 24, "strategi": 24, "cli": 25, "option": 25, "verbos": 25, "limit": [25, 89], "ad": [25, 86], "hoc": [25, 86], "debug": 25, "distribut": 25, "servic": [25, 94, 104, 108, 117, 119, 122, 123, 124], "reboot": [25, 119], "addit": 25, "info": 25, "autocomplet": 25, "compat": 26, "system": [26, 90], "editor": 26, "integr": 26, "pycharm": 26, "remot": 26, "upgrad": [26, 91, 92, 93, 109, 112, 126], "0": 26, "x": 26, "1": 26, "renam": 26, "name": [26, 85], "index": [27, 44, 90], "ssh": [27, 32, 121], "docker": [27, 29, 53, 86, 98], "terraform": [27, 33], "chroot": 28, "usag": [28, 29, 30, 31, 33, 34], "avail": [29, 32], "dockerssh": 30, "vagrant": 34, "contribut": [35, 132], "guid": 35, "branch": 35, "dev": 35, "setup": 35, "test": 35, "unit": 35, "end": 35, "gener": 35, "document": [35, 87], "code": 35, "style": 35, "how": [36, 85, 87], "work": [36, 87], "detect": 36, "chang": [36, 133], "order": 36, "when": 36, "doe": 36, "thi": 36, "matter": 36, "check": [35, 36], "client": 38, "side": 38, "asset": 38, "across": 39, "multipl": [39, 133], "environ": 39, "dynam": [40, 41], "dure": 40, "group": [42, 75, 89, 119, 133], "role": [42, 113, 114], "secret": 43, "apk": [45, 91], "apkpackag": 45, "apt": [46, 92], "aptkei": 46, "aptsourc": 46, "brew": [47, 93], "brewcask": 47, "brewpackag": 47, "brewtap": 47, "brewvers": 47, "bsdinit": [48, 94], "rcdstatu": 48, "cargo": [49, 95], "cargopackag": 49, "choco": [50, 96], "chocopackag": 50, "chocovers": 50, "deb": [51, 92], "debarch": 51, "debpackag": 51, "dnf": [52, 97], "dnfrepositori": 52, "dockercontain": 53, "dockerimag": 53, "dockernetwork": 53, "dockersinglemixin": 53, "dockersysteminfo": 53, "block": [54, 99], "finddirectori": 54, "findfil": 54, "findinfil": 54, "findlink": 54, "flag": [54, 99], "link": [54, 85, 99], "md5file": 54, "sha1fil": 54, "sha256fil": 54, "socket": 54, "gem": [56, 101], "gempackag": 56, "git": [57, 102], "gitbranch": 57, "gitconfig": 57, "gittrackingbranch": 57, "gpg": 58, "gpgkei": 58, "gpgsecretkei": 58, "hardwar": 59, "blockdevic": 59, "cpu": 59, "ipv4address": 59, "ipv4addr": 59, "ipv6address": 59, "ipv6addr": 59, "memori": 59, "networkdevic": 59, "iptabl": [60, 103], "ip6tableschain": 60, "ip6tablesrul": 60, "iptableschain": 60, "iptablesrul": 60, "launchd": [61, 104], "launchdstatu": 61, "lxd": [62, 105], "lxdcontain": 62, "mysql": [63, 106], "mysqldatabas": 63, "mysqlusergr": 63, "mysqlus": 63, "npm": [64, 107], "npmpackag": 64, "openrc": [65, 108], "openrcen": 65, "openrcstatu": 65, "pacman": [66, 109], "pacmanpackag": 66, "pacmanunpackgroup": 66, "pip": [67, 88, 110], "pip3packag": 67, "pippackag": 67, "pkg": [68, 111], "pkgpackag": 68, "pkgin": [69, 112], "pkginpackag": 69, "postgr": [70, 113], "postgresdatabas": 70, "postgresrol": 70, "postgresql": [71, 114], "postgresqldatabas": 71, "postgresqlrol": 71, "rpm": [72, 97, 127, 129], "rpmpackag": 72, "rpmpackageprovid": 72, "selinux": [74, 75, 118], "filecontext": 74, "filecontextmap": 74, "seboolean": 74, "seport": 74, "server": [75, 119], "arch": 75, "crontab": [75, 119], "date": 75, "hasgui": 75, "home": 75, "hostnam": [75, 119], "kernel": 75, "kernelmodul": 75, "kernelvers": 75, "linuxdistribut": 75, "linuxgui": 75, "linuxnam": 75, "lsbreleas": 75, "macosvers": 75, "mount": [75, 119, 125], "o": 75, "osvers": 75, "path": 75, "securitylimit": 75, "sysctl": [75, 119], "tmpdir": 75, "which": 75, "snap": [76, 120], "snapbasefact": 76, "snappackag": 76, "systemd": [77, 122], "systemden": 77, "systemdstatu": 77, "sysvinit": [78, 123], "initdstatu": 78, "upstart": [79, 124], "upstartstatu": 79, "vzctl": [80, 125], "openvzcontain": 80, "xbp": [81, 126], "xbpspackag": 81, "yum": [82, 127], "yumrepositori": 82, "zypper": [84, 129], "zypperrepositori": 84, "frequent": 85, "ask": 85, "question": 85, "do": 85, "i": [85, 132], "current": 85, "sudo": 85, "an": [85, 132], "chmod": 85, "chown": 85, "start": [86, 125], "definit": 86, "note": 86, "creat": [86, 125], "instal": [88, 96, 131], "pipx": [], "window": 88, "runtim": 89, "hierarchi": 89, "extern": 89, "sourc": [89, 131], "basic": [2, 90], "languag": 90, "databas": [90, 106, 113, 114], "updat": [91, 92, 93, 97, 109, 112, 126, 127, 129], "stateless": [91, 92, 93, 96, 97, 98, 99, 106, 109, 112, 113, 114, 115, 116, 117, 119, 121, 122, 125, 126, 127, 129], "dist_upgrad": 92, "kei": [92, 97, 127], "ppa": 92, "repo": [92, 97, 102, 127, 129], "cask_upgrad": 93, "cask": 93, "tap": 93, "download": [99, 121], "line": 99, "put": 99, "replac": 99, "rsync": 99, "sync": 99, "templat": 99, "bare_repo": 102, "worktre": 102, "chain": 103, "rule": 103, "contain": [98, 105], "dump": [106, 113, 114], "load": [106, 113, 114], "sql": [106, 113, 114], "venv": 110, "virtualenv": 110, "puppet": 115, "agent": 115, "python": 116, "call": 116, "raise_except": 116, "boolean": 118, "file_context": 118, "file_context_map": 118, "port": 118, "modprob": 119, "script": 119, "script_templ": 119, "security_limit": 119, "user_authorized_kei": 119, "wait": 119, "keyscan": 121, "upload": 121, "daemon_reload": 122, "enabl": 123, "delet": 125, "restart": 125, "set": 125, "stop": 125, "unmount": 125, "perform": 130, "serif": 131, "pro": 131, "instruct": 131, "involv": 131, "further": 131, "inform": 131, "help": 132, "support": 132, "think": 132, "ve": 132, "got": 132, "bug": 132, "have": 132, "idea": 132, "d": 132, "like": 132, "The": 133, "object": 133, "nest": 133, "includ": 133, "enforc": 133, "requir": 133, "type": 35, "dockervolum": 53, "runit": [73, 117], "runitmanag": 73, "runitstatu": 73, "imag": 98, "network": 98, "prune": 98, "volum": [83, 98, 128], "auto": 117, "wait_runsv": 117, "flatpak": [55, 100], "flatpakbasefact": 55, "flatpakpackag": 55, "zf": [83, 128], "dataset": [83, 128], "filesystem": [83, 128], "pool": 83, "snapshot": [83, 128], "pyproject": 0, "toml": 0, "full": 2, "localhost": 2, "2": 26, "3": 26}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 57}, "alltitles": {"Writing Connectors": [[0, "writing-connectors"]], "Inventory Connector": [[0, "inventory-connector"]], "Executing Connector": [[0, "executing-connector"]], "pyproject.toml": [[0, "pyproject-toml"]], "Packaging Deploys": [[1, "packaging-deploys"]], "Examples": [[1, "examples"], [32, "examples"], [133, "examples"]], "Global Arguments": [[1, "global-arguments"], [24, "global-arguments"], [133, "global-arguments"]], "Data in Deploys": [[1, "data-in-deploys"]], "Using the API": [[2, "using-the-api"]], "Full Example": [[2, "full-example"]], "Basic Localhost Example": [[2, "basic-localhost-example"]], "Writing Facts & Operations": [[3, "writing-facts-operations"]], "Operations": [[3, "operations"]], "Input: arguments": [[3, "input-arguments"]], "Output: commands": [[3, "output-commands"]], "Example: managing files": [[3, "example-managing-files"]], "Facts": [[3, "facts"]], "Importing & Using Facts": [[3, "importing-using-facts"]], "Example: getting swap status": [[3, "example-getting-swap-status"]], "Example: getting the list of files in a directory": [[3, "example-getting-the-list-of-files-in-a-directory"]], "Example: getting any output from a command": [[3, "example-getting-any-output-from-a-command"]], "API Reference": [[4, "api-reference"]], "Core API": [[4, null]], "pyinfra.api.arguments module": [[5, "module-pyinfra.api.arguments"]], "pyinfra.api.arguments_typed module": [[6, "module-pyinfra.api.arguments_typed"]], "pyinfra.api.command module": [[7, "module-pyinfra.api.command"]], "pyinfra.api.config module": [[8, "module-pyinfra.api.config"]], "pyinfra.api.connect module": [[9, "module-pyinfra.api.connect"]], "pyinfra.api.connectors module": [[10, "module-pyinfra.api.connectors"]], "pyinfra.api.deploy module": [[11, "module-pyinfra.api.deploy"]], "pyinfra.api.exceptions module": [[12, "module-pyinfra.api.exceptions"]], "pyinfra.api.facts module": [[13, "module-pyinfra.api.facts"]], "pyinfra.api.host module": [[14, "module-pyinfra.api.host"]], "pyinfra.api.inventory module": [[15, "module-pyinfra.api.inventory"]], "pyinfra.api.operation module": [[16, "module-pyinfra.api.operation"]], "pyinfra.api.operations module": [[17, "module-pyinfra.api.operations"]], "pyinfra.api.state module": [[18, "module-pyinfra.api.state"]], "pyinfra.api.util module": [[19, "module-pyinfra.api.util"]], "pyinfra.context module": [[20, "module-pyinfra.context"]], "pyinfra.local module": [[21, "module-pyinfra.local"]], "pyinfra.progress module": [[22, "module-pyinfra.progress"]], "pyinfra.version module": [[23, "module-pyinfra.version"]], "Privilege & user escalation": [[24, "privilege-user-escalation"]], "Shell control & features": [[24, "shell-control-features"]], "Operation meta & callbacks": [[24, "operation-meta-callbacks"]], "Execution strategy": [[24, "execution-strategy"]], "Using the CLI": [[25, "using-the-cli"]], "CLI arguments & options": [[25, "cli-arguments-options"]], "Verbosity": [[25, "verbosity"]], "Inventory": [[25, "inventory"]], "Limit": [[25, "limit"]], "Ad-hoc command execution": [[25, "ad-hoc-command-execution"]], "Example: debugging distributed services using pyinfra": [[25, "example-debugging-distributed-services-using-pyinfra"]], "Executing ad-hoc operations": [[25, "executing-ad-hoc-operations"]], "Example: managing packages with ad-hoc pyinfra commands": [[25, "example-managing-packages-with-ad-hoc-pyinfra-commands"]], "Example: managing services with ad-hoc pyinfra commands": [[25, "example-managing-services-with-ad-hoc-pyinfra-commands"]], "Example: rebooting with ad-hoc pyinfra commands": [[25, "example-rebooting-with-ad-hoc-pyinfra-commands"]], "Additional debug info": [[25, "additional-debug-info"]], "Shell Autocompletion": [[25, "shell-autocompletion"]], "Compatibility": [[26, "compatibility"]], "pyinfra Versions": [[26, "pyinfra-versions"]], "Control Systems": [[26, "control-systems"]], "Editor Integration": [[26, "editor-integration"]], "PyCharm": [[26, "pycharm"]], "Remote Systems": [[26, "remote-systems"]], "Upgrading pyinfra from 2.x -> 3.x": [[26, "upgrading-pyinfra-from-2-x-3-x"]], "Upgrading pyinfra from 1.x -> 2.x": [[26, "upgrading-pyinfra-from-1-x-2-x"]], "Upgrading pyinfra from 0.x -> 1.x": [[26, "upgrading-pyinfra-from-0-x-1-x"]], "Rename the modules module": [[26, "rename-the-modules-module"]], "Naming operations": [[26, "naming-operations"]], "Connectors Index": [[27, "connectors-index"]], "@ssh Connector": [[27, null], [32, "ssh-connector"]], "@docker Connector": [[27, null], [29, "docker-connector"]], "@terraform Connector": [[27, null], [33, "terraform-connector"]], "@local Connector": [[27, null], [31, "local-connector"]], "@chroot Connector": [[28, "chroot-connector"]], "Usage": [[28, "usage"], [29, "usage"], [30, "usage"], [31, "usage"], [33, "usage"], [34, "usage"]], "Available Data": [[29, "available-data"], [32, "available-data"]], "@dockerssh Connector": [[30, "dockerssh-connector"]], "@vagrant Connector": [[34, "vagrant-connector"]], "Contributing": [[35, "contributing"]], "Guides": [[35, "guides"]], "Branches": [[35, "branches"]], "Dev Setup": [[35, "dev-setup"]], "Code Style & Type Checking": [[35, "code-style-type-checking"]], "Tests": [[35, "tests"]], "Unit Tests": [[35, "unit-tests"]], "End to End Tests": [[35, "end-to-end-tests"]], "Generate Documentation": [[35, "generate-documentation"]], "How pyinfra Works": [[36, "how-pyinfra-works"], [87, "how-pyinfra-works"]], "How pyinfra Detects Changes & Orders Operations": [[36, "how-pyinfra-detects-changes-orders-operations"]], "When does this matter?": [[36, "when-does-this-matter"]], "Using Host Facts": [[36, "using-host-facts"]], "Checking Operation Changes": [[36, "checking-operation-changes"]], "Example Deploys": [[37, "example-deploys"]], "Client Side Assets": [[38, "client-side-assets"]], "Data Across Multiple Environments": [[39, "data-across-multiple-environments"]], "Dynamic Execution during Deploy": [[40, "dynamic-execution-during-deploy"]], "Dynamic Inventories & Data": [[41, "dynamic-inventories-data"]], "Groups & Roles": [[42, "groups-roles"]], "Using Secrets in pyinfra": [[43, "using-secrets-in-pyinfra"]], "Facts Index": [[44, "facts-index"]], "Apk Facts": [[45, "apk-facts"]], "apk.ApkPackages": [[45, "apk-apkpackages"]], "Apt Facts": [[46, "apt-facts"]], "apt.AptKeys": [[46, "apt-aptkeys"]], "apt.AptSources": [[46, "apt-aptsources"]], "Brew Facts": [[47, "brew-facts"]], "brew.BrewCasks": [[47, "brew-brewcasks"]], "brew.BrewPackages": [[47, "brew-brewpackages"]], "brew.BrewTaps": [[47, "brew-brewtaps"]], "brew.BrewVersion": [[47, "brew-brewversion"]], "Bsdinit Facts": [[48, "bsdinit-facts"]], "bsdinit.RcdStatus": [[48, "bsdinit-rcdstatus"]], "Cargo Facts": [[49, "cargo-facts"]], "cargo.CargoPackages": [[49, "cargo-cargopackages"]], "Choco Facts": [[50, "choco-facts"]], "choco.ChocoPackages": [[50, "choco-chocopackages"]], "choco.ChocoVersion": [[50, "choco-chocoversion"]], "Deb Facts": [[51, "deb-facts"]], "deb.DebArch": [[51, "deb-debarch"]], "deb.DebPackage": [[51, "deb-debpackage"]], "deb.DebPackages": [[51, "deb-debpackages"]], "Dnf Facts": [[52, "dnf-facts"]], "dnf.DnfRepositories": [[52, "dnf-dnfrepositories"]], "Docker Facts": [[53, "docker-facts"]], "docker.DockerContainer": [[53, "docker-dockercontainer"]], "docker.DockerContainers": [[53, "docker-dockercontainers"]], "docker.DockerImage": [[53, "docker-dockerimage"]], "docker.DockerImages": [[53, "docker-dockerimages"]], "docker.DockerNetwork": [[53, "docker-dockernetwork"]], "docker.DockerNetworks": [[53, "docker-dockernetworks"]], "docker.DockerSingleMixin": [[53, "docker-dockersinglemixin"]], "docker.DockerSystemInfo": [[53, "docker-dockersysteminfo"]], "docker.DockerVolume": [[53, "docker-dockervolume"]], "docker.DockerVolumes": [[53, "docker-dockervolumes"]], "Files Facts": [[54, "files-facts"]], "files.Block": [[54, "files-block"]], "files.Directory": [[54, "files-directory"]], "files.File": [[54, "files-file"]], "files.FindDirectories": [[54, "files-finddirectories"]], "files.FindFiles": [[54, "files-findfiles"]], "files.FindInFile": [[54, "files-findinfile"]], "files.FindLinks": [[54, "files-findlinks"]], "files.Flags": [[54, "files-flags"]], "files.Link": [[54, "files-link"]], "files.Md5File": [[54, "files-md5file"]], "files.Sha1File": [[54, "files-sha1file"]], "files.Sha256File": [[54, "files-sha256file"]], "files.Socket": [[54, "files-socket"]], "Flatpak Facts": [[55, "flatpak-facts"]], "flatpak.FlatpakBaseFact": [[55, "flatpak-flatpakbasefact"]], "flatpak.FlatpakPackage": [[55, "flatpak-flatpakpackage"]], "flatpak.FlatpakPackages": [[55, "flatpak-flatpakpackages"]], "Gem Facts": [[56, "gem-facts"]], "gem.GemPackages": [[56, "gem-gempackages"]], "Git Facts": [[57, "git-facts"]], "git.GitBranch": [[57, "git-gitbranch"]], "git.GitConfig": [[57, "git-gitconfig"]], "git.GitTrackingBranch": [[57, "git-gittrackingbranch"]], "Gpg Facts": [[58, "gpg-facts"]], "gpg.GpgKey": [[58, "gpg-gpgkey"]], "gpg.GpgKeys": [[58, "gpg-gpgkeys"]], "gpg.GpgSecretKeys": [[58, "gpg-gpgsecretkeys"]], "Hardware Facts": [[59, "hardware-facts"]], "hardware.BlockDevices": [[59, "hardware-blockdevices"]], "hardware.Cpus": [[59, "hardware-cpus"]], "hardware.Ipv4Addresses": [[59, "hardware-ipv4addresses"]], "hardware.Ipv4Addrs": [[59, "hardware-ipv4addrs"]], "hardware.Ipv6Addresses": [[59, "hardware-ipv6addresses"]], "hardware.Ipv6Addrs": [[59, "hardware-ipv6addrs"]], "hardware.Memory": [[59, "hardware-memory"]], "hardware.NetworkDevices": [[59, "hardware-networkdevices"]], "Iptables Facts": [[60, "iptables-facts"]], "iptables.Ip6tablesChains": [[60, "iptables-ip6tableschains"]], "iptables.Ip6tablesRules": [[60, "iptables-ip6tablesrules"]], "iptables.IptablesChains": [[60, "iptables-iptableschains"]], "iptables.IptablesRules": [[60, "iptables-iptablesrules"]], "Launchd Facts": [[61, "launchd-facts"]], "launchd.LaunchdStatus": [[61, "launchd-launchdstatus"]], "Lxd Facts": [[62, "lxd-facts"]], "lxd.LxdContainers": [[62, "lxd-lxdcontainers"]], "Mysql Facts": [[63, "mysql-facts"]], "mysql.MysqlDatabases": [[63, "mysql-mysqldatabases"]], "mysql.MysqlUserGrants": [[63, "mysql-mysqlusergrants"]], "mysql.MysqlUsers": [[63, "mysql-mysqlusers"]], "Npm Facts": [[64, "npm-facts"]], "npm.NpmPackages": [[64, "npm-npmpackages"]], "Openrc Facts": [[65, "openrc-facts"]], "openrc.OpenrcEnabled": [[65, "openrc-openrcenabled"]], "openrc.OpenrcStatus": [[65, "openrc-openrcstatus"]], "Pacman Facts": [[66, "pacman-facts"]], "pacman.PacmanPackages": [[66, "pacman-pacmanpackages"]], "pacman.PacmanUnpackGroup": [[66, "pacman-pacmanunpackgroup"]], "Pip Facts": [[67, "pip-facts"]], "pip.Pip3Packages": [[67, "pip-pip3packages"]], "pip.PipPackages": [[67, "pip-pippackages"]], "Pkg Facts": [[68, "pkg-facts"]], "pkg.PkgPackages": [[68, "pkg-pkgpackages"]], "Pkgin Facts": [[69, "pkgin-facts"]], "pkgin.PkginPackages": [[69, "pkgin-pkginpackages"]], "Postgres Facts": [[70, "postgres-facts"]], "postgres.PostgresDatabases": [[70, "postgres-postgresdatabases"]], "postgres.PostgresRoles": [[70, "postgres-postgresroles"]], "Postgresql Facts": [[71, "postgresql-facts"]], "postgresql.PostgresqlDatabases": [[71, "postgresql-postgresqldatabases"]], "postgresql.PostgresqlRoles": [[71, "postgresql-postgresqlroles"]], "Rpm Facts": [[72, "rpm-facts"]], "rpm.RpmPackage": [[72, "rpm-rpmpackage"]], "rpm.RpmPackageProvides": [[72, "rpm-rpmpackageprovides"]], "rpm.RpmPackages": [[72, "rpm-rpmpackages"]], "Runit Facts": [[73, "runit-facts"]], "runit.RunitManaged": [[73, "runit-runitmanaged"]], "runit.RunitStatus": [[73, "runit-runitstatus"]], "Selinux Facts": [[74, "selinux-facts"]], "selinux.FileContext": [[74, "selinux-filecontext"]], "selinux.FileContextMapping": [[74, "selinux-filecontextmapping"]], "selinux.SEBoolean": [[74, "selinux-seboolean"]], "selinux.SEPort": [[74, "selinux-seport"]], "selinux.SEPorts": [[74, "selinux-seports"]], "Server Facts": [[75, "server-facts"]], "server.Arch": [[75, "server-arch"]], "server.Command": [[75, "server-command"]], "server.Crontab": [[75, "server-crontab"]], "server.Date": [[75, "server-date"]], "server.Groups": [[75, "server-groups"]], "server.HasGui": [[75, "server-hasgui"]], "server.Home": [[75, "server-home"]], "server.Hostname": [[75, "server-hostname"]], "server.Kernel": [[75, "server-kernel"]], "server.KernelModules": [[75, "server-kernelmodules"]], "server.KernelVersion": [[75, "server-kernelversion"]], "server.LinuxDistribution": [[75, "server-linuxdistribution"]], "server.LinuxGui": [[75, "server-linuxgui"]], "server.LinuxName": [[75, "server-linuxname"]], "server.Locales": [[75, "server-locales"]], "server.LsbRelease": [[75, "server-lsbrelease"]], "server.MacosVersion": [[75, "server-macosversion"]], "server.Mounts": [[75, "server-mounts"]], "server.Os": [[75, "server-os"]], "server.OsVersion": [[75, "server-osversion"]], "server.Path": [[75, "server-path"]], "server.SecurityLimits": [[75, "server-securitylimits"]], "server.Selinux": [[75, "server-selinux"]], "server.Sysctl": [[75, "server-sysctl"]], "server.TmpDir": [[75, "server-tmpdir"]], "server.User": [[75, "server-user"]], "server.Users": [[75, "server-users"]], "server.Which": [[75, "server-which"]], "Snap Facts": [[76, "snap-facts"]], "snap.SnapBaseFact": [[76, "snap-snapbasefact"]], "snap.SnapPackage": [[76, "snap-snappackage"]], "snap.SnapPackages": [[76, "snap-snappackages"]], "Systemd Facts": [[77, "systemd-facts"]], "systemd.SystemdEnabled": [[77, "systemd-systemdenabled"]], "systemd.SystemdStatus": [[77, "systemd-systemdstatus"]], "Sysvinit Facts": [[78, "sysvinit-facts"]], "sysvinit.InitdStatus": [[78, "sysvinit-initdstatus"]], "Upstart Facts": [[79, "upstart-facts"]], "upstart.UpstartStatus": [[79, "upstart-upstartstatus"]], "Vzctl Facts": [[80, "vzctl-facts"]], "vzctl.OpenvzContainers": [[80, "vzctl-openvzcontainers"]], "Xbps Facts": [[81, "xbps-facts"]], "xbps.XbpsPackages": [[81, "xbps-xbpspackages"]], "Yum Facts": [[82, "yum-facts"]], "yum.YumRepositories": [[82, "yum-yumrepositories"]], "Zfs Facts": [[83, "zfs-facts"]], "zfs.Datasets": [[83, "zfs-datasets"]], "zfs.Filesystems": [[83, "zfs-filesystems"]], "zfs.Pools": [[83, "zfs-pools"]], "zfs.Snapshots": [[83, "zfs-snapshots"]], "zfs.Volumes": [[83, "zfs-volumes"]], "Zypper Facts": [[84, "zypper-facts"]], "zypper.ZypperRepositories": [[84, "zypper-zypperrepositories"]], "Frequently Asked Questions": [[85, "frequently-asked-questions"]], "How do I get the name of the current host?": [[85, "how-do-i-get-the-name-of-the-current-host"]], "How do I use sudo in an operation?": [[85, "how-do-i-use-sudo-in-an-operation"]], "How do I chmod or chown a file/directory/link?": [[85, "how-do-i-chmod-or-chown-a-file-directory-link"]], "Getting Started": [[86, "getting-started"]], "Ad-hoc commands with pyinfra": [[86, "ad-hoc-commands-with-pyinfra"]], "State definitions": [[86, "state-definitions"]], "Note for Docker users": [[86, null]], "Create a Deploy": [[86, "create-a-deploy"]], "pyinfra Documentation": [[87, "pyinfra-documentation"]], "Using pyinfra": [[87, "using-pyinfra"]], "Deploy Reference": [[87, "deploy-reference"]], "Installation": [[88, "installation"]], "Pip": [[88, "pip"]], "Windows": [[88, "windows"]], "Inventory & Data": [[89, "inventory-data"]], "Inventory Files": [[89, "inventory-files"]], "Limiting inventory at runtime": [[89, "limiting-inventory-at-runtime"]], "Host Data": [[89, "host-data"]], "Group Data Files": [[89, "group-data-files"]], "Data Hierarchy": [[89, "data-hierarchy"]], "Connecting with Data": [[89, "connecting-with-data"]], "Global Arguments with Data": [[89, "global-arguments-with-data"]], "External Sources for Data": [[89, "external-sources-for-data"]], "Operations Index": [[90, "operations-index"]], "Basics": [[90, null]], "System Packages": [[90, null]], "Language Packages": [[90, null]], "Databases": [[90, null]], "Apk Operations": [[91, "apk-operations"]], "apk.packages": [[91, "apk-packages"]], "apk.update": [[91, "apk-update"]], "Stateless operation": [[91, null], [91, null], [92, null], [92, null], [92, null], [92, null], [93, null], [93, null], [93, null], [96, null], [97, null], [97, null], [98, null], [98, null], [99, null], [99, null], [106, null], [106, null], [106, null], [109, null], [109, null], [112, null], [112, null], [113, null], [113, null], [113, null], [114, null], [114, null], [114, null], [114, null], [114, null], [115, null], [116, null], [116, null], [117, null], [119, null], [119, null], [119, null], [119, null], [119, null], [121, null], [121, null], [122, null], [125, null], [125, null], [125, null], [125, null], [125, null], [125, null], [125, null], [125, null], [126, null], [126, null], [127, null], [127, null], [129, null]], "apk.upgrade": [[91, "apk-upgrade"]], "Apt Operations": [[92, "apt-operations"]], "apt.deb": [[92, "apt-deb"]], "apt.dist_upgrade": [[92, "apt-dist-upgrade"]], "apt.key": [[92, "apt-key"]], "apt.packages": [[92, "apt-packages"]], "apt.ppa": [[92, "apt-ppa"]], "apt.repo": [[92, "apt-repo"]], "apt.update": [[92, "apt-update"]], "apt.upgrade": [[92, "apt-upgrade"]], "Brew Operations": [[93, "brew-operations"]], "brew.cask_upgrade": [[93, "brew-cask-upgrade"]], "brew.casks": [[93, "brew-casks"]], "brew.packages": [[93, "brew-packages"]], "brew.tap": [[93, "brew-tap"]], "brew.update": [[93, "brew-update"]], "brew.upgrade": [[93, "brew-upgrade"]], "Bsdinit Operations": [[94, "bsdinit-operations"]], "bsdinit.service": [[94, "bsdinit-service"]], "Cargo Operations": [[95, "cargo-operations"]], "cargo.packages": [[95, "cargo-packages"]], "Choco Operations": [[96, "choco-operations"]], "choco.install": [[96, "choco-install"]], "choco.packages": [[96, "choco-packages"]], "Dnf Operations": [[97, "dnf-operations"]], "dnf.key": [[97, "dnf-key"]], "dnf.packages": [[97, "dnf-packages"]], "dnf.repo": [[97, "dnf-repo"]], "dnf.rpm": [[97, "dnf-rpm"]], "dnf.update": [[97, "dnf-update"]], "Docker Operations": [[98, "docker-operations"]], "docker.container": [[98, "docker-container"]], "docker.image": [[98, "docker-image"]], "docker.network": [[98, "docker-network"]], "docker.prune": [[98, "docker-prune"]], "docker.volume": [[98, "docker-volume"]], "Files Operations": [[99, "files-operations"]], "files.block": [[99, "files-block"]], "files.directory": [[99, "files-directory"]], "files.download": [[99, "files-download"]], "files.file": [[99, "files-file"]], "files.flags": [[99, "files-flags"]], "files.get": [[99, "files-get"]], "files.line": [[99, "files-line"]], "files.link": [[99, "files-link"]], "files.put": [[99, "files-put"]], "files.replace": [[99, "files-replace"]], "files.rsync": [[99, "files-rsync"]], "files.sync": [[99, "files-sync"]], "files.template": [[99, "files-template"]], "Flatpak Operations": [[100, "flatpak-operations"]], "flatpak.packages": [[100, "flatpak-packages"]], "Gem Operations": [[101, "gem-operations"]], "gem.packages": [[101, "gem-packages"]], "Git Operations": [[102, "git-operations"]], "git.bare_repo": [[102, "git-bare-repo"]], "git.config": [[102, "git-config"]], "git.repo": [[102, "git-repo"]], "git.worktree": [[102, "git-worktree"]], "Iptables Operations": [[103, "iptables-operations"]], "iptables.chain": [[103, "iptables-chain"]], "iptables.rule": [[103, "iptables-rule"]], "Launchd Operations": [[104, "launchd-operations"]], "launchd.service": [[104, "launchd-service"]], "Lxd Operations": [[105, "lxd-operations"]], "lxd.container": [[105, "lxd-container"]], "Mysql Operations": [[106, "mysql-operations"]], "mysql.database": [[106, "mysql-database"]], "mysql.dump": [[106, "mysql-dump"]], "mysql.load": [[106, "mysql-load"]], "mysql.privileges": [[106, "mysql-privileges"]], "mysql.sql": [[106, "mysql-sql"]], "mysql.user": [[106, "mysql-user"]], "Npm Operations": [[107, "npm-operations"]], "npm.packages": [[107, "npm-packages"]], "Openrc Operations": [[108, "openrc-operations"]], "openrc.service": [[108, "openrc-service"]], "Pacman Operations": [[109, "pacman-operations"]], "pacman.packages": [[109, "pacman-packages"]], "pacman.update": [[109, "pacman-update"]], "pacman.upgrade": [[109, "pacman-upgrade"]], "Pip Operations": [[110, "pip-operations"]], "pip.packages": [[110, "pip-packages"]], "pip.venv": [[110, "pip-venv"]], "pip.virtualenv": [[110, "pip-virtualenv"]], "Pkg Operations": [[111, "pkg-operations"]], "pkg.packages": [[111, "pkg-packages"]], "Pkgin Operations": [[112, "pkgin-operations"]], "pkgin.packages": [[112, "pkgin-packages"]], "pkgin.update": [[112, "pkgin-update"]], "pkgin.upgrade": [[112, "pkgin-upgrade"]], "Postgres Operations": [[113, "postgres-operations"]], "postgres.database": [[113, "postgres-database"]], "postgres.dump": [[113, "postgres-dump"]], "postgres.load": [[113, "postgres-load"]], "postgres.role": [[113, "postgres-role"]], "postgres.sql": [[113, "postgres-sql"]], "Postgresql Operations": [[114, "postgresql-operations"]], "postgresql.database": [[114, "postgresql-database"]], "postgresql.dump": [[114, "postgresql-dump"]], "postgresql.load": [[114, "postgresql-load"]], "postgresql.role": [[114, "postgresql-role"]], "postgresql.sql": [[114, "postgresql-sql"]], "Puppet Operations": [[115, "puppet-operations"]], "puppet.agent": [[115, "puppet-agent"]], "Python Operations": [[116, "python-operations"]], "python.call": [[116, "python-call"]], "python.raise_exception": [[116, "python-raise-exception"]], "Runit Operations": [[117, "runit-operations"]], "runit.auto": [[117, "runit-auto"]], "runit.manage": [[117, "runit-manage"]], "runit.service": [[117, "runit-service"]], "runit.wait_runsv": [[117, "runit-wait-runsv"]], "Selinux Operations": [[118, "selinux-operations"]], "selinux.boolean": [[118, "selinux-boolean"]], "selinux.file_context": [[118, "selinux-file-context"]], "selinux.file_context_mapping": [[118, "selinux-file-context-mapping"]], "selinux.port": [[118, "selinux-port"]], "Server Operations": [[119, "server-operations"]], "server.crontab": [[119, "server-crontab"]], "server.group": [[119, "server-group"]], "server.hostname": [[119, "server-hostname"]], "server.locale": [[119, "server-locale"]], "server.modprobe": [[119, "server-modprobe"]], "server.mount": [[119, "server-mount"]], "server.packages": [[119, "server-packages"]], "server.reboot": [[119, "server-reboot"]], "server.script": [[119, "server-script"]], "server.script_template": [[119, "server-script-template"]], "server.security_limit": [[119, "server-security-limit"]], "server.service": [[119, "server-service"]], "server.shell": [[119, "server-shell"]], "server.sysctl": [[119, "server-sysctl"]], "server.user": [[119, "server-user"]], "server.user_authorized_keys": [[119, "server-user-authorized-keys"]], "server.wait": [[119, "server-wait"]], "Snap Operations": [[120, "snap-operations"]], "snap.package": [[120, "snap-package"]], "Ssh Operations": [[121, "ssh-operations"]], "ssh.command": [[121, "ssh-command"]], "ssh.download": [[121, "ssh-download"]], "ssh.keyscan": [[121, "ssh-keyscan"]], "ssh.upload": [[121, "ssh-upload"]], "Systemd Operations": [[122, "systemd-operations"]], "systemd.daemon_reload": [[122, "systemd-daemon-reload"]], "systemd.service": [[122, "systemd-service"]], "Sysvinit Operations": [[123, "sysvinit-operations"]], "sysvinit.enable": [[123, "sysvinit-enable"]], "sysvinit.service": [[123, "sysvinit-service"]], "Upstart Operations": [[124, "upstart-operations"]], "upstart.service": [[124, "upstart-service"]], "Vzctl Operations": [[125, "vzctl-operations"]], "vzctl.create": [[125, "vzctl-create"]], "vzctl.delete": [[125, "vzctl-delete"]], "vzctl.mount": [[125, "vzctl-mount"]], "vzctl.restart": [[125, "vzctl-restart"]], "vzctl.set": [[125, "vzctl-set"]], "vzctl.start": [[125, "vzctl-start"]], "vzctl.stop": [[125, "vzctl-stop"]], "vzctl.unmount": [[125, "vzctl-unmount"]], "Xbps Operations": [[126, "xbps-operations"]], "xbps.packages": [[126, "xbps-packages"]], "xbps.update": [[126, "xbps-update"]], "xbps.upgrade": [[126, "xbps-upgrade"]], "Yum Operations": [[127, "yum-operations"]], "yum.key": [[127, "yum-key"]], "yum.packages": [[127, "yum-packages"]], "yum.repo": [[127, "yum-repo"]], "yum.rpm": [[127, "yum-rpm"]], "yum.update": [[127, "yum-update"]], "Zfs Operations": [[128, "zfs-operations"]], "zfs.dataset": [[128, "zfs-dataset"]], "zfs.filesystem": [[128, "zfs-filesystem"]], "zfs.snapshot": [[128, "zfs-snapshot"]], "zfs.volume": [[128, "zfs-volume"]], "Zypper Operations": [[129, "zypper-operations"]], "zypper.packages": [[129, "zypper-packages"]], "zypper.repo": [[129, "zypper-repo"]], "zypper.rpm": [[129, "zypper-rpm"]], "zypper.update": [[129, "zypper-update"]], "Performance": [[130, "performance"]], "Source Serif Pro": [[131, "source-serif-pro"]], "Installation instructions": [[131, "installation-instructions"]], "Getting Involved": [[131, "getting-involved"]], "Further information": [[131, "further-information"]], "Help & Support": [[132, "help-support"]], "I think I\u2019ve got a bug!": [[132, "i-think-i-ve-got-a-bug"]], "I have an idea!": [[132, "i-have-an-idea"]], "I\u2019d like to contribute!": [[132, "i-d-like-to-contribute"]], "Using Operations": [[133, "using-operations"]], "The host Object": [[133, "the-host-object"]], "Host & Group Data": [[133, "host-group-data"]], "Host Facts": [[133, "host-facts"]], "The inventory Object": [[133, "the-inventory-object"]], "Operation Changes & Output": [[133, "operation-changes-output"]], "Operation Output": [[133, "operation-output"]], "Nested Operations": [[133, "nested-operations"]], "Include Multiple Files": [[133, "include-multiple-files"]], "The config Object": [[133, "the-config-object"]], "Enforcing Requirements": [[133, "enforcing-requirements"]]}, "indexentries": {"allarguments (class in pyinfra.api.arguments)": [[5, "pyinfra.api.arguments.AllArguments"]], "argumentmeta (class in pyinfra.api.arguments)": [[5, "pyinfra.api.arguments.ArgumentMeta"]], "connectorarguments (class in pyinfra.api.arguments)": [[5, "pyinfra.api.arguments.ConnectorArguments"]], "executionarguments (class in pyinfra.api.arguments)": [[5, "pyinfra.api.arguments.ExecutionArguments"]], "metaarguments (class in pyinfra.api.arguments)": [[5, "pyinfra.api.arguments.MetaArguments"]], "all_global_arguments() (in module pyinfra.api.arguments)": [[5, "pyinfra.api.arguments.all_global_arguments"]], "default (pyinfra.api.arguments.argumentmeta attribute)": [[5, "pyinfra.api.arguments.ArgumentMeta.default"]], "description (pyinfra.api.arguments.argumentmeta attribute)": [[5, "pyinfra.api.arguments.ArgumentMeta.description"]], "generate_env() (in module pyinfra.api.arguments)": [[5, "pyinfra.api.arguments.generate_env"]], "handler (pyinfra.api.arguments.argumentmeta attribute)": [[5, "pyinfra.api.arguments.ArgumentMeta.handler"]], "module": [[5, "module-pyinfra.api.arguments"], [6, "module-pyinfra.api.arguments_typed"], [7, "module-pyinfra.api.command"], [8, "module-pyinfra.api.config"], [9, "module-pyinfra.api.connect"], [10, "module-pyinfra.api.connectors"], [11, "module-pyinfra.api.deploy"], [12, "module-pyinfra.api.exceptions"], [13, "module-pyinfra.api.facts"], [14, "module-pyinfra.api.host"], [15, "module-pyinfra.api.inventory"], [16, "module-pyinfra.api.operation"], [17, "module-pyinfra.api.operations"], [18, "module-pyinfra.api.state"], [19, "module-pyinfra.api.util"], [20, "module-pyinfra.context"], [21, "module-pyinfra.local"], [22, "module-pyinfra.progress"], [23, "module-pyinfra.version"]], "name (pyinfra.api.arguments.allarguments attribute)": [[5, "pyinfra.api.arguments.AllArguments.name"]], "name (pyinfra.api.arguments.metaarguments attribute)": [[5, "pyinfra.api.arguments.MetaArguments.name"]], "pop_global_arguments() (in module pyinfra.api.arguments)": [[5, "pyinfra.api.arguments.pop_global_arguments"]], "pyinfra.api.arguments": [[5, "module-pyinfra.api.arguments"]], "pyinfraoperation (class in pyinfra.api.arguments_typed)": [[6, "pyinfra.api.arguments_typed.PyinfraOperation"]], "pyinfra.api.arguments_typed": [[6, "module-pyinfra.api.arguments_typed"]], "filedownloadcommand (class in pyinfra.api.command)": [[7, "pyinfra.api.command.FileDownloadCommand"]], "fileuploadcommand (class in pyinfra.api.command)": [[7, "pyinfra.api.command.FileUploadCommand"]], "functioncommand (class in pyinfra.api.command)": [[7, "pyinfra.api.command.FunctionCommand"]], "maskstring (class in pyinfra.api.command)": [[7, "pyinfra.api.command.MaskString"]], "pyinfracommand (class in pyinfra.api.command)": [[7, "pyinfra.api.command.PyinfraCommand"]], "quotestring (class in pyinfra.api.command)": [[7, "pyinfra.api.command.QuoteString"]], "rsynccommand (class in pyinfra.api.command)": [[7, "pyinfra.api.command.RsyncCommand"]], "stringcommand (class in pyinfra.api.command)": [[7, "pyinfra.api.command.StringCommand"]], "connector_arguments (pyinfra.api.command.pyinfracommand attribute)": [[7, "pyinfra.api.command.PyinfraCommand.connector_arguments"]], "execute() (pyinfra.api.command.filedownloadcommand method)": [[7, "pyinfra.api.command.FileDownloadCommand.execute"]], "execute() (pyinfra.api.command.fileuploadcommand method)": [[7, "pyinfra.api.command.FileUploadCommand.execute"]], "execute() (pyinfra.api.command.functioncommand method)": [[7, "pyinfra.api.command.FunctionCommand.execute"]], "execute() (pyinfra.api.command.pyinfracommand method)": [[7, "pyinfra.api.command.PyinfraCommand.execute"]], "execute() (pyinfra.api.command.rsynccommand method)": [[7, "pyinfra.api.command.RsyncCommand.execute"]], "execute() (pyinfra.api.command.stringcommand method)": [[7, "pyinfra.api.command.StringCommand.execute"]], "get_masked_value() (pyinfra.api.command.stringcommand method)": [[7, "pyinfra.api.command.StringCommand.get_masked_value"]], "get_raw_value() (pyinfra.api.command.stringcommand method)": [[7, "pyinfra.api.command.StringCommand.get_raw_value"]], "make_formatted_string_command() (in module pyinfra.api.command)": [[7, "pyinfra.api.command.make_formatted_string_command"]], "obj (pyinfra.api.command.quotestring attribute)": [[7, "pyinfra.api.command.QuoteString.obj"]], "pyinfra.api.command": [[7, "module-pyinfra.api.command"]], "connect_timeout (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.CONNECT_TIMEOUT"]], "config (class in pyinfra.api.config)": [[8, "pyinfra.api.config.Config"]], "configdefaults (class in pyinfra.api.config)": [[8, "pyinfra.api.config.ConfigDefaults"]], "default_temp_dir (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.DEFAULT_TEMP_DIR"]], "doas (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.DOAS"]], "doas_user (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.DOAS_USER"]], "fail_percent (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.FAIL_PERCENT"]], "ignore_errors (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.IGNORE_ERRORS"]], "parallel (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.PARALLEL"]], "preserve_sudo_env (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.PRESERVE_SUDO_ENV"]], "preserve_su_env (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.PRESERVE_SU_ENV"]], "require_packages (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.REQUIRE_PACKAGES"]], "require_pyinfra_version (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.REQUIRE_PYINFRA_VERSION"]], "shell (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.SHELL"]], "sudo (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.SUDO"]], "sudo_password (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.SUDO_PASSWORD"]], "sudo_user (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.SUDO_USER"]], "su_shell (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.SU_SHELL"]], "su_user (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.SU_USER"]], "temp_dir (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.TEMP_DIR"]], "use_sudo_login (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.USE_SUDO_LOGIN"]], "use_su_login (pyinfra.api.config.configdefaults attribute)": [[8, "pyinfra.api.config.ConfigDefaults.USE_SU_LOGIN"]], "check_pyinfra_version() (in module pyinfra.api.config)": [[8, "pyinfra.api.config.check_pyinfra_version"]], "check_require_packages() (in module pyinfra.api.config)": [[8, "pyinfra.api.config.check_require_packages"]], "copy() (pyinfra.api.config.config method)": [[8, "pyinfra.api.config.Config.copy"]], "get_current_state() (pyinfra.api.config.config method)": [[8, "pyinfra.api.config.Config.get_current_state"]], "lock_current_state() (pyinfra.api.config.config method)": [[8, "pyinfra.api.config.Config.lock_current_state"]], "pyinfra.api.config": [[8, "module-pyinfra.api.config"]], "reset_locked_state() (pyinfra.api.config.config method)": [[8, "pyinfra.api.config.Config.reset_locked_state"]], "set_current_state() (pyinfra.api.config.config method)": [[8, "pyinfra.api.config.Config.set_current_state"]], "connect_all() (in module pyinfra.api.connect)": [[9, "pyinfra.api.connect.connect_all"]], "disconnect_all() (in module pyinfra.api.connect)": [[9, "pyinfra.api.connect.disconnect_all"]], "pyinfra.api.connect": [[9, "module-pyinfra.api.connect"]], "get_all_connectors() (in module pyinfra.api.connectors)": [[10, "pyinfra.api.connectors.get_all_connectors"]], "get_execution_connector() (in module pyinfra.api.connectors)": [[10, "pyinfra.api.connectors.get_execution_connector"]], "get_execution_connectors() (in module pyinfra.api.connectors)": [[10, "pyinfra.api.connectors.get_execution_connectors"]], "pyinfra.api.connectors": [[10, "module-pyinfra.api.connectors"]], "add_deploy() (in module pyinfra.api.deploy)": [[11, "pyinfra.api.deploy.add_deploy"]], "deploy() (in module pyinfra.api.deploy)": [[11, "pyinfra.api.deploy.deploy"]], "pyinfra.api.deploy": [[11, "module-pyinfra.api.deploy"]], "argumenttypeerror": [[12, "pyinfra.api.exceptions.ArgumentTypeError"]], "connecterror": [[12, "pyinfra.api.exceptions.ConnectError"]], "connectordatatypeerror": [[12, "pyinfra.api.exceptions.ConnectorDataTypeError"]], "deployerror": [[12, "pyinfra.api.exceptions.DeployError"]], "facterror": [[12, "pyinfra.api.exceptions.FactError"]], "facttypeerror": [[12, "pyinfra.api.exceptions.FactTypeError"]], "factvalueerror": [[12, "pyinfra.api.exceptions.FactValueError"]], "inventoryerror": [[12, "pyinfra.api.exceptions.InventoryError"]], "noconnectorerror": [[12, "pyinfra.api.exceptions.NoConnectorError"]], "nogrouperror": [[12, "pyinfra.api.exceptions.NoGroupError"]], "nohosterror": [[12, "pyinfra.api.exceptions.NoHostError"]], "operationerror": [[12, "pyinfra.api.exceptions.OperationError"]], "operationtypeerror": [[12, "pyinfra.api.exceptions.OperationTypeError"]], "operationvalueerror": [[12, "pyinfra.api.exceptions.OperationValueError"]], "pyinfraerror": [[12, "pyinfra.api.exceptions.PyinfraError"]], "pyinfra.api.exceptions": [[12, "module-pyinfra.api.exceptions"]], "factbase (class in pyinfra.api.facts)": [[13, "pyinfra.api.facts.FactBase"]], "shortfactbase (class in pyinfra.api.facts)": [[13, "pyinfra.api.facts.ShortFactBase"]], "abstract (pyinfra.api.facts.factbase attribute)": [[13, "pyinfra.api.facts.FactBase.abstract"]], "command (pyinfra.api.facts.factbase attribute)": [[13, "pyinfra.api.facts.FactBase.command"]], "default() (pyinfra.api.facts.factbase static method)": [[13, "pyinfra.api.facts.FactBase.default"]], "fact (pyinfra.api.facts.shortfactbase attribute)": [[13, "pyinfra.api.facts.ShortFactBase.fact"]], "get_fact() (in module pyinfra.api.facts)": [[13, "pyinfra.api.facts.get_fact"]], "get_facts() (in module pyinfra.api.facts)": [[13, "pyinfra.api.facts.get_facts"]], "get_host_fact() (in module pyinfra.api.facts)": [[13, "pyinfra.api.facts.get_host_fact"]], "get_short_facts() (in module pyinfra.api.facts)": [[13, "pyinfra.api.facts.get_short_facts"]], "name (pyinfra.api.facts.factbase attribute)": [[13, "pyinfra.api.facts.FactBase.name"]], "name (pyinfra.api.facts.shortfactbase attribute)": [[13, "pyinfra.api.facts.ShortFactBase.name"]], "process() (pyinfra.api.facts.factbase method)": [[13, "pyinfra.api.facts.FactBase.process"]], "process_data() (pyinfra.api.facts.shortfactbase method)": [[13, "pyinfra.api.facts.ShortFactBase.process_data"]], "process_pipeline() (pyinfra.api.facts.factbase method)": [[13, "pyinfra.api.facts.FactBase.process_pipeline"]], "pyinfra.api.facts": [[13, "module-pyinfra.api.facts"]], "requires_command() (pyinfra.api.facts.factbase method)": [[13, "pyinfra.api.facts.FactBase.requires_command"]], "shell_executable (pyinfra.api.facts.factbase attribute)": [[13, "pyinfra.api.facts.FactBase.shell_executable"]], "host (class in pyinfra.api.host)": [[14, "pyinfra.api.host.Host"]], "hostdata (class in pyinfra.api.host)": [[14, "pyinfra.api.host.HostData"]], "t (pyinfra.api.host.host attribute)": [[14, "pyinfra.api.host.Host.T"]], "arguments() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.arguments"]], "check_can_rsync() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.check_can_rsync"]], "connect() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.connect"]], "connected (pyinfra.api.host.host attribute)": [[14, "pyinfra.api.host.Host.connected"]], "connector (pyinfra.api.host.host attribute)": [[14, "pyinfra.api.host.Host.connector"]], "connector_cls (pyinfra.api.host.host attribute)": [[14, "pyinfra.api.host.Host.connector_cls"]], "connector_data (pyinfra.api.host.host attribute)": [[14, "pyinfra.api.host.Host.connector_data"]], "current_deploy_data (pyinfra.api.host.host attribute)": [[14, "pyinfra.api.host.Host.current_deploy_data"]], "current_deploy_kwargs (pyinfra.api.host.host attribute)": [[14, "pyinfra.api.host.Host.current_deploy_kwargs"]], "current_deploy_name (pyinfra.api.host.host attribute)": [[14, "pyinfra.api.host.Host.current_deploy_name"]], "current_op_deploy_data (pyinfra.api.host.host attribute)": [[14, "pyinfra.api.host.Host.current_op_deploy_data"]], "current_op_global_arguments (pyinfra.api.host.host attribute)": [[14, "pyinfra.api.host.Host.current_op_global_arguments"]], "current_op_hash (pyinfra.api.host.host attribute)": [[14, "pyinfra.api.host.Host.current_op_hash"]], "deploy() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.deploy"]], "dict() (pyinfra.api.host.hostdata method)": [[14, "pyinfra.api.host.HostData.dict"]], "disconnect() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.disconnect"]], "executing_op_hash (pyinfra.api.host.host attribute)": [[14, "pyinfra.api.host.Host.executing_op_hash"]], "extract_callable_datas() (in module pyinfra.api.host)": [[14, "pyinfra.api.host.extract_callable_datas"]], "get() (pyinfra.api.host.hostdata method)": [[14, "pyinfra.api.host.HostData.get"]], "get_deploy_data() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.get_deploy_data"]], "get_fact() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.get_fact"]], "get_file() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.get_file"]], "get_temp_filename() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.get_temp_filename"]], "group_data (pyinfra.api.host.host property)": [[14, "pyinfra.api.host.Host.group_data"]], "host_data (pyinfra.api.host.host property)": [[14, "pyinfra.api.host.Host.host_data"]], "in_callback_op (pyinfra.api.host.host attribute)": [[14, "pyinfra.api.host.Host.in_callback_op"]], "in_deploy (pyinfra.api.host.host attribute)": [[14, "pyinfra.api.host.Host.in_deploy"]], "in_op (pyinfra.api.host.host attribute)": [[14, "pyinfra.api.host.Host.in_op"]], "init() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.init"]], "log() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.log"]], "log_styled() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.log_styled"]], "loop() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.loop"]], "loop_position (pyinfra.api.host.host attribute)": [[14, "pyinfra.api.host.Host.loop_position"]], "nested_executing_op_hash (pyinfra.api.host.host attribute)": [[14, "pyinfra.api.host.Host.nested_executing_op_hash"]], "noop() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.noop"]], "override_datas (pyinfra.api.host.hostdata attribute)": [[14, "pyinfra.api.host.HostData.override_datas"]], "print_prefix (pyinfra.api.host.host property)": [[14, "pyinfra.api.host.Host.print_prefix"]], "put_file() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.put_file"]], "pyinfra.api.host": [[14, "module-pyinfra.api.host"]], "rsync() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.rsync"]], "run_shell_command() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.run_shell_command"]], "state (pyinfra.api.host.host attribute)": [[14, "pyinfra.api.host.Host.state"]], "style_print_prefix() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.style_print_prefix"]], "when() (pyinfra.api.host.host method)": [[14, "pyinfra.api.host.Host.when"]], "inventory (class in pyinfra.api.inventory)": [[15, "pyinfra.api.inventory.Inventory"]], "empty() (pyinfra.api.inventory.inventory static method)": [[15, "pyinfra.api.inventory.Inventory.empty"]], "extract_name_data() (in module pyinfra.api.inventory)": [[15, "pyinfra.api.inventory.extract_name_data"]], "get_data() (pyinfra.api.inventory.inventory method)": [[15, "pyinfra.api.inventory.Inventory.get_data"]], "get_group() (pyinfra.api.inventory.inventory method)": [[15, "pyinfra.api.inventory.Inventory.get_group"]], "get_group_data() (pyinfra.api.inventory.inventory method)": [[15, "pyinfra.api.inventory.Inventory.get_group_data"]], "get_groups_data() (pyinfra.api.inventory.inventory method)": [[15, "pyinfra.api.inventory.Inventory.get_groups_data"]], "get_host() (pyinfra.api.inventory.inventory method)": [[15, "pyinfra.api.inventory.Inventory.get_host"]], "get_host_data() (pyinfra.api.inventory.inventory method)": [[15, "pyinfra.api.inventory.Inventory.get_host_data"]], "get_override_data() (pyinfra.api.inventory.inventory method)": [[15, "pyinfra.api.inventory.Inventory.get_override_data"]], "iter_activated_hosts() (pyinfra.api.inventory.inventory method)": [[15, "pyinfra.api.inventory.Inventory.iter_activated_hosts"]], "iter_active_hosts() (pyinfra.api.inventory.inventory method)": [[15, "pyinfra.api.inventory.Inventory.iter_active_hosts"]], "len_activated_hosts() (pyinfra.api.inventory.inventory method)": [[15, "pyinfra.api.inventory.Inventory.len_activated_hosts"]], "len_active_hosts() (pyinfra.api.inventory.inventory method)": [[15, "pyinfra.api.inventory.Inventory.len_active_hosts"]], "make_hosts_and_groups() (pyinfra.api.inventory.inventory method)": [[15, "pyinfra.api.inventory.Inventory.make_hosts_and_groups"]], "pyinfra.api.inventory": [[15, "module-pyinfra.api.inventory"]], "state (pyinfra.api.inventory.inventory attribute)": [[15, "pyinfra.api.inventory.Inventory.state"]], "operationmeta (class in pyinfra.api.operation)": [[16, "pyinfra.api.operation.OperationMeta"]], "add_op() (in module pyinfra.api.operation)": [[16, "pyinfra.api.operation.add_op"]], "attach_args() (in module pyinfra.api.operation)": [[16, "pyinfra.api.operation.attach_args"]], "changed (pyinfra.api.operation.operationmeta property)": [[16, "pyinfra.api.operation.OperationMeta.changed"]], "did_change() (pyinfra.api.operation.operationmeta method)": [[16, "pyinfra.api.operation.OperationMeta.did_change"]], "did_error() (pyinfra.api.operation.operationmeta method)": [[16, "pyinfra.api.operation.OperationMeta.did_error"]], "did_not_change() (pyinfra.api.operation.operationmeta method)": [[16, "pyinfra.api.operation.OperationMeta.did_not_change"]], "did_succeed() (pyinfra.api.operation.operationmeta method)": [[16, "pyinfra.api.operation.OperationMeta.did_succeed"]], "ensure_shared_op_meta() (in module pyinfra.api.operation)": [[16, "pyinfra.api.operation.ensure_shared_op_meta"]], "execute_immediately() (in module pyinfra.api.operation)": [[16, "pyinfra.api.operation.execute_immediately"]], "executed (pyinfra.api.operation.operationmeta property)": [[16, "pyinfra.api.operation.OperationMeta.executed"]], "generate_operation_name() (in module pyinfra.api.operation)": [[16, "pyinfra.api.operation.generate_operation_name"]], "get_operation_name_from_func() (in module pyinfra.api.operation)": [[16, "pyinfra.api.operation.get_operation_name_from_func"]], "is_complete() (pyinfra.api.operation.operationmeta method)": [[16, "pyinfra.api.operation.OperationMeta.is_complete"]], "operation() (in module pyinfra.api.operation)": [[16, "pyinfra.api.operation.operation"]], "pyinfra.api.operation": [[16, "module-pyinfra.api.operation"]], "set_complete() (pyinfra.api.operation.operationmeta method)": [[16, "pyinfra.api.operation.OperationMeta.set_complete"]], "solve_operation_consistency() (in module pyinfra.api.operation)": [[16, "pyinfra.api.operation.solve_operation_consistency"]], "stderr (pyinfra.api.operation.operationmeta property)": [[16, "pyinfra.api.operation.OperationMeta.stderr"]], "stderr_lines (pyinfra.api.operation.operationmeta property)": [[16, "pyinfra.api.operation.OperationMeta.stderr_lines"]], "stdout (pyinfra.api.operation.operationmeta property)": [[16, "pyinfra.api.operation.OperationMeta.stdout"]], "stdout_lines (pyinfra.api.operation.operationmeta property)": [[16, "pyinfra.api.operation.OperationMeta.stdout_lines"]], "will_change (pyinfra.api.operation.operationmeta property)": [[16, "pyinfra.api.operation.OperationMeta.will_change"]], "pyinfra.api.operations": [[17, "module-pyinfra.api.operations"]], "run_host_op() (in module pyinfra.api.operations)": [[17, "pyinfra.api.operations.run_host_op"]], "run_ops() (in module pyinfra.api.operations)": [[17, "pyinfra.api.operations.run_ops"]], "basestatecallback (class in pyinfra.api.state)": [[18, "pyinfra.api.state.BaseStateCallback"]], "connect (pyinfra.api.state.statestage attribute)": [[18, "pyinfra.api.state.StateStage.Connect"]], "disconnect (pyinfra.api.state.statestage attribute)": [[18, "pyinfra.api.state.StateStage.Disconnect"]], "execute (pyinfra.api.state.statestage attribute)": [[18, "pyinfra.api.state.StateStage.Execute"]], "prepare (pyinfra.api.state.statestage attribute)": [[18, "pyinfra.api.state.StateStage.Prepare"]], "setup (pyinfra.api.state.statestage attribute)": [[18, "pyinfra.api.state.StateStage.Setup"]], "state (class in pyinfra.api.state)": [[18, "pyinfra.api.state.State"]], "statehostmeta (class in pyinfra.api.state)": [[18, "pyinfra.api.state.StateHostMeta"]], "statehostresults (class in pyinfra.api.state)": [[18, "pyinfra.api.state.StateHostResults"]], "stateoperationhostdata (class in pyinfra.api.state)": [[18, "pyinfra.api.state.StateOperationHostData"]], "stateoperationmeta (class in pyinfra.api.state)": [[18, "pyinfra.api.state.StateOperationMeta"]], "statestage (class in pyinfra.api.state)": [[18, "pyinfra.api.state.StateStage"]], "activate_host() (pyinfra.api.state.state method)": [[18, "pyinfra.api.state.State.activate_host"]], "add_callback_handler() (pyinfra.api.state.state method)": [[18, "pyinfra.api.state.State.add_callback_handler"]], "args (pyinfra.api.state.stateoperationmeta attribute)": [[18, "pyinfra.api.state.StateOperationMeta.args"]], "check_for_changes (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.check_for_changes"]], "command_generator (pyinfra.api.state.stateoperationhostdata attribute)": [[18, "pyinfra.api.state.StateOperationHostData.command_generator"]], "config (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.config"]], "current_deploy_filename (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.current_deploy_filename"]], "current_exec_filename (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.current_exec_filename"]], "current_op_file_number (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.current_op_file_number"]], "current_stage (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.current_stage"]], "cwd (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.cwd"]], "error_ops (pyinfra.api.state.statehostresults attribute)": [[18, "pyinfra.api.state.StateHostResults.error_ops"]], "fail_hosts() (pyinfra.api.state.state method)": [[18, "pyinfra.api.state.State.fail_hosts"]], "get_meta_for_host() (pyinfra.api.state.state method)": [[18, "pyinfra.api.state.State.get_meta_for_host"]], "get_op_data_for_host() (pyinfra.api.state.state method)": [[18, "pyinfra.api.state.State.get_op_data_for_host"]], "get_op_meta() (pyinfra.api.state.state method)": [[18, "pyinfra.api.state.State.get_op_meta"]], "get_op_order() (pyinfra.api.state.state method)": [[18, "pyinfra.api.state.State.get_op_order"]], "get_results_for_host() (pyinfra.api.state.state method)": [[18, "pyinfra.api.state.State.get_results_for_host"]], "get_warning_counter() (pyinfra.api.state.state method)": [[18, "pyinfra.api.state.State.get_warning_counter"]], "global_arguments (pyinfra.api.state.stateoperationhostdata attribute)": [[18, "pyinfra.api.state.StateOperationHostData.global_arguments"]], "global_arguments (pyinfra.api.state.stateoperationmeta attribute)": [[18, "pyinfra.api.state.StateOperationMeta.global_arguments"]], "host_before_connect() (pyinfra.api.state.basestatecallback static method)": [[18, "pyinfra.api.state.BaseStateCallback.host_before_connect"]], "host_connect() (pyinfra.api.state.basestatecallback static method)": [[18, "pyinfra.api.state.BaseStateCallback.host_connect"]], "host_connect_error() (pyinfra.api.state.basestatecallback static method)": [[18, "pyinfra.api.state.BaseStateCallback.host_connect_error"]], "host_disconnect() (pyinfra.api.state.basestatecallback static method)": [[18, "pyinfra.api.state.BaseStateCallback.host_disconnect"]], "ignored_error_ops (pyinfra.api.state.statehostresults attribute)": [[18, "pyinfra.api.state.StateHostResults.ignored_error_ops"]], "increment_warning_counter() (pyinfra.api.state.state method)": [[18, "pyinfra.api.state.State.increment_warning_counter"]], "init() (pyinfra.api.state.state method)": [[18, "pyinfra.api.state.State.init"]], "initialised (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.initialised"]], "inventory (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.inventory"]], "is_executing (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.is_executing"]], "is_host_in_limit() (pyinfra.api.state.state method)": [[18, "pyinfra.api.state.State.is_host_in_limit"]], "names (pyinfra.api.state.stateoperationmeta attribute)": [[18, "pyinfra.api.state.StateOperationMeta.names"]], "op_hashes (pyinfra.api.state.statehostmeta attribute)": [[18, "pyinfra.api.state.StateHostMeta.op_hashes"]], "op_order (pyinfra.api.state.stateoperationmeta attribute)": [[18, "pyinfra.api.state.StateOperationMeta.op_order"]], "operation_end() (pyinfra.api.state.basestatecallback static method)": [[18, "pyinfra.api.state.BaseStateCallback.operation_end"]], "operation_host_error() (pyinfra.api.state.basestatecallback static method)": [[18, "pyinfra.api.state.BaseStateCallback.operation_host_error"]], "operation_host_start() (pyinfra.api.state.basestatecallback static method)": [[18, "pyinfra.api.state.BaseStateCallback.operation_host_start"]], "operation_host_success() (pyinfra.api.state.basestatecallback static method)": [[18, "pyinfra.api.state.BaseStateCallback.operation_host_success"]], "operation_meta (pyinfra.api.state.stateoperationhostdata attribute)": [[18, "pyinfra.api.state.StateOperationHostData.operation_meta"]], "operation_start() (pyinfra.api.state.basestatecallback static method)": [[18, "pyinfra.api.state.BaseStateCallback.operation_start"]], "ops (pyinfra.api.state.statehostmeta attribute)": [[18, "pyinfra.api.state.StateHostMeta.ops"]], "ops (pyinfra.api.state.statehostresults attribute)": [[18, "pyinfra.api.state.StateHostResults.ops"]], "ops_change (pyinfra.api.state.statehostmeta attribute)": [[18, "pyinfra.api.state.StateHostMeta.ops_change"]], "ops_no_change (pyinfra.api.state.statehostmeta attribute)": [[18, "pyinfra.api.state.StateHostMeta.ops_no_change"]], "parent_op_hash (pyinfra.api.state.stateoperationhostdata attribute)": [[18, "pyinfra.api.state.StateOperationHostData.parent_op_hash"]], "partial_ops (pyinfra.api.state.statehostresults attribute)": [[18, "pyinfra.api.state.StateHostResults.partial_ops"]], "pool (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.pool"]], "print_fact_info (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.print_fact_info"]], "print_fact_input (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.print_fact_input"]], "print_fact_output (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.print_fact_output"]], "print_input (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.print_input"]], "print_noop_info (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.print_noop_info"]], "print_output (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.print_output"]], "pyinfra.api.state": [[18, "module-pyinfra.api.state"]], "set_op_data_for_host() (pyinfra.api.state.state method)": [[18, "pyinfra.api.state.State.set_op_data_for_host"]], "set_stage() (pyinfra.api.state.state method)": [[18, "pyinfra.api.state.State.set_stage"]], "should_check_for_changes() (pyinfra.api.state.state method)": [[18, "pyinfra.api.state.State.should_check_for_changes"]], "should_raise_failed_hosts (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.should_raise_failed_hosts"]], "stage_warnings (pyinfra.api.state.state attribute)": [[18, "pyinfra.api.state.State.stage_warnings"]], "success_ops (pyinfra.api.state.statehostresults attribute)": [[18, "pyinfra.api.state.StateHostResults.success_ops"]], "trigger_callbacks() (pyinfra.api.state.state method)": [[18, "pyinfra.api.state.State.trigger_callbacks"]], "cache_key (pyinfra.api.util.get_file_io property)": [[19, "pyinfra.api.util.get_file_io.cache_key"]], "filename_or_io (pyinfra.api.util.get_file_io attribute)": [[19, "pyinfra.api.util.get_file_io.filename_or_io"]], "format_exception() (in module pyinfra.api.util)": [[19, "pyinfra.api.util.format_exception"]], "get_call_location() (in module pyinfra.api.util)": [[19, "pyinfra.api.util.get_call_location"]], "get_caller_frameinfo() (in module pyinfra.api.util)": [[19, "pyinfra.api.util.get_caller_frameinfo"]], "get_file_io (class in pyinfra.api.util)": [[19, "pyinfra.api.util.get_file_io"]], "get_file_path() (in module pyinfra.api.util)": [[19, "pyinfra.api.util.get_file_path"]], "get_file_sha1() (in module pyinfra.api.util)": [[19, "pyinfra.api.util.get_file_sha1"]], "get_kwargs_str() (in module pyinfra.api.util)": [[19, "pyinfra.api.util.get_kwargs_str"]], "get_operation_order_from_stack() (in module pyinfra.api.util)": [[19, "pyinfra.api.util.get_operation_order_from_stack"]], "get_path_permissions_mode() (in module pyinfra.api.util)": [[19, "pyinfra.api.util.get_path_permissions_mode"]], "get_template() (in module pyinfra.api.util)": [[19, "pyinfra.api.util.get_template"]], "log_error_or_warning() (in module pyinfra.api.util)": [[19, "pyinfra.api.util.log_error_or_warning"]], "log_host_command_error() (in module pyinfra.api.util)": [[19, "pyinfra.api.util.log_host_command_error"]], "log_operation_start() (in module pyinfra.api.util)": [[19, "pyinfra.api.util.log_operation_start"]], "make_hash() (in module pyinfra.api.util)": [[19, "pyinfra.api.util.make_hash"]], "memoize() (in module pyinfra.api.util)": [[19, "pyinfra.api.util.memoize"]], "mode (pyinfra.api.util.get_file_io attribute)": [[19, "pyinfra.api.util.get_file_io.mode"]], "print_host_combined_output() (in module pyinfra.api.util)": [[19, "pyinfra.api.util.print_host_combined_output"]], "pyinfra.api.util": [[19, "module-pyinfra.api.util"]], "raise_if_bad_type() (in module pyinfra.api.util)": [[19, "pyinfra.api.util.raise_if_bad_type"]], "sha1_hash() (in module pyinfra.api.util)": [[19, "pyinfra.api.util.sha1_hash"]], "try_int() (in module pyinfra.api.util)": [[19, "pyinfra.api.util.try_int"]], "contextmanager (class in pyinfra.context)": [[20, "pyinfra.context.ContextManager"]], "contextobject (class in pyinfra.context)": [[20, "pyinfra.context.ContextObject"]], "localcontextobject (class in pyinfra.context)": [[20, "pyinfra.context.LocalContextObject"]], "container (class in pyinfra.context)": [[20, "pyinfra.context.container"]], "get() (pyinfra.context.contextmanager method)": [[20, "pyinfra.context.ContextManager.get"]], "init_base_classes() (in module pyinfra.context)": [[20, "pyinfra.context.init_base_classes"]], "isset() (pyinfra.context.contextmanager method)": [[20, "pyinfra.context.ContextManager.isset"]], "module (pyinfra.context.container attribute)": [[20, "pyinfra.context.container.module"]], "pyinfra.context": [[20, "module-pyinfra.context"]], "reset() (pyinfra.context.contextmanager method)": [[20, "pyinfra.context.ContextManager.reset"]], "set() (pyinfra.context.contextmanager method)": [[20, "pyinfra.context.ContextManager.set"]], "set_base() (pyinfra.context.contextmanager method)": [[20, "pyinfra.context.ContextManager.set_base"]], "use() (pyinfra.context.contextmanager method)": [[20, "pyinfra.context.ContextManager.use"]], "include() (in module pyinfra.local)": [[21, "pyinfra.local.include"]], "pyinfra.local": [[21, "module-pyinfra.local"]], "shell() (in module pyinfra.local)": [[21, "pyinfra.local.shell"]], "progress_spinner() (in module pyinfra.progress)": [[22, "pyinfra.progress.progress_spinner"]], "pyinfra.progress": [[22, "module-pyinfra.progress"]], "pyinfra.version": [[23, "module-pyinfra.version"]]}}) \ No newline at end of file diff --git a/en/3.x/support.html b/en/3.x/support.html index a78b652d..1de04529 100644 --- a/en/3.x/support.html +++ b/en/3.x/support.html @@ -107,6 +107,8 @@

      Navigation

    • Writing Connectors
    • Writing Facts & Operations
    • Using the API
    • +
    • Full Example
    • +
    • Basic Localhost Example

    Meta

    Meta