Automation - fabric, django and more
Click here to load reader
-
Upload
ilian-iliev -
Category
Technology
-
view
12.342 -
download
3
description
Transcript of Automation - fabric, django and more
Automation, Fabric and Django...
...or how to make our lives better
About meeng. Ilian Iliev
● Web Developer for 8 years● Python/Django fan for 3 years● Ubuntu user for 2 years● Part of Cybert Arts Web Team● [email protected]● 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● less mistakes● no more begging the
admins
● new build here and now● automate smoke test
process
● less work● move server setup in the
hands of the developers● 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
PHP Web Applications
Web Server PHP Files DB
Python Web Applications
Web Server uWSGI Python App DB
The Tools
● Ubuntu● Python● Fabric● Virtual environment● Django● Nginx● uWSGI● MySQL● GIT
Starting New Project
1. Isolation - virtualenv2. Install required packages3. Custom settings - project template4. Database setup5. Nginx/uwsgi files creation
Your Box(in the Cloud)
● VPS● OS Image● SSH
From pure box to working server
1. Install required packages2. Setup database server3. Deploy application4. Run application5. Go to celebrate
Demo
fab -H <host> -f <fabfile location> startproject:<project_name>
fab -H <host> -f <fabfile location> setup_server
fab -H <host> -f <fabfile location> deploy_project:<project_name>,<repo_url>
Links & Copyrights
Fabric: http://docs.fabfile.org/en/1.4.3/index.html
Fabric scripts used during presentation: https://github.com/IlianIliev/ubuntu-fabric-and-django
Icons copyrights belongs to:● http://www.heartinternet.co.uk/● http://www.iconshock.com/● http://barrymieny.deviantart.com/