Metadata-Version: 2.1
Name: pyinfra
Version: 0.11.dev1
Summary: pyinfra automates/provisions/manages/deploys infrastructure.
Home-page: http://github.com/Fizzadar/pyinfra
Author: Nick / Fizzadar
Author-email: pointlessrambler@gmail.com
License: MIT
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: Intended Audience :: Information Technology
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: System :: Systems Administration
Classifier: Topic :: System :: Installation/Setup
Classifier: Topic :: Utilities
Description-Content-Type: text/markdown
Requires-Dist: gevent (!=1.5a1,<2,>1)
Requires-Dist: paramiko (<3,>1)
Requires-Dist: click (>2)
Requires-Dist: colorama (<1)
Requires-Dist: docopt (<1)
Requires-Dist: jinja2 (<3,>2)
Requires-Dist: python-dateutil (<3,>2)
Requires-Dist: six (<2,>1)
Requires-Dist: setuptools
Requires-Dist: configparser
Provides-Extra: dev
Requires-Dist: pytest (==4.6.6) ; extra == 'dev'
Requires-Dist: pytest-cov (==2.8.1) ; extra == 'dev'
Requires-Dist: jsontest (==1.4) ; extra == 'dev'
Requires-Dist: coverage (==4.5.4) ; extra == 'dev'
Requires-Dist: mock (==3.0.5) ; extra == 'dev'
Requires-Dist: codecov (==2.0.15) ; extra == 'dev'
Requires-Dist: flake8 ; extra == 'dev'
Requires-Dist: flake8-commas ; extra == 'dev'
Requires-Dist: flake8-quotes ; extra == 'dev'
Requires-Dist: flake8-import-order ; extra == 'dev'
Requires-Dist: sphinx (==2.2.1) ; extra == 'dev'
Requires-Dist: sphinx-autobuild (==0.7.1) ; extra == 'dev'
Requires-Dist: guzzle-sphinx-theme (==0.7.11) ; extra == 'dev'
Requires-Dist: recommonmark (==0.5.0) ; extra == 'dev'
Requires-Dist: wheel ; extra == 'dev'
Requires-Dist: twine (==3.1.0) ; extra == 'dev'
Requires-Dist: ipdb (==0.10.3) ; extra == 'dev'
Requires-Dist: ipdbplugin (==1.4.5) ; extra == 'dev'
Provides-Extra: docs
Requires-Dist: sphinx (==2.2.1) ; extra == 'docs'
Requires-Dist: sphinx-autobuild (==0.7.1) ; extra == 'docs'
Requires-Dist: guzzle-sphinx-theme (==0.7.11) ; extra == 'docs'
Requires-Dist: recommonmark (==0.5.0) ; extra == 'docs'
Provides-Extra: test
Requires-Dist: pytest (==4.6.6) ; extra == 'test'
Requires-Dist: pytest-cov (==2.8.1) ; extra == 'test'
Requires-Dist: jsontest (==1.4) ; extra == 'test'
Requires-Dist: coverage (==4.5.4) ; extra == 'test'
Requires-Dist: mock (==3.0.5) ; extra == 'test'
Requires-Dist: codecov (==2.0.15) ; extra == 'test'
Requires-Dist: flake8 ; extra == 'test'
Requires-Dist: flake8-commas ; extra == 'test'
Requires-Dist: flake8-quotes ; extra == 'test'
Requires-Dist: flake8-import-order ; extra == 'test'

<h1>
    <a href="https://pyinfra.com">
        <img src="https://raw.githubusercontent.com/Fizzadar/pyinfra/master/docs/static/logo_full.png" height="48px" />
    </a>
</h1>

[![PyPI version](https://img.shields.io/pypi/v/pyinfra?color=blue)](https://pypi.python.org/pypi/pyinfra)
[![Docs status](https://img.shields.io/readthedocs/pyinfra)](https://pyinfra.readthedocs.io)
[![Travis.CI status](https://img.shields.io/travis/Fizzadar/pyinfra)](https://travis-ci.org/Fizzadar/pyinfra)
[![Codecov Coverage](https://img.shields.io/codecov/c/gh/Fizzadar/pyinfra)](https://codecov.io/github/Fizzadar/pyinfra)
[![MIT Licensed](https://img.shields.io/pypi/l/pyinfra)](https://github.com/Fizzadar/pyinfra/blob/develop/LICENSE.md)

pyinfra automates/provisions/manages/deploys infrastructure super fast at massive scale. It can be used for ad-hoc command execution, service deployment, configuration management and more. Core design features include:

+ 🚀 **Super fast** execution over thousands of targets with predictable performance.
+ 🚨 **Instant debugging** with stdout + stderr output on error, and `-v` to print it always.
+ 💻 **Agentless execution** by speaking native SSH/Docker/subprocess depending on the target.
+ ❗️ **Two stage process** that enables `--dry` runs before making any changes.
+ 📦 **Extendable** with _any_ Python package as configured & written in standard Python.
+ 🔌 **Integrated** with Docker, Vagrant & Ansible out of the box.

When you run pyinfra you'll see something like ([non animated version](https://raw.githubusercontent.com/Fizzadar/pyinfra/master/docs/static/example_deploy.png)):

<img width="100%" src="https://raw.githubusercontent.com/Fizzadar/pyinfra/master/docs/static/example_deploy.gif" />

## Quickstart

pyinfra can be installed via pip:

```sh
pip install pyinfra
```

Now you can execute commands & operations over SSH:

```sh
# Execute an abitrary shell command
pyinfra my-server.net exec -- echo "hello world"

# Install iftop apt package if not present
pyinfra my-server.net apt.packages iftop sudo=true
```

These can then be saved to a _deploy file_, let's call it `deploy.py`:

```py
from pyinfra.modules import apt

apt.packages(
    {'Install iftop'},
    'iftop',
    sudo=True,
)
```

And executed with:

```sh
pyinfra my-server.net deploy.py
```

## Documentation

+ [Getting started](https://pyinfra.readthedocs.io/page/getting_started.html)
+ [Documentation](https://pyinfra.readthedocs.io)
+ [Example deploy](example)
+ [API Example](https://pyinfra.readthedocs.io/page/api/example.html)
+ [How the deploy works](https://pyinfra.readthedocs.io/page/deploy_process.html)


