I’ve been playing with Python here and at the same time Fabric v.0.9 for simple deployment. This is a handy tool to manage several servers for application development,testing and production.
The code below is save to a file named fabfile.py
# Works with fabric v0.9 # from fabric.api import run, env from fabric.operations import local,put def dev_server(): env.user = 'user_name' env.hosts = ['testserver.domain.com'] def staging_server(): env.user = 'user_name' env.hosts = ['staging.domain.com'] def production_server(): env.user = 'user_name' env.hosts = [' prod1.domain.com', 'prod2.domain.com' ] # define needed functions here. def host_info(): print 'Checking lsb_release of host: ', env.host run('lsb_release -a') def uptime(): run('uptime') def simple_deploy(): put ('/tmp/testfile','/tmp') # # add deployment codes here
This assumes we can login to any of the server w/o ssh keypair.
See this link for setting up SSH without password.
Tip: Also if you have different keypair for each servers(dev,staging,production), you can add keypair using the command ssh-add.
Now let’s try, checking for uptime of the servers.
prompt> fab --list prompt> fab dev_server uptime prompt> fab production_server uptime
Deploying a file(but can be any web application). In this case the file to be uploaded is /tmp/testfile to /tmp of the production servers.
prompt> fab production_server simple_deploy
References:
SSH Without Password
Fabic 0.9.0 Documentation
Switched-To-Python-Fabric
Other Alternatives:
Chef
Puppet Labs
If you need consulting services in setting up your servers or deployment process, you can drop me a mail. 😉