{ "info": { "author": "Mike Miller", "author_email": "mixmastamyk@bitbucket.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: System :: Installation/Setup", "Topic :: System :: Systems Administration", "Topic :: Utilities" ], "description": "|\n|\n|\n\n\n::\n\n H |P\"\"\"\"`.\n __H._ || o_ |\n - - - - - - - - - - - - - - - - - - - - |=====\\||((,/ '_______ - - -\n | __ YHaHHHaP ___ #:\n ______________ ___ ______ / ,' `.YHHHHP.' `. #:\n ___ __ \\ __ `/_ | / / _ \\ | : :HHH(/ . \\\n __ /_/ / /_/ /_ |/ // __/ `-| (\\) |:=:\"| (\\) | _>\n _ ____/\\__,_/ _____/ \\___/ \\ /(=) ` '\n /_/ `-._.- `-._.-'\n\n**tl;dr**\n\n Simple push-based deployment and remote host management,\n leveraging fabric.\u00a0\n No servers, few dependencies.\n\n\nIntro\n=====\n\nThere are also slides on this topic,\n`located here `_.\n\nAnother one?\n--------------\n\nBeen looking for the \u201cperfect\u201d config management tool to deploy software\nto networked boxes... and still looking. I've tried but didn\u2019t choose these:\n\n bcfg, cfengine, puppet, chef, saltstack, ansible, etc.\n\nI found them powerful and complex.\nThey required daemons running, had their own languages, unique terminology,\nXML, Ruby, or Jinja dependencies.\nDespite reading the word \u201csimple\u201d multiple times, each had a varingly steep\nlearning curve, and dozens if not hundreds of pages of abstract\nor \"enterprisey\" docs.\n\nFor my modest needs, ansible seemed the best fit (ssh-based and no servers),\nbut there were a few things bugging me.\nFinally realized I was telling it how to do things, though I really wanted\nthe tool to *figure it out itself*.\n\nLikewise, I stumbled across fabric early on, and like most loved it\u2014at\nfirst.\nUnfortunately as a script gets longer it dawns on you why people say,\n*\u201cdon\u2019t use it for configuration management!\u201d*\nIntentions, implementation details, and code all get mixed up in the same\nscript and things get ugly fast.\nCuisine (a fabric addon) appeared promising, but it looked mainly to shorten\nthe fabfile.\nI wanted to go further and completely separate my setup from general\nimplementation code.\n\nMaybe I could whip one up myself? I started looking into how to build such a\nsystem.\nThankfully after a day or so I realized the building blocks are already in\nfabric.\nWhy not just commandeer it for my own evil purposes? **\n\nSo here is pave.\n\nHow does it work?\n-----------------\n\nPave logs you into your networked hosts using SSH and configures them to\nyour liking \"automatically\" using the command line.\nJust tell it *what* to do.\nIt'll check first and *won't make changes* unless it needs to.\n\nDon\u2019t have to write any code for common tasks.\nDon't have to know anything about Python or the OS you\u2019re using (in\ntheory---You'll get the most out of it\nif you know how to use the default shell installed on your hosts,\nsuch as bash.)\nNo gnarly/obscure runtimes to install, no root servers taking up\nmemory/listening/waiting to be cracked, no new languages, nor weird\nlingo to learn.\n\nJust a config file, a command, ... and space for a new parking lot.\n\nUse\n-----\n\nRequirements\n~~~~~~~~~~~~\n\nAn OS from the last 5 years or so, with Python 2.6+ (locally) and sshd\n(remotely) ready to go.\n\nDevelopment is primarily on Ubuntu clients with\n**Ubuntu Server 12.04 (Precise LTS)**\nas the target\n(with some recent attention to Fedora, CentOS, Gentoo, Rasbian, and OSX),\nbut aims to work everywhere practical, Unix and Windows.\n\n\nInstallation & Setup\n~~~~~~~~~~~~~~~~~~~~\n\nNeed pip?\n\n.. code-block:: bash\n\n sudo apt-get install python-pip # Or yum, brew, etc.\n\n\"Express\" install::\n\n sudo pip install pave\n\nCustom install options:\n\n **OSX**: (Not yet tested, alpha quality)\n Install pip and the command-line developer tools if they are not already\n (type ``easy_install pip`` and ``gcc`` at a terminal),\n since pave needs paramiko/pycrypto and the latter needs to be built.\n\n **Windows**: (Not yet tested, alpha quality)\n Install `pip `_ and\n `pycrypto `_.\n Type ``pip install pave[win]`` in an Admin prompt.\n\n **Debian Linux**:\n Note if pycrypto (ssh) needs to be built, or you'd like to build\n libyaml (for speed),\n do this first::\n\n sudo apt-get install build-essential python-dev libyaml-dev\n\n For the dev version:\n\n ::\n\n sudo pip install \\\n https://bitbucket.org/mixmastamyk/pave/get/default.zip\n\n Also, note that pip is not required;\n You could also download the package manually from PyPI or bitbucket.\n Unpack the archive, ``cd`` into the folder created, then:\n\n .. code-block:: bash\n\n sudo ./setup.py install # manual install\n\n | Like typing in passwords over and over?\u00a0 No?\u00a0 ;)\n | Do you have an ssh key-pair set up?\u00a0 No?\n\n ::\n\n ssh-keygen -t rsa\n ssh-copy-id [user@]machine\n\n Pave can do the steps above if you'd like, however for \"piece\" of mind\n it's better to do it yourself.\n\n You may need to paste the matching line from ``~/.ssh/id_rsa.pub`` into\n your EC2 or other cloud console... if you're into that sort of thing.\n\n\nCreating El Pavefile\n~~~~~~~~~~~~~~~~~~~~~~\n\nThe pavefile is what tells pave what to do.\nThis file is named ``./pave.yml`` by default,\nand \"hello world\" might look like this:\n\n.. code-block:: yaml\n\n main:\n user: ubuntu\n sudo: True\n targets:\n - 192.168.2.1 # a list/str of hosts/groups\n\n # passwords: # use only if not using keys\n # - ask password SSH Password # default passwd for fabric\n\n tasks:\n - packages:\n if-platform: Debian\n install: sysvbanner\n\n - packages:\n if-platform: Redhat\n install: banner\n\n - banner \"Hello!\" # world\n\nTo create this file now, you may use the \"skeleton\" shortcut::\n\n pave -S\n\nEach section above declares what you\u2019d like pave to do, and the details\nunder each must be indented *with spaces*.\nComments are written following the ``#`` character.\nThe only required section is ``main`` which contains options for pave.\nLists and mappings (dicts/hashes) are welcome in appropriate places.\nThe format is called yaml, and syntax details `can be found here\n`_.\nYou don\u2019t need to know much about it for now, just keep to the form above.\n\nCommon tasks already have their own modules, such as ``packages:`` above.\nThese modules handle mundane details so you don't need to be concerned.\nDon\u2019t reinvent the wheel by putting platform-dependent commands into an\nad-hoc tasklist\u2014That's what we're trying to avoid.\n\nReference docs can be found on the next page and `examples here\n`_.\nHow to target groups of hosts and do other necessary things like declare\nvariables, render templates, create users, configure the OS, etc, etc. is\ndemonstrated.\n\n\nRunning it\n~~~~~~~~~~~~\n\n::\n\n pave\n\nNow, that's my definition of simple. ;)\u00a0\u00a0\nOf course pave does less than the big-guns but handles quite a lot already and\nwill only grow.\nConsult the references and ``pave\u00a0-h`` for many options.\n\nYou should see output similar to this (if you use ``pave -V``).\n(Verbose logs from the last five runs are kept in ``~/.cache/pave/logs/``.)\n\n::\n\n \u2713 INFO main: Version 0.60, Python: 2.7.4, fabric: 1.6.1, ./pave.yml\n \u2713 INFO transport: Connected (version 2.0, client OpenSSH_5.9p1)\n \u2713 INFO transport: Authentication (publickey) successful!\n \u2713 INFO main: found a(n) Ubuntu system.\n \u2713 INFO packages: install: sysvbanner\n\n [snip install-text]\n\n [192.168.2.1] out: sudo password:\n [192.168.2.1] out: # # ###\n [192.168.2.1] out: # # ###### # # #### ###\n [192.168.2.1] out: # # # # # # # ###\n [192.168.2.1] out: ####### ##### # # # # #\n [192.168.2.1] out: # # # # # # #\n [192.168.2.1] out: # # # # # # # ###\n [192.168.2.1] out: # # ###### ###### ###### #### ###\n\n \u2713 INFO main: {u'192.168.2.1': (2, 0)}\n\n\nThe numbers at the end mean pave made two changes and had zero errors on\nthe remote host.\n\n*\"Exxxxcellent, Smithers.\"*\n\n|\n\nLicense\n.........\n\nLicensed under the `GPL, version 3+ `_.\nA commercial license may also be available in the future.\n\n|\n\nNext \u00bb\u00bb\n.........\n\n(Looking for a very simple build tool to complement pave?\n`BuildIt `_\nwas designed for that purpose.)\n\nThis concludes the introductory readme.\nKindly continue on to the\n`next chapter `_\nof the full docs.\nYou may also go to the\n`table of contents `_\ninstead.", "description_content_type": null, "docs_url": null, "download_url": "https://bitbucket.org/mixmastamyk/pave/get/default.tar.gz", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://bitbucket.org/mixmastamyk/pave", "keywords": null, "license": "GPLv3+", "maintainer": null, "maintainer_email": null, "name": "pave", "package_url": "https://pypi.org/project/pave/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/pave/", "project_urls": { "Download": "https://bitbucket.org/mixmastamyk/pave/get/default.tar.gz", "Homepage": "https://bitbucket.org/mixmastamyk/pave" }, "release_url": "https://pypi.org/project/pave/0.69/", "requires_dist": null, "requires_python": null, "summary": "Simple push-based configuration and deployment tool, leveraging fabric.\u00a0 No servers, few dependencies.", "version": "0.69" }, "last_serial": 1030162, "releases": { "0.67": [ { "comment_text": "", "digests": { "md5": "b264c228a3323985abc6d5e2e8e3cd76", "sha256": "5d7aefdfad481657490aaca784170831c2149d8a8b3ef2c5e976fbc52b1f79aa" }, "downloads": -1, "filename": "pave-0.67.tar.gz", "has_sig": false, "md5_digest": "b264c228a3323985abc6d5e2e8e3cd76", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48432, "upload_time": "2014-01-13T03:29:39", "url": "https://files.pythonhosted.org/packages/a7/a7/c1a44b9c9e56566a72a87ee9a0395790166069f6015b9c10b34bb7227887/pave-0.67.tar.gz" } ], "0.68": [ { "comment_text": "", "digests": { "md5": "67bc79f93d7eb0c7fed481f3f9f7232c", "sha256": "7f2dbd227dcb57ad5d36b8391e128bc66267fd1a42ac085a8347b9fad4de9b55" }, "downloads": -1, "filename": "pave-0.68.tar.gz", "has_sig": false, "md5_digest": "67bc79f93d7eb0c7fed481f3f9f7232c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49437, "upload_time": "2014-01-14T19:12:30", "url": "https://files.pythonhosted.org/packages/23/67/b1433f6367088b43aab314e727dc06c6dd3d4f43e406c0b933e131bcae2a/pave-0.68.tar.gz" } ], "0.68a": [ { "comment_text": "", "digests": { "md5": "f47d8e6762ddf2bda941efb0bafc3060", "sha256": "cdcade1f4a1e944a12c8daa4e6ca9180fa232429afa6308f2e02fd245f4669a2" }, "downloads": -1, "filename": "pave-0.68a.tar.gz", "has_sig": false, "md5_digest": "f47d8e6762ddf2bda941efb0bafc3060", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49572, "upload_time": "2014-03-09T08:32:02", "url": "https://files.pythonhosted.org/packages/f2/52/378f00a227dc5e29f57d67b5744466372cfaed91bc73df2053779139c3ee/pave-0.68a.tar.gz" } ], "0.69": [ { "comment_text": "", "digests": { "md5": "82c89d0fc8735a9ae2f5bcc6d32e431b", "sha256": "9e44f91c2954f1d06ba1a9a5dc7e0af1d683c2eccef316d93a9a2d83ab17861a" }, "downloads": -1, "filename": "pave-0.69.tar.gz", "has_sig": false, "md5_digest": "82c89d0fc8735a9ae2f5bcc6d32e431b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49579, "upload_time": "2014-03-14T22:47:08", "url": "https://files.pythonhosted.org/packages/fb/62/cabe04cb995e9a0eb79134acaed9a7ed0fb7599619977b6383f6c14a6480/pave-0.69.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "82c89d0fc8735a9ae2f5bcc6d32e431b", "sha256": "9e44f91c2954f1d06ba1a9a5dc7e0af1d683c2eccef316d93a9a2d83ab17861a" }, "downloads": -1, "filename": "pave-0.69.tar.gz", "has_sig": false, "md5_digest": "82c89d0fc8735a9ae2f5bcc6d32e431b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49579, "upload_time": "2014-03-14T22:47:08", "url": "https://files.pythonhosted.org/packages/fb/62/cabe04cb995e9a0eb79134acaed9a7ed0fb7599619977b6383f6c14a6480/pave-0.69.tar.gz" } ] }