What's the difference between deploying a juju bundle with
Great question! Juju Quickstart is a user-friendly wrapper application around juju-deployer and Juju. Quickstart's purpose in life is to help users get started with Juju as fast as possible by installing Juju (if it's not already installed), giving you a UI to manage your environment definitions, bootstrapping those environments, and getting you a Juju GUI in that environment in the most light weight way possible. The final feature it does is allow you to deploy a bundle from the charmstore (https://jujucharms.com) or a local bundle you've got on disk.
juju-deployer is a single purpose python tool used to deploy bundles from any location - such as github, launchpad branches, local charm repositories, and/or deployer files. The general purpose of juju-deployer was to be consumed either directly by developers, or to be consumed by applications. It provides a more in depth control of those bundle deployments by supporting things like retry in case of failure.
Juju Quickstart uses the deployer but wraps it in an easy to use shell as it presents a single way to get going with Juju as its primary goal.
However its important to note that deployer does expose some additional functionality that you wont find in Juju Quickstart - such as deploying directly from GitHub repositories. (this is subject to change)
juju deployer -c /path/to/my/bundle juju quickstart path/to/my/bundle juju deployer -c bundle:mediawiki-single/7 juju quickstart mediawiki-single/7
This can be found in
usage: juju-deployer [-h] [-c CONFIGS] [-d] [-L] [-u] [-l] [-D] [-T] [-t TIMEOUT] [-f FIND_SERVICE] [-b] [-S] [-B] [-s DEPLOY_DELAY] [-e JUJU_ENV] [-o OVERRIDES] [--series SERIES] [-v] [-W] [-r RETRY_COUNT] [--ignore-errors] [--diff] [-w REL_WAIT] [deployment] positional arguments: deployment optional arguments: -h, --help show this help message and exit -c CONFIGS, --config CONFIGS File containing deployment(s) json config. This option can be repeated, with later files overriding values in earlier ones. -d, --debug Enable debugging to stdout -L, --local-mods Allow deployment of locally-modified charms -u, --update-charms Update existing charm branches -l, --ls List available deployments -D, --destroy-services Destroy all services (do not terminate machines) -T, --terminate-machines Terminate all machines but the bootstrap node. Destroy any services that exist on each -t TIMEOUT, --timeout TIMEOUT Timeout (sec) for entire deployment (45min default) -f FIND_SERVICE, --find-service FIND_SERVICE Find hostname from first unit of a specific service. -b, --branch-only Update vcs branches and exit. -S, --skip-unit-wait Don't wait for units to come up, deploy, add rels and exit. -B, --bootstrap Bootstrap specified environment, blocks until ready -s DEPLOY_DELAY, --deploy-delay DEPLOY_DELAY Time in seconds to sleep between 'deploy' commands, to allow machine provider to process requests. On terminate machines this also signals waiting for machine removal. -e JUJU_ENV, --environment JUJU_ENV Deploy to a specific Juju environment. -o OVERRIDES, --override OVERRIDES Override *all* config options of the same name across all services. Input as key=value. --series SERIES Override distro series in config files -v, --verbose Verbose output -W, --watch Watch environment changes on console -r RETRY_COUNT, --retry RETRY_COUNT Resolve CLI and unit errors via number of retries (default: 0). Either standalone or in a deployment --ignore-errors Proceed with the bundle deployment ignoring units errors. Unit errors are also automatically ignored if --retry != 0 --diff Generate a delta between a configured deployment and a running environment. -w REL_WAIT, --relation-wait REL_WAIT Number of seconds to wait before checking for relation errors after all relations have been added and subordinates started. (default: 60)
And the following can be obtained from
usage: juju-quickstart [-h] [-e ENV_NAME] [-n BUNDLE_NAME] [-i] [--environments-file ENV_FILE] [--gui-charm-url CHARM_URL] [--no-browser] [--distro-only] [--ppa] [--version] [--debug] [--description] [--upload-tools] [--upload-series UPLOAD_SERIES] [--constraints CONSTRAINTS] [BUNDLE] Juju Quickstart is a Juju plugin which allows for easily setting up a Juju environment in very few steps. The environment is bootstrapped and set up so that it can be managed using a Web interface (the Juju GUI). positional arguments: BUNDLE The optional bundle to be deployed. The bundle can be: 1) a bundle path as shown in jujucharms.com, e.g. "mediawiki-single" or "django". Non promulgated bundles can be requested providing the user, e.g. "u/bigdata-dev/apache-analytics-sql". A specific bundle revision can also be requested, e.g. "mediawiki-scalable/7". If not specified, the most recent revision is used; 2) a jujucharms.com full URL of the bundle detail page, with or without the revision. e.g. "https://jujucharms.com/mongodb-cluster/4" or "https://jujucharms.com/openstack"; 3) a URL ("http:" or "https:") to a YAML/JSON, e.g. "https://raw.github.com/user/my/master/bundle.yaml"; 4) a local path to a YAML/JSON file with ".yaml" or ".json" extension, e.g. "~/bundles/django.yaml"; 5) a legacy fully qualified bundle URL, starting with "bundle:", e.g. "bundle:mediawiki/single". Non promulgated bundles can be requested providing the user, e.g. "bundle:~user/mediawiki/single". A specific bundle revision can also be requested, e.g. "bundle:~myuser/mediawiki/42/single". If not specified, the last bundle revision is used. Note that this form is DEPRECATED, and a deprecation warning is printed suggesting the new value to use optional arguments: -h, --help show this help message and exit -e ENV_NAME, --environment ENV_NAME The name of the Juju environment to use (amazon) -n BUNDLE_NAME, --bundle-name BUNDLE_NAME The name of the bundle to use. This must be included in the provided bundle YAML/JSON. Specifying the bundle name is not required if the bundle YAML/JSON only contains one bundle. This option is ignored if the bundle file is not specified -i, --interactive Start the environments management interactive session --environments-file ENV_FILE The path to the Juju environments YAML file (/home/charles/.juju/environments.yaml) --gui-charm-url CHARM_URL The Juju GUI charm URL to deploy in the environment. If not provided, the last release of the GUI will be deployed. The charm URL must include the charm version, e.g. "cs:~juju-gui/precise/juju-gui-162". This option is ignored if the GUI is already present in the environment --no-browser Avoid opening the browser to the GUI at the end of the process --distro-only Do not use external sources when installing and setting up Juju --ppa Use external sources when installing and setting up Juju (enabled by default, use --distro-only to disable) --version show program's version number and exit --debug Turn debug mode on. When enabled, all the subcommands and API calls are logged to stdout, and the Juju environment is bootstrapped passing --debug --description Show program's description and exit --upload-tools upload local version of tools before bootstrapping --upload-series UPLOAD_SERIES upload tools for supplied comma-separated series list --constraints CONSTRAINTS If constraints are specified, they will apply to the machine provisioned for the Juju state server. They will also be set as default constraints on the environment for all future machines, exactly as if the constraints were set with "juju set-constraints". Features include the following: * New users are guided, as needed, to install Juju, set up SSH keys, and configure it for first use. * Juju environments can be created and managed from a command line interactive session. * The Juju GUI is automatically installed, adding no additional machines (installing on an existing state server when possible). * Bundles can be deployed, from local files, HTTP(S) URLs, or the charm store, so that a complete topology of services can be set up in one simple command. * Quickstart ends by opening the browser and automatically logging the user into the Juju GUI. * Users with a running Juju environment can run the quickstart command again to simply re-open the GUI without having to find the proper URL and password. To start Juju Quickstart, run the following: juju-quickstart [-i] Once Juju has been installed, the command can also be run as a juju plugin, without the hyphen ("juju quickstart").
In the few years since this question was asked, deploying bundles has been simplified.
juju quickstart and
juju-deployer have been replaced by built-in functionality.
Bundles that have been uploaded to the charm store are able to be added with a single command:
juju deploy mediawiki-single
Locally-defined bundles are recognised by being file-system paths:
juju deploy /path/to/bundle.yaml