===============================
Plumbery
.. image:: https://img.shields.io/pypi/v/plumbery.svg
:target: https://pypi.python.org/pypi/plumbery
.. image:: https://img.shields.io/travis/DimensionDataCBUSydney/plumbery.svg
:target: https://travis-ci.org/DimensionDataCBUSydney/plumbery
.. image:: https://coveralls.io/repos/github/DimensionDataCBUSydney/plumbery/badge.svg?branch=master
:target: https://coveralls.io/github/DimensionDataCBUSydney/plumbery?branch=master
.. image:: https://readthedocs.org/projects/plumbery/badge/?version=latest
:target: http://plumbery.readthedocs.io/en/latest/?badge=latest
.. image:: https://img.shields.io/pypi/l/plumbery.svg?maxAge=2592000
:target: https://pypi.python.org/pypi/plumbery
.. image:: https://img.shields.io/pypi/pyversions/plumbery.svg?maxAge=2592000
:target: https://pypi.python.org/pypi/plumbery
Infrastructure as code at Dimension Data with Apache Libcloud
- Documentation:
Plumbery at ReadTheDocs_ - Python package:
Plumbery at PyPi_ - Source code:
Plumbery at GitHub_ - Free software:
Apache License (2.0)_
Features
- 50+ tutorials covering popular use cases
- Read fittings plan in YAML
- Load parameters in separate YAMl file
- Use cloud API to create the network infrastructure, and to build nodes
- Bootstrap nodes with cloud-init configuration directives
- Inject actual addresses and on-the-fly secrets to contextualisation
- Create RSA keys and passwords to secure deployments
- Pass environment variables to target nodes
- Preserve random secrets across multiple invocations
- Create network domains and Ethernet networks
- Reserve public IPv4 addresses
- Manage network address translation rules
- Manage firewall rules
- Create load balancers with pools of nodes
- All images in libraries are available to new nodes
- Specify number of CPU, or core per CPU, and CPU speed
- Specify node memory
- Add virtual disks and specify tiers of storage
- Add multiple network interfaces to nodes
- Set private IPv4 statically
- Add public IPv4 addresses to nodes
- Add monitoring to nodes
- Add backup to nodes
- Build all blueprints
- Build a blueprint across multiple locations
- Start all nodes
- Start nodes belonging to the same blueprint
- Polish Linux nodes for quick bootstrapping
- Build a full inventory of nodes that have been deployed
- Reflect fittings into a ready-to-use inventory for ansible
- Stop all nodes
- Stop nodes belonging to the same blueprint
- Wipe all nodes
- Wipe nodes belonging to the same blueprint
- Destroy part of the setup, or all blueprints
- You can extend plumbery with your own software, it has been designed for that
- Run from the command line, or as a python library, or as a container
- Accept custom actions from the command line too
- Limit plumbing to some locations if needed
Contributors
Bernard Paques_ [Dimension Data employee] (development lead)Anthony Shaw_ [Dimension Data employee]Olivier Grosjeanne_ [Dimension Data employee]Jacques Clément_ [Dimension Data employee]Asim Khawaja_ [Dimension Data employee]Geoffrey Cristallo_
Credits
Cloud-Init_Apache Libcloud_- netifaces_
- PyYAML_
- Cookiecutter_
cookiecutter-pypackage_
.. _Plumbery at ReadTheDocs: https://plumbery.readthedocs.org
.. _Plumbery at PyPi: https://pypi.python.org/pypi/plumbery
.. _Plumbery at GitHub: https://github.com/DimensionDataCBUSydney/plumbery
.. _Apache License (2.0): http://www.apache.org/licenses/LICENSE-2.0
.. _Bernard Paques: https://github.com/bernard357
.. _Anthony Shaw: https://github.com/tonybaloney
.. _Olivier Grosjeanne: https://github.com/job-so
.. _Jacques Clément: https://github.com/jacquesclement
.. _Asim Khawaja: https://github.com/asimkhawaja
.. _Geoffrey Cristallo: https://be.linkedin.com/in/geoffrey-cristallo-5b506417
.. _Cloud-Init: https://cloudinit.readthedocs.org/en/latest/topics/examples.html
.. _Apache Libcloud: https://libcloud.apache.org/
.. _netifaces: https://pypi.python.org/pypi/netifaces
.. _PyYAML: https://pypi.python.org/pypi/PyYAML
.. _Cookiecutter: https://github.com/audreyr/cookiecutter
.. _cookiecutter-pypackage: https://github.com/audreyr/cookiecutter-pypackage