Metadata-Version: 1.1
Name: ficloud
Version: 0.1.8
Summary: Production cloud deployments of fig infrastructure with docker
Home-page: http://pywizard.com/ficloud/
Author: Alex Rudakov
Author-email: ribozz@gmail.com
License: UNKNOWN
Description: ficloud
        ======
        
        ficloud alows to deploy your fig infrastructure to remote servers . Also it
        provides all the services needed for hosting production apps.
        
        Features:
        
         - define your app config through Dockerfile and fig.yml
         - easy deploy through git push
         - pushing several versions of app (dev, staging, production ... etc)
         - haproxy based balancer tcp
         - easy switch balancer endpoint between app versions (ex swap prod and dev)
         - persistent storage for containers
         - easy copying persistence storage between containers (prod -> staging, etc)
         - push and pull persistent volumes from your production server
        
        Installation
        -------------
        
        Install docker: http://docs.docker.io/en/latest/installation/
        
        Make sure you can run docker containers::
        
            $ sudo docker run -i -t ubuntu echo -e "OK";
        
        Install packages::
        
            $ sudo apt-get install python-pip
            $ sudo pip install ficloud
        
        Test that ficloud is working::
        
            $ ficloud-server app-list
        
            +-----+---------+-------+
            | App | Version | State |
            +-----+---------+-------+
            +-----+---------+-------+
        
        Create ficloud user (you can pick any username)::
        
            $ sudo useradd -s /bin/bash -d /home/ficloud -m ficloud
            $ sudo su ficloud
            $ cd /home/ficloud
            $ mkdir ~/.ssh
            $ vim ~/.authorized_keys # insert your ssh key and ssh key of your root user into this file
            $ chmod -R go-rwx ~/.ssh
        
        Test you can ssh into your server using ficloud account::
        
            $ ssh ficloud@yourserver.com
        
        Make sure your root user can also access your server::
        
            $ sudo ssh ficloud@yourserver.com
        
        Add ficloud user to docker group::
        
            $ sudo usermod -a -G docker ficloud
        
        Check ficloud can run docker now::
        
            $ sudo su ficloud
            $ docker run -i -t ubuntu echo -e "\033[0;32mFicloud can run Docker - OK\033[0m";
            $ exit
        
        Install haproxy::
        
            $ sudo apt-get install haproxy
            $ sudo echo "ENABLED=1" > /etc/default/haproxy
            $ sudo service haproxy start
            $ curl https://raw.github.com/pywizard/ficloud/master/examples/haproxy.cfg.tpl | sudo tee /etc/haproxy/haproxy.cfg.tpl
        
        Now install incron to reconfigure haproxy, when you deploy new apps::
        
            $ sudo apt-get install incron
            $ sudo echo "root" > /etc/incron.allow
        
        Edit incrontab file and insert lines generated by inotify-dump in incrontab file::
        
            $ ficloud-server inotify-dump
        
            /home/ficloud/apps-conf IN_MODIFY,IN_CREATE,IN_DELETE,IN_NO_LOOP /usr/local/bin/ficloud-server balancer-dump /home/ficloud/apps-conf
            /etc/haproxy/haproxy.cfg.tpl IN_MODIFY,IN_CREATE,IN_DELETE,IN_NO_LOOP /usr/local/bin/ficloud-server balancer-dump /home/ficloud/apps-conf
        
            $ sudo incrontab -e
        
        And the last thing. Allow ficloud to read-write any docker container volume:
        
            ficloud ALL= NOPASSWD:/usr/bin/rsync
        
        
        Deployement
        -------------
        
        Start by creating application that is working locally using fig.yml
        
        Set working ssh account::
        
            $ ficloud use ficloud@myserver.com
        
        Create an application:
        
            $ ficloud remote app-create foo
        
        Deploy code:
        
            $ git push ficloud@myserver.com:apps/foo master:prod
        
        Check port number:
        
            $ ficloud remote app-list
        
        Configure balancer:
        
            $ ficloud remote balancer set mydomain.com web:80@foo#prod
        
        Push volume to deployment:
        
            $ filcoud volume-push web/code@foo#master
        
        Push volume from deployment:
        
            $ filcoud volume-pull web/code@foo#master
        
        Remote volume copy:
        
            $ ficloud remote volume-copy web/code@foo#master foo#v1
        
        Your app is deployed!
        
        Data migration
        ----------------
        
        
        
Platform: UNKNOWN
Classifier: Development Status :: 1 - Planning
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Documentation
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: System :: Installation/Setup
Classifier: Topic :: System :: Software Distribution
