How to deploy (pretty much) anything with Juju
Wes Mason
@1stvamp
Who?
-
/ @1stvamp
-
Online services, Canonical
-
Open source
Juju?
- Service orchestration
- Deployment tool(s)
- Vagrant for your production infrastructure
- Not just Ubuntu
But why?
- Service orientated architecture
- Scaling
- Configuration
Charms
- Re-usable
- Best-practices for deploying/configuring a service
- e.g. distilled expertise
- Charm store
Charm anatomy
- metadata.yaml
- config.yaml
- hooks/
Charm anatomy
- metadata.yaml
- config.yaml
- hooks/
Charm anatomy
- metadata.yaml
- config.yaml
- hooks/
hooks/ directory
- Event based orchestration
- Development environment (local env, debug-hooks)
- Can be written in anything (mostly Python though)
Example
juju init
juju deploy myapp
juju deploy postgres
juju add-relation myapp postgres
juju add-unit postgres -n 2
juju stat
Configuration
juju set myapp foo=bar
juju set haproxy global_user=haproxy_admin
Best practice presets
juju set wordpress tuning=optimized
Not just configuration management..
- Use with your favourite CM (Ansible, Chef, Puppet etc.)
- CM handles machine configuration, can be mixed with service config