What’s provy and provisioning¶
According to Wikipedia, provisioning is “the process of preparing and equipping a network to allow it to provide (new) services to its users”.
We’ll draw from this concept the part of preparing and equipping.
provy is a infrastructure provisioning automation tool. Its main goal is making it easy to create highly-scalable architectures with simple scripts.
provy stands on the shoulder of giants! fabric for the networking part and jinja2 for templating capabilities.
A very simple, yet working example of a valid provyfile.py:
#!/usr/bin/python
# -*- coding: utf-8 -*-
from provy.core import Role
from provy.more.debian import UserRole, AptitudeRole
class SimpleServer(Role):
def provision(self):
with self.using(UserRole) as role:
role.ensure_user('my-user', identified_by='my-pass', is_admin=True)
with self.using(AptitudeRole) as role:
role.ensure_package_installed('vim')
servers = {
'frontend': {
'address': '33.33.33.33',
'user': 'root',
'roles': [
SimpleServer
]
}
}