## How to deploy (pretty much) anything with Juju
Wes Mason
[@1stvamp](http://twitter.com/1stvamp)
## Who?
- / `@1stvamp`
- Online services, [Canonical](http://www.canonical.com/)
- 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/`
### `metadata.yaml`
## Charm anatomy
- `metadata.yaml`
- **`config.yaml`**
- `hooks/`
### `config.yaml`
## 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
## sys.exit(0)
- Slides: [github.com/1stvamp/juju-talk](https://github.com/1stvamp.org/juju-talk)
- Juju: [juju.ubuntu.com](http://juju.ubuntu.com/)
## ^D
- Jonathan "Joff" Oliver: [about.me/joffie](http://about.me/joffie)
- Grab me and say hi `:-)`