Difference between revisions of "Juju"
Line 1: | Line 1: | ||
[[wp:Juju (software)|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. | [[wp:Juju (software)|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 | + | Juju can deploy to LXC <ref>See also: [[Docker]]</ref> (for local environments), OpenStack (for HP Cloud), Windows Azure, Joyent or Amazon EC2 |
− | Kapil Thangavelu wrote [https://github.com/kapilt/juju-digitalocean JuDo] - A juju provider for | + | Kapil Thangavelu wrote [https://github.com/kapilt/juju-digitalocean JuDo] - A juju provider for [[Digital Ocean]] using a client side plugin and manual provisioning. |
== Links == | == Links == | ||
Line 36: | Line 36: | ||
</source> | </source> | ||
− | You'll end up with an address like this | + | You'll end up with an address like this <ref> |
+ | When setting up a service on EC2, make sure to obtain and assign an "elastic IP" so that the instance has a static IP. Otherwise every shutdown will result in a different public IP address being assigned to the instance. | ||
+ | </ref> | ||
http://52.5.215.128/mediawiki/index.php/Special:Version | http://52.5.215.128/mediawiki/index.php/Special:Version | ||
with | with | ||
− | * MediaWiki <code>1.19.14+dfsg-1</code> installed with no extensions | + | * Ubuntu 14.04.2 LTS (Trusty Tahr) |
+ | * Apache 2.4.7 (Ubuntu) (with MaxRequestWorkers at 2048 which would require 32 servers while servers is set at 16 = sloppy) | ||
+ | * MediaWiki <code>1.19.14+dfsg-1</code> installed with no extensions, and no git | ||
* PHP 5.5.9-1ubuntu4.7 (apache2handler) | * PHP 5.5.9-1ubuntu4.7 (apache2handler) | ||
* MySQL 5.5.41-0ubuntu0.14.04.1-log | * MySQL 5.5.41-0ubuntu0.14.04.1-log | ||
− | |||
Line 158: | Line 161: | ||
</pre> | </pre> | ||
+ | |||
+ | Setting up a MediaWiki instance with Juju, using the https://jujucharms.com/mediawiki/trusty/3 charm was completely unacceptable. The charm doesn't even setup a web server environment at all so it doesn't work "out of the box". When I specified an Apache2 charm https://jujucharms.com/apache2/trusty/13/ the configuration has a miscompiled PHP and also conflicting configurations (ServerLimit, MaxRequestWorkers) that causes errors in the log. | ||
+ | |||
+ | <pre> | ||
+ | root@ip-172-31-57-182:~# /usr/sbin/apache2 -S | ||
+ | [Thu Apr 09 13:42:06.748287 2015] [core:warn] [pid 2247] AH00111: Config variable ${APACHE_LOCK_DIR} is not defined | ||
+ | [Thu Apr 09 13:42:06.748800 2015] [core:warn] [pid 2247] AH00111: Config variable ${APACHE_PID_FILE} is not defined | ||
+ | [Thu Apr 09 13:42:06.749138 2015] [core:warn] [pid 2247] AH00111: Config variable ${APACHE_RUN_USER} is not defined | ||
+ | [Thu Apr 09 13:42:06.749457 2015] [core:warn] [pid 2247] AH00111: Config variable ${APACHE_RUN_GROUP} is not defined | ||
+ | [Thu Apr 09 13:42:06.749808 2015] [core:warn] [pid 2247] AH00111: Config variable ${APACHE_LOG_DIR} is not defined | ||
+ | [Thu Apr 09 13:42:06.786167 2015] [:crit] [pid 2247:tid 139742374446976] Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP. | ||
+ | AH00013: Pre-configuration failed | ||
+ | root@ip-172-31-57-182:~# /usr/sbin/apache2 -M | ||
+ | [Thu Apr 09 13:42:19.687521 2015] [core:warn] [pid 2248] AH00111: Config variable ${APACHE_LOCK_DIR} is not defined | ||
+ | [Thu Apr 09 13:42:19.688010 2015] [core:warn] [pid 2248] AH00111: Config variable ${APACHE_PID_FILE} is not defined | ||
+ | [Thu Apr 09 13:42:19.688345 2015] [core:warn] [pid 2248] AH00111: Config variable ${APACHE_RUN_USER} is not defined | ||
+ | [Thu Apr 09 13:42:19.688604 2015] [core:warn] [pid 2248] AH00111: Config variable ${APACHE_RUN_GROUP} is not defined | ||
+ | [Thu Apr 09 13:42:19.688886 2015] [core:warn] [pid 2248] AH00111: Config variable ${APACHE_LOG_DIR} is not defined | ||
+ | [Thu Apr 09 13:42:19.700934 2015] [:crit] [pid 2248:tid 140047498663808] Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP. | ||
+ | AH00013: Pre-configuration failed | ||
+ | </pre> | ||
+ | |||
+ | {{References}} | ||
[[Category:DevOps]] | [[Category:DevOps]] | ||
[[Category:Service Orchestration]] | [[Category:Service Orchestration]] |
Revision as of 09:27, 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 [1] (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.
Contents
Links[edit | edit source]
- https://jujucharms.com/docs/1.20/config-manual
- https://jujucharms.com/docs/1.20/config-aws
- https://jujucharms.com/docs/1.20/config-digitalocean
- 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 0
You'll end up with an address like this [2]http://52.5.215.128/mediawiki/index.php/Special:Version with
- Ubuntu 14.04.2 LTS (Trusty Tahr)
- Apache 2.4.7 (Ubuntu) (with MaxRequestWorkers at 2048 which would require 32 servers while servers is set at 16 = sloppy)
- MediaWiki
1.19.14+dfsg-1
installed with no extensions, and no git - PHP 5.5.9-1ubuntu4.7 (apache2handler)
- MySQL 5.5.41-0ubuntu0.14.04.1-log
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
Setting up a MediaWiki instance with Juju, using the https://jujucharms.com/mediawiki/trusty/3 charm was completely unacceptable. The charm doesn't even setup a web server environment at all so it doesn't work "out of the box". When I specified an Apache2 charm https://jujucharms.com/apache2/trusty/13/ the configuration has a miscompiled PHP and also conflicting configurations (ServerLimit, MaxRequestWorkers) that causes errors in the log.
root@ip-172-31-57-182:~# /usr/sbin/apache2 -S [Thu Apr 09 13:42:06.748287 2015] [core:warn] [pid 2247] AH00111: Config variable ${APACHE_LOCK_DIR} is not defined [Thu Apr 09 13:42:06.748800 2015] [core:warn] [pid 2247] AH00111: Config variable ${APACHE_PID_FILE} is not defined [Thu Apr 09 13:42:06.749138 2015] [core:warn] [pid 2247] AH00111: Config variable ${APACHE_RUN_USER} is not defined [Thu Apr 09 13:42:06.749457 2015] [core:warn] [pid 2247] AH00111: Config variable ${APACHE_RUN_GROUP} is not defined [Thu Apr 09 13:42:06.749808 2015] [core:warn] [pid 2247] AH00111: Config variable ${APACHE_LOG_DIR} is not defined [Thu Apr 09 13:42:06.786167 2015] [:crit] [pid 2247:tid 139742374446976] Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP. AH00013: Pre-configuration failed root@ip-172-31-57-182:~# /usr/sbin/apache2 -M [Thu Apr 09 13:42:19.687521 2015] [core:warn] [pid 2248] AH00111: Config variable ${APACHE_LOCK_DIR} is not defined [Thu Apr 09 13:42:19.688010 2015] [core:warn] [pid 2248] AH00111: Config variable ${APACHE_PID_FILE} is not defined [Thu Apr 09 13:42:19.688345 2015] [core:warn] [pid 2248] AH00111: Config variable ${APACHE_RUN_USER} is not defined [Thu Apr 09 13:42:19.688604 2015] [core:warn] [pid 2248] AH00111: Config variable ${APACHE_RUN_GROUP} is not defined [Thu Apr 09 13:42:19.688886 2015] [core:warn] [pid 2248] AH00111: Config variable ${APACHE_LOG_DIR} is not defined [Thu Apr 09 13:42:19.700934 2015] [:crit] [pid 2248:tid 140047498663808] Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP. AH00013: Pre-configuration failed