Metadata-Version: 1.1
Name: ficloud
Version: 0.1.4
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.
        
        NB! ficloud is currently in concept stage, so documentation for future components is only thing that exist now.
        
        Features:
        
         - define your app config through Dockerfile and fig.yml
         - easy deploy through git push
         - pushing several versions of app (dev, staging, production ... etc)
         - simple nginx based balancer
         - 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)
         - ftp access for container persistence storage
        
        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 "\033[0;32mDocker is installed - OK\033[0m";
        
        Install packages::
        
            $ sudo apt-get install python-pip
            $ sudo pip install ficloud-server
        
        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 into this file
            $ chmod -R go-rwx ~/.ssh
        
        Test you can ssh into your server using ficloud account::
        
            $ 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:
        
            $ sudo setfacl -m user:ficloud:rX /var/lib/docker
            $ sudo setfacl -R -m user:ficloud:rwX /var/lib/docker/vfs
            $ sudo setfacl -R -m default:user:ficloud:rwX /var/lib/docker/vfs
        
        
        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
        
        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
