Difference between revisions of "Juju"

From Freephile Wiki
Jump to navigation Jump to search
Line 30: Line 30:
 
juju deploy mysql --to 0
 
juju deploy mysql --to 0
 
juju add-relation mediawiki:db mysql
 
juju add-relation mediawiki:db mysql
 +
juju expose apache2
 
juju expose mediawiki
 
juju expose mediawiki
 
juju status
 
juju status
 
juju ssh
 
juju ssh
 
</source>
 
</source>
 +
 +
You'll end up with an address like this
 +
http://52.5.215.128/mediawiki/index.php/Special:Version
 +
with
 +
* MediaWiki <code>1.19.14+dfsg-1</code> installed with no extensions.
 +
* PHP 5.5.9-1ubuntu4.7 (apache2handler)
 +
* MySQL 5.5.41-0ubuntu0.14.04.1-log
  
 
Make sure to obtain and assign an "elastic IP" so that the instance has a static IP  
 
Make sure to obtain and assign an "elastic IP" so that the instance has a static IP  
Line 83: Line 91:
 
</pre>
 
</pre>
  
 +
=== Commands ===
 +
<source lang="bash">
 +
juju help commands
 +
</source>
 +
<pre>
 +
add-machine          alias for 'machine add'
 +
add-relation        add a relation between two services
 +
add-unit            add one or more units of an already-deployed service
 +
api-endpoints        print the API server address(es)
 +
api-info            print the field values used to connect to the environment's API servers
 +
authorised-keys      alias for 'authorized-keys'
 +
authorized-keys      manage authorized ssh keys
 +
backups              create, manage, and restore backups of juju's state
 +
block                block an operation that would alter a running environment
 +
bootstrap            start up an environment from scratch
 +
cached-images        manage cached os images
 +
debug-hooks          launch a tmux session to debug a hook
 +
debug-log            display the consolidated log file
 +
deploy              deploy a new service
 +
destroy-environment  terminate all machines and other associated resources for an environment
 +
destroy-machine      alias for 'machine remove'
 +
destroy-relation    alias for 'remove-relation'
 +
destroy-service      alias for 'remove-service'
 +
destroy-unit        alias for 'remove-unit'
 +
ensure-availability  ensure the availability of Juju state servers
 +
env                  alias for 'switch'
 +
environment          manage environments
 +
expose              expose a service
 +
generate-config      alias for 'init'
 +
get                  get service configuration options
 +
get-constraints      view constraints on the environment or a service
 +
get-env              alias for 'environment get'
 +
get-environment      alias for 'environment get'
 +
help                show help on a command or other topic
 +
help-tool            show help on a juju charm tool
 +
init                generate boilerplate configuration for juju environments
 +
machine              manage machines
 +
publish              publish charm to the store
 +
remove-machine      alias for 'machine remove'
 +
remove-relation      remove a relation between two services
 +
remove-service      remove a service from the environment
 +
remove-unit          remove service units from the environment
 +
resolved            marks unit errors resolved
 +
retry-provisioning  retries provisioning for failed machines
 +
run                  run the commands on the remote targets specified
 +
scp                  launch a scp command to copy files to/from remote machine(s)
 +
set                  set service config options
 +
set-constraints      set constraints on the environment or a service
 +
set-env              alias for 'environment set'
 +
set-environment      alias for 'environment set'
 +
ssh                  launch an ssh shell on a given unit or machine
 +
stat                alias for 'status'
 +
status              output status information about an environment
 +
switch              show or change the default juju environment name
 +
sync-tools          copy tools from the official tool store into a local environment
 +
terminate-machine    alias for 'machine remove'
 +
unblock              unblock an operation that would alter a running environment
 +
unexpose            unexpose a service
 +
unset                set service config options back to their default
 +
unset-env            alias for 'environment unset'
 +
unset-environment    alias for 'environment unset'
 +
upgrade-charm        upgrade a service's charm
 +
upgrade-juju        upgrade the tools in a juju environment
 +
user                manage user accounts and access control
 +
version              print the current version
 +
</pre>
  
  
 
[[Category:DevOps]]
 
[[Category:DevOps]]
 
[[Category:Service Orchestration]]
 
[[Category:Service Orchestration]]

Revision as of 00:12, 9 April 2015

Juju (formerly Ensemble) is an open source service orchestration management tool developed by Canonical Ltd., the company behind Ubuntu. Juju allows software to be quickly deployed, integrated and scaled on a wide choice of cloud services or servers.

Juju can deploy to LXC (for local environments), OpenStack (for HP Cloud), Windows Azure, Joyent or Amazon EC2

Kapil Thangavelu wrote JuDo - A juju provider for digital ocean using a client side plugin and manual provisioning.

Links[edit | edit source]

  1. https://jujucharms.com/get-started
  1. https://jujucharms.com/docs/1.20/config-manual
  2. https://jujucharms.com/docs/1.20/config-aws
  3. https://jujucharms.com/docs/1.20/config-digitalocean
  4. https://jujucharms.com/docs/1.20/config-vagrant

TLDR[edit | edit source]

sudo add-apt-repository ppa:juju/stable
sudo apt-get install juju-quickstart
sudo apt-get install juju-core
# to just show existing/default
# juju generate-config --show
juju generate-config
# edit to add your AWS KEYS
juju bootstrap
juju status
# assuming it shows a single machine numbered '0'
juju deploy apache2 --to 0
juju deploy mediawiki --to 0
# in our test, this deployed cs:trusty/mediawiki-3
juju deploy mysql --to 0
juju add-relation mediawiki:db mysql
juju expose apache2
juju expose mediawiki
juju status
juju ssh

You'll end up with an address like this http://52.5.215.128/mediawiki/index.php/Special:Version with

  • MediaWiki 1.19.14+dfsg-1 installed with no extensions.
  • PHP 5.5.9-1ubuntu4.7 (apache2handler)
  • MySQL 5.5.41-0ubuntu0.14.04.1-log

Make sure to obtain and assign an "elastic IP" so that the instance has a static IP


You can see what keys were added to the machine juju authorised-keys list and verify the key fingerprint for the key you want to use ssh-keygen -lf /home/user/.ssh/id_rsa

but you have to know/guess what user was installed by your charm

ssh -i /home/user/.ssh/id_rsa -o IdentitiesOnly=true -vvv ubuntu@ec2-55-5-555-55.compute-1.amazonaws.com

https://jujucharms.com/mediawiki/trusty/3


Help[edit | edit source]

juju help

Juju -- devops distilled
https://juju.ubuntu.com/

Juju provides easy, intelligent service orchestration on top of environments
such as Amazon EC2, HP Cloud, OpenStack, MaaS, or your own local machine.

Basic commands:
  juju init             generate boilerplate configuration for juju environments
  juju bootstrap        start up an environment from scratch

  juju deploy           deploy a new service
  juju add-relation     add a relation between two services
  juju expose           expose a service

  juju help bootstrap   more help on e.g. bootstrap command
  juju help commands    list all commands
  juju help glossary    glossary of terms
  juju help topics      list all help topics

Provider information:
  juju help azure-provider       use on Windows Azure
  juju help ec2-provider         use on Amazon EC2
  juju help hpcloud-provider     use on HP Cloud
  juju help local-provider       use on this computer
  juju help openstack-provider   use on OpenStack

Commands[edit | edit source]

juju help commands
add-machine          alias for 'machine add'
add-relation         add a relation between two services
add-unit             add one or more units of an already-deployed service
api-endpoints        print the API server address(es)
api-info             print the field values used to connect to the environment's API servers
authorised-keys      alias for 'authorized-keys'
authorized-keys      manage authorized ssh keys
backups              create, manage, and restore backups of juju's state
block                block an operation that would alter a running environment
bootstrap            start up an environment from scratch
cached-images        manage cached os images
debug-hooks          launch a tmux session to debug a hook
debug-log            display the consolidated log file
deploy               deploy a new service
destroy-environment  terminate all machines and other associated resources for an environment
destroy-machine      alias for 'machine remove'
destroy-relation     alias for 'remove-relation'
destroy-service      alias for 'remove-service'
destroy-unit         alias for 'remove-unit'
ensure-availability  ensure the availability of Juju state servers
env                  alias for 'switch'
environment          manage environments
expose               expose a service
generate-config      alias for 'init'
get                  get service configuration options
get-constraints      view constraints on the environment or a service
get-env              alias for 'environment get'
get-environment      alias for 'environment get'
help                 show help on a command or other topic
help-tool            show help on a juju charm tool
init                 generate boilerplate configuration for juju environments
machine              manage machines
publish              publish charm to the store
remove-machine       alias for 'machine remove'
remove-relation      remove a relation between two services
remove-service       remove a service from the environment
remove-unit          remove service units from the environment
resolved             marks unit errors resolved
retry-provisioning   retries provisioning for failed machines
run                  run the commands on the remote targets specified
scp                  launch a scp command to copy files to/from remote machine(s)
set                  set service config options
set-constraints      set constraints on the environment or a service
set-env              alias for 'environment set'
set-environment      alias for 'environment set'
ssh                  launch an ssh shell on a given unit or machine
stat                 alias for 'status'
status               output status information about an environment
switch               show or change the default juju environment name
sync-tools           copy tools from the official tool store into a local environment
terminate-machine    alias for 'machine remove'
unblock              unblock an operation that would alter a running environment
unexpose             unexpose a service
unset                set service config options back to their default
unset-env            alias for 'environment unset'
unset-environment    alias for 'environment unset'
upgrade-charm        upgrade a service's charm
upgrade-juju         upgrade the tools in a juju environment
user                 manage user accounts and access control
version              print the current version