The fabfile.py script then does a number of operations including adding a PPA to your apt repository list, installing more stuff via apt-get, and downloading and manually installing random tarballs from the internet.
Here are some interesting examples from the deployment script:
@task
def uninstall_couchdb():
"""
Install CouchDB 1.3.0
"""
require_file(url='http://apache.crihan.fr/dist/couchdb/source/' +
'1.3.0/apache-couchdb-1.3.0.tar.gz')
@task
def uninstall_redis():
'''
Uninstall Redis 2.4.14
'''
su_delete('/var/lib/redis')
su_delete('/var/db/redis')
su_delete('/var/log/redis')
su_delete('/var/run/redis')
su_delete('/opt/redis-2.4.14')
su_delete('/etc/redis')
su_delete('/etc/supervisor/conf.d/redis_cozy.conf')
supervisor.update_config()
print(green("Redis 2.4.14 successfully uninstalled"))
I am interested to know what issues the author had with getting deployment to work via traditional means (such as producing a .deb package out of the product that would be easy to install and uninstall, and have the appropriate dependencies properly set up). While this approach is quick and easy, I can't help but feel that it is prone to breakage and difficult to manage, especially in more professional environments.