Deploying Charms Offline
Many private clouds have no direct access to the internet due to security reasons.
In these cases it's useful to maintain a copy of the internet-accessible Charm Store for your local deployments.
Note: Though this method will ensure that the charms themselves are available on systems without outside internet access, there is no guarantee that a charm will work in a disconnected state. Some charms pull code from the outside world, such as github. We recommend modifying these charms to pull code from an internal server when appropriate.
Retrieving charms using the Charm Tools
Installation
In addition to Juju we need to install charm-tools:
sudo apt-get update && sudo apt-get install charm-tools
Usage
The Charm Tools comes packaged as both a stand alone tool and a juju plugin.
So you simply can call it with charm
or as usual for Juju commands with
juju charm
.
There are several tools available within the Charm Tools itself. At any time
you can run juju charm
to view the available subcommands and all subcommands
have independent help pages, accessible using either the -h
or --help
flags.
If you want to retrieve and branch one of the charm store charms, use the get
command specifying the CHARM_NAME
you want to copy and provide an optional
CHARMS_DIRECTORY
. Otherwise the current directory will be used.
juju charm get [-h|--help] CHARM_NAME [CHARMS_DIRECTORY]
Example
The command
juju charm get mysql
will download the MySQL charm to a mysql
directory within your current path.
By running
juju charm get wordpress ~/charms/precise/
You will download the WordPress charm to ~/charms/precise/wordpress
. It is
also possible to fetch all official charm store charms. The command for this
task is:
juju charm getall [-h|--help] [CHARMS_DIRECTORY]
The retrieved charms will be placed in the CHARMS_DIRECTORY
, or your current
directory if no CHARMS_DIRECTORY
is provided. This command can take quite a
while to complete - there are a lot of charms!
Deploying from a local repository
There are many cases when you may wish to deploy charms from a local filesystem source rather than the charm store:
- When testing charms you have written.
- When you have modified store charms for some reason.
- When you don't have direct internet access.
... and probably a lot more times which you can imagine yourselves.
Juju can be pointed at a local directory to source charms from using the
--repository=<path/to/files>
switch like this:
juju deploy --repository=/usr/share/charms/ local:trusty/vsftpd
The --repository
switch can be omitted when shell environment
defines JUJU_REPOSITORY
like so:
export JUJU_REPOSITORY=/usr/share/charms/ juju deploy local:trusty/vsftpd
You can also make use of standard filesystem shortcuts, if the environment
specifies the default-series
. The following examples will deploy the trusty
charms in the local repository when default-series
is set to trusty:
juju deploy --repository=. local:haproxy
juju deploy --repository ~/charms/ local:wordpress
The default-series
can be specified in environments.yaml
thusly:
default-series: precise
The default-series can also be added to any bootstrapped environment with
the set-env
command:
juju set-env "default-series=trusty"
Note: Specifying a local repository makes Juju look there first, but if the relevant charm is not found in that repository, it will fall back to fetching it from the charm store. If you wish to check where a charm was installed from, it is listed in the juju status
output.