Sometimes you don't have all day to figure stuff out, here's a TLDR of how to use Juju. Remember you can always juju help
and then any of these subcommands to get the help for the command.
sudo add-apt-repository ppa:juju/stable && sudo apt-get update && sudo apt-get install juju juju-local juju-quickstart charm-tools
juju quickstart -i
- prompts you for all your cloud credentials.juju bootstrap -v
- bootstrap a node (always -v so you can see what's going on, drop the -v when you get comfortable with juju, but juju bootstrap since 1.17.0 shows what's going on -v is really verbose at this point)juju debug-log
- open this in another terminal or tab, so you can see what juju is doing while you type other commands)
-
juju deploy servicename alias
- deploy a service, alias is optional if you want to name it something. If you use aliases you need to refer to the service via the alias from then on:juju deploy mediawiki myawesomewiki
-
juju add-unit servicename
- add a unit -
juju add-unit -n 10 servicename
- add 10 units. -
juju deploy servicename --to #
- deploy servicename to a specific machine #. Use 0 to deploy to the bootstrap node. -
juju status
- shows what's going on -
juju status servicename
- shows you what's going for a particular server -
juju ssh servicename/machine#
- ssh to a unit, get the # from juju status -
juju ssh machine#
- ssh to a machine number -
juju run "uname -a" --all
- Run a command (uname) on every instance. (1.17.2 and newer)
juju quickstart bundle:~abentley/wiki-bundle/1/wiki
- Get the bundle address from jujucharms.com
juju add-relation $service1 $service2
- relate two servicesjuju destroy-relation $service1 $service2
- unrelate 2 services
juju deploy servicename --to lxc:10
- Deploy service to a container on machine #10juju deploy servicename --to kvm:10
- Deploy service to a KVM on machine #10juju deploy servicename --to 10
- Deploy service to the raw bare metal on machine #10juju deploy servicename --constraints instance-type=m1.small
- Deploy to certain AWS types.
juju ssh servicename/#
- ssh to a specific machine # for a service.juju run --service servicename "uname -a"
- run a command on all machines of a service and return results to the console (useful!)juju scp file.sh servicename/0:/tmp
- copy file.sh to /tmp on node 0 of servicename.
juju destroy-environment $environment-name
- destroy an environmentjuju destroy-service $servicename
- destroy a service, DOES NOT REMOVE THE MACHINE, you need to follow up:juju destroy-machine
# - destroy machine #
charm create foo
- create a blank charm templatecharm add tests
- add tests to an existing charmcharm test -e $environment
- executes all tests found in the charm tests directory in specified environment (amazon, hp, etc.).charm add readme
- add a readme template to an existing charmcharm proof
- lint for charmsbundle proof
- lint for bundlesjuju debug-hooks
- debug mode for charm writing, this will ssh you into the units and fire off a tmux session to debug (totally awesome, use this).
- "I broke the local provider and need to start over" - http://askubuntu.com/questions/403618/how-do-i-clean-up-a-machine-after-using-the-local-provider
- "There's a race somewhere and sometimes the unit doesn't come up" -
juju resolved $servicename --retry
- Listing of all the charms: https://jujucharms.com/fullscreen/search/?text=
juju status -e $environmentname
- show me the status of another environmentjuju switch $environmentname
- switch to a different environmentjuju add-machine
- add a blank machine that you can mess withjuju ensure-availability
- Ensures the state server is HA (+3 nodes) - you only really need this in production.
sudo lxc-ls --fancy
- show all the containers on your machine
Install plugins:
git clone https://github.com/juju/plugins.git ~/.juju-plugins
echo 'PATH=$PATH:$HOME/.juju-plugins' >> ~/.bash_profile
source ~/.bash_profile
juju help plugins
Plugin Cheats:
juju pprint
- prettier status, a must for large deploymentsjuju clean
- reset and clean all LXC containers and the Juju local providerjuju git-deploy https://github.com/charms/haproxy
- Deploy charms directly from a git repo.