{ "info": { "author": "Kapil Thangavelu", "author_email": "kapil.foss@gmail.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python" ], "description": "Juju SoftLayer Provider\n-----------------------\n\n.. image:: doc/softlayer.png\n :target: here_\n\n\nThis package provides a cli plugin for juju that allows for automated\nprovisioning of machines on softlayer. I like to call it slayer :-)\n\nSoftlayer is premium hosting provider offering both bare metal and xen\nbased cloud instances with a myriad of configuration options across\nmultiple data center with monthly and hourly billing. Due to the length\nof time it takes to provision bare metal machines (3-4 hrs) this plugin\nonly supports cloud instances.\n\nJuju provides for workloads management and orchestration using a\ncollection of workloads definitions (charms) that can be assembled\nlego fashion at runtime into complex application topologies.\n\nYou can find out more about juju at its home page. http://juju.ubuntu.com\n\n\nInstall\n=======\n\n**This plugin requires version of recent juju (>= 1.18)**\n\nA suitable version is distributed for trusty (14.04) for older versions of ubuntu the latest stable release\nare available from a ppa::\n\n $ sudo add-apt-repository ppa:juju/stable\n $ apt-get update && apt-get install juju\n $ juju version\n 1.18.0-saucy-amd64\n\nPlugin installation is done via pip/easy_install which is the python language\npackage managers, its available by default on ubuntu. Also recommended\nis virtualenv to sandbox this install from your system packages::\n\n $ pip install -U juju-slayer\n\nFwiw, currently the transitive dependency tree is PyYAML, requests, softlayer.\n\n\nSetup\n=====\n\nThere are three steps for configuration and setup of this\nprovider. Configuring your softlayer api keys, adding an\nenvironment to juju's config file, and setting up an ssh key for usage\non softlayer machines.\n\nSoftLayer API Keys\n++++++++++++++++++\n\nA SoftLayer account is a pre-requisite, If you don't have a\nSoftlayer account you can sign up `here`_.\n\nCredentials for the digital ocean api can be obtained from your account\ndashboard at https://manage.softlayer.com/Administrative/apiKeychain\n\nThe credentials can be provided to the plugin via env variable or via the `sl`\ncli's config\n\n - Environment variables SL_API_KEY and SL_USERNAME\n\nThis softlayer plugin uses the manual provisioning capabilities of\njuju core. As a result its required to allocate machines in the\nenvironment before deploying workloads. We'll explore that more in a\nmoment.\n\nSSH Key\n+++++++\n\nAn ssh key is required for use by this plugin and the public key\nmust be uploaded to the softlayer control panel, alternatively\nyou can upload it directly using the `sl` cli program (installed automatically \nas a pre-requisite of this plugin)::\n\n $ sl sshkey add $USER-key -f ~/.ssh/id_rsa.pub \n\nKeys can be verified with::\n\n $ sl sshkey list \n\nBy default all keys in the softlayer account will be added to launched\nnodes, so no explict user configuration is needed. A specific key to\nutilize can be specified with the environment variable\nSOFTLAYER_SSH_KEY=\"key_spec\" where key_spec is either the id of the\nkey in the from the command line, or the name of the key as found in\nsoftlayer control panel (https://manage.softlayer.com/Security/sshKeys)\n\n\nJuju Config\n+++++++++++\n\nNext let's configure a juju environment for soft laayer, add an\na null provider environment to 'environments.yaml', for example::\n\n environments:\n softlayer:\n type: manual\n bootstrap-host: null\n bootstrap-user: root\n\nUsage\n=====\n\nWe need to tell juju which environment we want to use, there are\nseveral ways to do this, either of the following will do the trick::\n\n $ juju switch softlayer\n $ export JUJU_ENV=softlayer\n\nNow we can bootstrap our softlayer environment::\n\n $ juju sl bootstrap --constraints=\"mem=2g, region=sjc\"\n\nWhich will create a machine with 2Gb of ram in the san jose data center.\n\nAll machines created by this plugin will have the juju environment\nname as a prefix for their hostname if your looking at the softlayer\ncontrol panel and a suffix/domain of juju.ubuntu.\n\nAfter our environment is bootstrapped we can add additional machines\nto it via the the add-machine command, for example the following will\nadd 3 machines with 2Gb each::\n\n $ juju sl add-machine -n 2 --constraints=\"mem=2G, region=sjc\"\n $ juju status\n\n environment: softlayer\n machines:\n \"0\":\n agent-state: started\n agent-version: 1.18.0.1\n dns-name: 162.243.115.78\n instance-id: 'manual:'\n series: precise\n hardware: arch=amd64 cpu-cores=1 mem=2002M\n \"1\":\n agent-state: started\n agent-version: 1.18.0.1\n dns-name: 162.243.86.238\n instance-id: manual:162.243.86.238\n series: precise\n hardware: arch=amd64 cpu-cores=1 mem=2002M\n \"2\":\n agent-state: started\n agent-version: 1.18.0.1\n dns-name: 107.170.39.10\n instance-id: manual:107.170.39.10\n series: precise\n hardware: arch=amd64 cpu-cores=1 mem=2002M\n services: {}\n\nWe can now use standard juju commands for deploying service workloads aka\ncharms::\n\n $ juju deploy wordpress\n\nWithout specifying the machine to place the workload on, the machine\nwill automatically go to an unused machine within the environment.\n\nThere are hundreds of available charms ready to be used, you can\nfind out more about what's out there from http://jujucharms.com\nOr alternatively the 'plain' html version at\nhttp://manage.jujucharms.com/charms/precise\n\nWe can use manual placement to deploy target particular machines::\n\n $ juju deploy mysql --to=2\n\nAnd of course the real magic of juju comes in its ability to assemble\nthese workloads together via relations like lego blocks::\n\n $ juju add-relation wordpress mysql\n\nWe can terminate allocated machines by their machine id. By default with the\nsoftlayer plugin, machines are forcibly terminated which will also terminate any\nservice units on those machines::\n\n $ juju sl terminate-machine 1 2\n\nAnd we can destroy the entire environment via::\n\n $ juju sl destroy-environment\n\nAll commands have builtin help facilities and accept a -v option which will\nprint verbose output while running.\n\nYou can find out more about using from http://juju.ubuntu.com/docs\n\nConstraints\n===========\n\nConstraints are selection criteria used to determine what type of\nmachine to allocate for an environment. Those criteria can be related\nto size of the machine, its location, or other provider specific\ncriteria.\n\nThis plugin accepts the standard `juju constraints`_\n\n - cpu-cores\n - memory\n - root-disk\n\nAdditionally it supports the following provider specific constraints.\n\n - 'region' to denote one softlayer's data center to utilize. All softlayer\n data centers are supported and various short hand aliases are defined. ie. valid\n values include ams01, dal01, dal05, dal06, sea01, sng01, sjc01, wdc01. The \n plugin defaults to leaving it empty which auto selects first available.\n\n\n.. _here: https://www.softlayer.com/virtual-server\n.. _juju constraints: https://juju.ubuntu.com/docs/reference-constraints.html", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/kapilt/juju-softlayer", "keywords": null, "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "juju-slayer", "package_url": "https://pypi.org/project/juju-slayer/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/juju-slayer/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/kapilt/juju-softlayer" }, "release_url": "https://pypi.org/project/juju-slayer/0.1.0/", "requires_dist": null, "requires_python": null, "summary": "Softlayer integration with juju", "version": "0.1.0" }, "last_serial": 1052348, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "fef31b4a3aa1ce5cca522890d73da736", "sha256": "1e64dadd4b9ff03c7d9683745041092ed962e10994a4446a2029a98422b47174" }, "downloads": -1, "filename": "juju-slayer-0.1.0.tar.gz", "has_sig": false, "md5_digest": "fef31b4a3aa1ce5cca522890d73da736", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19304, "upload_time": "2014-04-06T02:35:08", "url": "https://files.pythonhosted.org/packages/52/ae/83fdb33d607c7aff1f013a0486561a89d6fbaea425dfed18ef654a312d95/juju-slayer-0.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "fef31b4a3aa1ce5cca522890d73da736", "sha256": "1e64dadd4b9ff03c7d9683745041092ed962e10994a4446a2029a98422b47174" }, "downloads": -1, "filename": "juju-slayer-0.1.0.tar.gz", "has_sig": false, "md5_digest": "fef31b4a3aa1ce5cca522890d73da736", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19304, "upload_time": "2014-04-06T02:35:08", "url": "https://files.pythonhosted.org/packages/52/ae/83fdb33d607c7aff1f013a0486561a89d6fbaea425dfed18ef654a312d95/juju-slayer-0.1.0.tar.gz" } ] }