About me
eng. Ilian Iliev
● Web Developer for 8 years
● Python/Django fan for 3 years
● Ubuntu user for 2 years
● Part of Cybert Arts Web Team
● iiliev@melontech.com
● http://ilian.i-n-i.org
● https://github.com/IlianIliev/
Repetition
"Repetition leads to boredom, boredom to
horrifying mistakes, horrifying mistakes to
God-I-wish-I-was-still-bored" Will Larson
Automation
● Daily tasks
● Server setup
● System update/maintenance tasks
● New project creation
● Deployment procedures
All of the above on multiple stations all around
the world cloud
Show me the Money
or
What we Gain
Developers QAs Admins
● easy deployment ● new build here and now ● less work
● less mistakes ● automate smoke test ● move server setup in the
● no more begging the process hands of the developers
admins ● no more "make me a
new build" requests
● focus only on specific
problems
Fabric
Fabric is a Python (2.5 or higher) library and
command-line tool for streamlining the use of
SSH for application deployment or systems
administration tasks.
Why Fabric
● It is Python(Python is awesome)
● It is simple
● It is light
● It is quick
● It is useful
Simple Example ...
from fabric.api import run
def host_type():
run('uname -s')
#fab -H localhost, linuxbox host_type
... and Advanced One
from fabric.api import sudo
def add_user(user, make_sudoer = False):
with settings(warn_only=True):
result = sudo('useradd -m %s' % (user))
if not result.failed:
if make_sudoer:
sudo('echo "%s ALL=(ALL) ALL" >> /etc/sudoers' % user)
password = generate_password()
sudo('echo "%s:%s" | chpasswd' % (user, password))
return password
return False