Weitere ähnliche Inhalte
Ähnlich wie Repeatable Deployments and Installations (20)
Kürzlich hochgeladen (20)
Repeatable Deployments and Installations
- 4. NOW YOU HAVE A HUNDRED
NEW DEVELOPERS
NEW SERVERS
NEW VERSIONS
- 10. ISOLATION
PROTECT YOUR APP FROM OTHER APPS
REPEATABILITY
PULL TOGETHER ALL THE PARTS OF YOUR APP
SCALABILITY
O(1) DEPLOYMENTS
- 15. APP X APP Y
FOO 0.8 BLAH 2.2
BAR 1.23 BAR 1.23
BAZ 6.0c9 BLING 9.1b2
- 16. APP X APP Y
FOO 0.8 BLAH 2.2
BAR 1.23 BAR 1.24
BAZ 6.0c9 BLING 9.1b2
- 34. SMARTER
NO PARTIAL INSTALLS
NON-SUCKY CONSOLE OUTPUT
INSTALL FROM VCS
REQUIREMENTS FILES
UNINSTALL
- 38. REQUIREMENTS FILE
FRAMEWORK==0.2
LIBRARY>=1.3
-e svn+http://myrepo/svn/MyApp#egg=MyApp
- 40. FRESH DEPLOY
1. PULL FROM VCS
2. CREATE VENV
3. PIP INSTALL FROM REQUIREMENTS FILE
4. THERE IS NO STEP FOUR
- 41. ROCKSTAR.
http://www.flickr.com/photos/an-di/274127482
- 47. FABFILE.PY
from __future__ import with_statement
from fabric.api import *
env.hosts = ['server1.foo.com', 'server2.foo.com']
def test():
with settings(warn_only=True):
result = local('./manage.py test my_app', capture=False)
if result.failed:
abort("Aborting at user request.")
def pack():
local('tar czf /tmp/my_project.tgz .', capture=False)
def prepare():
test()
pack()
def deploy():
put('/tmp/my_project.tgz', '/tmp/')
with cd('/srv/django/my_project/'):
run('tar xzf /tmp/my_project.tgz')
run('touch app.wsgi')
- 50. FABFILE.PY
from __future__ import with_statement
from fabric.api import *
def staging():
env.hosts = ['staging.foo.com']
def production():
env.hosts = ['prod1.foo.com', 'prod2.foo.com']
# ... more fab actions ...
def deploy():
put('/tmp/my_project.tgz', '/tmp/')
with cd('/srv/django/my_project/'):
run('tar xzf /tmp/my_project.tgz')
run('touch app.wsgi')
- 53. VIRTUALENV
TO ISOLATE YOUR PROJECT
PIP
REPEATABLE DEPENDENCY INSTALLS
FABRIC
FOR AUTOMATED DEPLOYMENTS
- 56. THANK YOU!
@IDANGAZIT
IDAN@PIXANE.COM
http://bit.ly/repeatable-deployments