These are a collection of plugins created by various authors to make using Juju easier.
Plugins are simply scripts that are prefixed with juju-
which can be found within your system's $PATH
. Whenever you type juju <cmd>
, and <cmd>
is not an internal command found in juju help commands
, Juju attempts to execute juju-<cmd>
within the context of your system's $PATH
which is how the plugin system in Juju works. This repository is a collection of plugins in one place to make it easier to share and collaborate with other Juju users.
Install Git and python-jujuclient
sudo apt-get install git python-jujuclient
Install Homebrew
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
Install Git
brew install git
Install jujuclient
sudo pip install jujuclient>=0.18.4
git clone https://github.com/juju/plugins.git ~/.juju-plugins
This will add $HOME/.juju-plugins
to your PATH environment variable. Doing so will allow Juju to find the plugins.
echo 'PATH=$PATH:$HOME/.juju-plugins' >> ~/.bash_profile
source ~/.bash_profile
Once you've installed, run juju help plugins
and you should see a list of additional plugins which weren't there prior to install
You can remove plugins at anytime by simply running
rm -rf ~/.juju-plugins
Optionally, you can remove the additional line in ~/.bash_profile
with the following line:
sed -ie '/PATH=\$PATH:\$HOME/.juju-plugins/d' ~/.bash_profile
You can update the plugins on your system at anytime by doing the following:
cd ~/.juju-plugins
git pull
This will fetch the latest from the repository and update current plugins and add any new ones
We welcome contributions to create new juju plugins! We only request that you licence each plugin via a copyright/licence header within each plugin file. We also require each plugin to be licenced with an OSI approved licence.
It's also recommended you not hack directly in the ~/.juju-plugins
directory as this may break some plugins.
Instead, clone to a different directory and test your plugins by running the following
- Fork the juju/plugins repsitory.
- Clone the fork you just made
git clone [email protected]:USER/plugins.git
- Add the upstream repository
git remote add upstream https://github.com/juju/plugins.git
- Go to the master branch
git checkout master
- Fetch the current content
git fetch upstream
- Synchronize the upstream with master
git merge --ff-only upstream/master
- Create a topic branch
git checkout -b TOPIC
- Make your changes to the files.
- Stage files to be committed with
git add PATH/TO/FILE
- Commit your changes
git commit
- Push your changes to your repository
git push origin TOPIC
- Open a pull request using the Github web interface:
https://github.com/USER/plugins/compare/juju:master...TOPIC
In order to test plugins from your repository execute the following format in your terminal while within the plugins directory.
PATH="$(pwd):$PATH" juju <plugin>
This will put your repo as the first PATH match and trump any other plugins in path.
All plugins must be able to handle and respond to a --help
flag and a --description
flag. These are used by juju when a user runs juju help plugins
and when a user runs juju help <plugin>
they call the --description
and --help
flags respectively. Outside of that there aren't any language requirements, you're welcome to write your plugin in any language that's available in the Ubuntu system just so long as the source code isn't obfuscated.