diff --git a/docs/scenarios/admin.rst b/docs/scenarios/admin.rst index 1de9fa6..84a9189 100644 --- a/docs/scenarios/admin.rst +++ b/docs/scenarios/admin.rst @@ -4,7 +4,42 @@ Systems Administration Fabric ------ -.. todo:: Write about Fabric +Fabric is a library for simplifying system administration tasks. While Chef +and Puppet tend to focus on managing servers and system libraries, +fabric is more focused on application level tasks such as deployment. + +Install Fabric: + +:: + + pip install fabric + +The following code will ssh into both of our servers, cd to our project +directory, activate the virtual environment, pull the newest codebase, +and restart the application server. + +:: + + from fabric.api import cd, env, prefix, run, task + + env.hosts = ['my_server1', 'my_server2'] + + @task + def deploy(): + with cd('/var/www/project-env/project'): + with prefix('. ../bin/activate'): + run('git pull') + run('touch app.wsgi') + +With the previous code saved in a file named fabfile.py, we merely need to run +the following command to deploy our application to both of our servers. + +:: + + $ fab deploy + +Additional features include parallel execution, interaction with remote +programs, and host grouping. Chef ----