{ "info": { "author": "Yauhen Yakimovich", "author_email": "eugeny.yakimovitch@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Framework :: Django", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "Operating System :: POSIX :: Linux", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: System :: Emulators" ], "description": "# picostack\n\nA super lightweight KVM virtualization manager suitable for single linux-based host system. A motivation to write yet another VM manager is simple - picostack is\n\n* open source (MIT license)\n* is written to be minimalistic\n* has little overhead, only control over instances\n* can be installed as a python package, i.e. `pip install picostack`\n* has a *KVM (qemu)* back-end\n* has web-interface to manipulate execution of VMs (in a fashion motivated \n by OpenStack)\n* powered by *django* framework \n* allows mapping of network ports from guest system into the host system\n\nNote that picostack is conceived as a virtualization manager - not a cloud \nservice provider' software, but a single server split of available resources.\n\n![alt text](https://raw.githubusercontent.com/ewiger/picostack/master/doc/screen1.png \"Screenshot of the web-interface with the overview of running VM instances\")\n\n\n---\nCopyright (c) 2014 Yauhen Yakimovich\n\nLicensed under the MIT License (MIT). Read a copy of LICENSE distributed with \nthis code.\n\n---\n\n### Creating VM instances by cloning\n\nTo produce a new VM instance one should always clone a previously registered \nimage disk. Machine starts with \"In cloning\" and transits to \"Stopped\" once \ndone. Such a machine can be \"launched\" using web-interface with **//host/instances** overview. As soon as the VM is started it obtains state \"Running\"\nand continues to boot. After some period of time one can connect to mapped \nports over the network to check if the guest has complete booting.\n\n### Adding new images\n\n```bash\npicostack init jeos \n```\n\nWill attempt to use *vmbuilder* to create an example ubuntu JeOS image, which can be copied and registered in the DB. \n\nIn practice, anything supported by KVM can be used as long as you can convert the disk image into [qcow2](http://www.linux-kvm.org/page/Qcow2) format (e.g. virtual box machines can be converted to be run by KVM).\n\nCurrently, in order to register a new *image* one should use an admin part of the web interface (which is a usual django-based ORM editing interface).\n\n## Installation\n\n### Create a dedicated pstk user\n\nStart by creating a new separate user for dedicated to run picostak daemon.\n\n```bash\nadduser pstk\nsudo usermod -a -G www-data pstk\nsudo usermod -a -G kvm pstk\n```\n\nwhere `www-data` is your apache user.\n\n### Debian prerequisites\n\n```bash\nsudo apt-get install python-dev\n```\n\n\n### Get a copy of picostack\n\nInstallation starts with obtaining a copy of picostack code either from github\nand perform a developer's installation like this:\n\n```bash\ngit clone https://github.com/ewiger/picostack.git\ncd picostack\npip install -e .\n```\n\nor just give it a try your luck and directly pick a PyPI package:\n\n```bash\npip install picostack\n```\n\n## Configuration\n\n### Two consoles\n\nPicostack has two controlling scripts that can be used in a command line to \noperate the program.\n\n```bash\nwhereis picostk \npicostk: /usr/local/bin/picostk\n```\n\nand\n\n```bash\nwhereis picostk-django\npicostk-django: /usr/local/bin/picostk-django\n```\n\nFirst one provides controlling interface over the picostack daemon as well as\ninstances and images of the application.\n\nSecond one is a django-admin interface to access functionality pf the django \nsystem.\n\n### Default configuration\n\nYou should use a (sudoer) user to run the application.\nCurrently the configuration folder is located in ~/.picostack\n\nCalling\n\n```bash\npicostk init config\nsudo picostk init db\n```\n\nwill populate the configuration folder with some default settings.\nPlease navigate there and adjust it if you need to.\n\nYou would also need to init the database. Make sure to add you picostack user () or in any other way make access to the DB file shared with apache user.\nDefault location is:\n\n**/var/picostack/db/picostk.sqlite3**\n\n### Running at boot time\n\nFirst, make sure you have the service script placed at */etc/init.d/pstk*.\n\nSecond, to install picostack service as a boot time script to be run by debian-like system one has to register it with:\n\n```bash\nupdate-rc.d pstk defaults\n```\n\nRemoving is achieved by:\n\n```bash\nupdate-rc.d -f pstk remove\n```\n\n### Configuring apache as the webinterface\n\nIt is not recommended to use `picostk-django runserver` for production \nenvironment. Instead one should use something more reliable and production \nready, e.g. [apache web server](http://httpd.apache.org/). \n\nThis should install and enable WSGI module in your apache: `aptitude install libapache2-mod-wsgi`.\n\nOnce module is installed, you can adopt the following example configuration of \nthe virtual host:\n\n```xml\n# picostack virtual host: \n\n\tServerAdmin i@am.admin\n\tDocumentRoot /usr/local/lib/python2.7/dist-packages/picostack\n\n\tServerName picostack.mysite.org\n\tErrorLog ${APACHE_LOG_DIR}/picostack.error.log\n\tCustomLog ${APACHE_LOG_DIR}/picostack.access.log combined\n\n\tWSGIScriptAlias / /usr/local/lib/python2.7/dist-packages/picostack/wsgi.py\n\tWSGIDaemonProcess picostack.mysite.org python-path=/usr/local/lib/python2.7/dist-packages/picostack:/usr/lib/python2.7/dist-packages/:/usr/local/lib/python2.7/dist-packages\n\tWSGIProcessGroup picostack.mysite.org\n\n\t\t\t\n\t\t\n\t\t\tRequire all granted\n\t\t\t# For apache <= 2.4 uncomment and use lines below instead\n\t # Order allow,deny\n\t # Allow from all\t\t\t\n\t\t\n\t\n\n\tAlias /static/admin/ /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/admin/\n\t\n\t\n\t\tRequire all granted\n\t\t# For apache <= 2.4 uncomment and use lines below instead\n # Order allow,deny\n # Allow from all\t\t\n\t\n\n\tAlias /static/ /usr/local/lib/python2.7/dist-packages/picostack/static/\n\n\t\n\t\tRequire all granted\n\t\t# For apache <= 2.4 uncomment and use lines below instead\n # Order allow,deny\n # Allow from all\n\t\n\n```\n\nwhere */usr/local/lib/python2.7/dist-packages/picostack/* is the path to\nuser's home folder and picostack.mysite.org is the website URL to be installed\nto.\n\nFor further details follow [modwsgi documantaion on django page](https://docs.djangoproject.com/en/1.6/howto/deployment/wsgi/modwsgi/).\n\n## Running tests\n\nThere are a bunch of nose tests inside *tests* folder. A quick start to run\nthem:\n\n```bash\npip install nose\ncd tests/\nnosetests\n```\n\n---\nwbr, yy", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/ewiger/picostack/tarball/master", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/ewiger/picostack", "keywords": null, "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "picostack", "package_url": "https://pypi.org/project/picostack/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/picostack/", "project_urls": { "Download": "https://github.com/ewiger/picostack/tarball/master", "Homepage": "https://github.com/ewiger/picostack" }, "release_url": "https://pypi.org/project/picostack/0.1.10/", "requires_dist": null, "requires_python": null, "summary": "A super lightweight KVM virtualization manager", "version": "0.1.10" }, "last_serial": 1146068, "releases": { "0.1.0": [], "0.1.1": [ { "comment_text": "", "digests": { "md5": "d93c7251b32a964084373ff190faaea7", "sha256": "f23564158acb7425be9e52e9cc5f700c62e44074e42a46cb79d9aa090e7aac35" }, "downloads": -1, "filename": "picostack-0.1.1.tar.gz", "has_sig": false, "md5_digest": "d93c7251b32a964084373ff190faaea7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22006, "upload_time": "2014-05-16T20:22:39", "url": "https://files.pythonhosted.org/packages/a4/a6/7a3f1f8f4b509eef5fca267fb2625d4a413bb11e3fc30d0bcf2c3a1f4a14/picostack-0.1.1.tar.gz" } ], "0.1.10": [ { "comment_text": "", "digests": { "md5": "0cdc556a0ce1ba9ab758dd41baedc1be", "sha256": "b659dc93ab7978a5325212616b9932809557d967123390044dc781c457672e07" }, "downloads": -1, "filename": "picostack-0.1.10.tar.gz", "has_sig": false, "md5_digest": "0cdc556a0ce1ba9ab758dd41baedc1be", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 653655, "upload_time": "2014-07-03T12:19:56", "url": "https://files.pythonhosted.org/packages/2b/6f/ee27d382d4936b7290e43f8bb2d542238eb9f441f63a200f771473730607/picostack-0.1.10.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "fd36c54fe97ece3c3647ea40f278b4cd", "sha256": "06957e0ce85bd4140b06988e5ab715286a1fc92c4701c8a489b6cdc777e6e73b" }, "downloads": -1, "filename": "picostack-0.1.2.tar.gz", "has_sig": false, "md5_digest": "fd36c54fe97ece3c3647ea40f278b4cd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22240, "upload_time": "2014-05-19T13:10:07", "url": "https://files.pythonhosted.org/packages/2e/04/1d6fd8d6db1afc4213ff6dbc2a7aafccb5a891fdde6b1399b170e830ab27/picostack-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "5bbff5c4cc0c94c7b201e49757f5d3fe", "sha256": "2a6b4d7b3527db109f41adfc278d2043bbd3e4135babbf338b839feb9889397d" }, "downloads": -1, "filename": "picostack-0.1.3.tar.gz", "has_sig": false, "md5_digest": "5bbff5c4cc0c94c7b201e49757f5d3fe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 649345, "upload_time": "2014-05-19T15:48:42", "url": "https://files.pythonhosted.org/packages/01/ed/eade02bba46cb57852b72fc59339e4471869fa31bba4d25a6b196f2c0234/picostack-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "33a8b32376af6641fd616485ac68d739", "sha256": "f85e63f1a1ea373c6a1d30f5c31e0ce53e0737e67b21d3d724c07c4d31c9699c" }, "downloads": -1, "filename": "picostack-0.1.4.tar.gz", "has_sig": false, "md5_digest": "33a8b32376af6641fd616485ac68d739", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 649532, "upload_time": "2014-05-19T16:41:16", "url": "https://files.pythonhosted.org/packages/8a/b6/779827c15c1539572914a8bc12bdf9704f9692261d11502dc8473fc6d419/picostack-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "c158e419876df33ab5983784bea485da", "sha256": "0fda5a5bba799149c6d02b91eac7fc7c09a4bc579a626ce0710149951a22ae79" }, "downloads": -1, "filename": "picostack-0.1.5.tar.gz", "has_sig": false, "md5_digest": "c158e419876df33ab5983784bea485da", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 649531, "upload_time": "2014-05-21T09:41:05", "url": "https://files.pythonhosted.org/packages/29/f2/f1a4ffc09bc2eb3198507d11f1a55617da1d323052f3f79d3cd1c1c787db/picostack-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "d43009c2a5f6cff9f5e8ac160c346a03", "sha256": "17985472369cbe5ea73a5658618681e1e9066f100a21127bb17b93a51461a176" }, "downloads": -1, "filename": "picostack-0.1.6.tar.gz", "has_sig": false, "md5_digest": "d43009c2a5f6cff9f5e8ac160c346a03", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 652491, "upload_time": "2014-05-23T11:43:58", "url": "https://files.pythonhosted.org/packages/8a/c2/1db33701beaa77bff58a3a0c12b9b72197b04b5476daf0a888f9ff6b1b77/picostack-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "c9d6754c3ba17513c479ea5051404d28", "sha256": "7144dd8bfb32b70474c57af46438c8558beb936b620f7e217861ea6583ca1e6b" }, "downloads": -1, "filename": "picostack-0.1.7.tar.gz", "has_sig": false, "md5_digest": "c9d6754c3ba17513c479ea5051404d28", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 652686, "upload_time": "2014-05-23T12:14:51", "url": "https://files.pythonhosted.org/packages/7d/b7/bdb1a0fc3cba058016446f69cdfa26a9108aa31c5f17ab840b7fd56914dc/picostack-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "4fc35ea6f79593052ef96551fb1dfc75", "sha256": "34674c322ceb3ed480527756ca6bcc64d71d6325134633b5a538d4aa9ec8658b" }, "downloads": -1, "filename": "picostack-0.1.8.tar.gz", "has_sig": false, "md5_digest": "4fc35ea6f79593052ef96551fb1dfc75", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 652738, "upload_time": "2014-05-26T09:10:36", "url": "https://files.pythonhosted.org/packages/32/71/89d3851b4bdd0840206893b1cf6d3d4da377d12fbffe5439e16a31e2a825/picostack-0.1.8.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "bf9ded7f813993bd4b88deabb67ea82f", "sha256": "2a0cdd5522bb83f2b3e7ddf4900e774067fe48c1446b0dad57f9b754f725c503" }, "downloads": -1, "filename": "picostack-0.1.9.tar.gz", "has_sig": false, "md5_digest": "bf9ded7f813993bd4b88deabb67ea82f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 653589, "upload_time": "2014-06-18T14:41:56", "url": "https://files.pythonhosted.org/packages/12/e7/d8e6a90c516eaba779d8ef8fbd7160da470bd78ac428a08216b05236246d/picostack-0.1.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0cdc556a0ce1ba9ab758dd41baedc1be", "sha256": "b659dc93ab7978a5325212616b9932809557d967123390044dc781c457672e07" }, "downloads": -1, "filename": "picostack-0.1.10.tar.gz", "has_sig": false, "md5_digest": "0cdc556a0ce1ba9ab758dd41baedc1be", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 653655, "upload_time": "2014-07-03T12:19:56", "url": "https://files.pythonhosted.org/packages/2b/6f/ee27d382d4936b7290e43f8bb2d542238eb9f441f63a200f771473730607/picostack-0.1.10.tar.gz" } ] }