provisionamento
orquestrado nas nuvens
com JuJu
Thiago Rondon, b-datum.com

7masters, cloud computing,
30 de outubro de 2013

Wednesday, October 30, 13
o que é ?
• Ubuntu, Go, OpenSource
• Escale com deploy e integração.
• Monitoramento e Diagnóstico
• AWS, Azure, HP Cloud, OpenStack, MAAS
• Provisionamento orquestrado
Wednesday, October 30, 13
charms

Wednesday, October 30, 13
metadata.yaml
name: vanilla
summary: Vanilla is an open-source, pluggable, themeable, multi-lingual forum.
maintainer: Your Name <your@email.tld>
description: |
Vanilla is designed to deploy and grow small communities to scale.
This charm deploys Vanilla Forums as outlined by the Vanilla Forums installation guide.
categories:
- applications
provides:
website:
interface: http
requires:
database:
interface: mysql

Wednesday, October 30, 13
Hooks
•
•
•
•

Wednesday, October 30, 13

install, start, stop
config-changed, upgrade-charm
relation-joined, relation-changed
relation-departed, relation-broken
cenário clássico
jenkins

jenkins-slave

nagios

Wednesday, October 30, 13
bootstrap
state machine
jenkins
jenkins-slave
nagios

Wednesday, October 30, 13

$	
  juju	
  bootstrap	
  

$	
  juju	
  deploy	
  jenkins	
  

$	
  juju	
  deploy	
  jenkins-­‐slave	
  

$	
  juju	
  deploy	
  nagios
relacionamento
jenkins

jenkins-slave

$	
  juju	
  add-­‐relation	
  jenkins	
  jenkins-­‐slave	
  

Wednesday, October 30, 13
para o mundo
$	
  juju	
  set	
  jenkins	
  password=imasters	
  
$	
  juju	
  expose	
  jenkins

Wednesday, October 30, 13
para o mundo
➜	
  	
  ~	
  	
  juju	
  status	
  jenkins
environment:	
  amazon
machines:
	
  	
  "1":
	
  	
  	
  	
  agent-­‐state:	
  started
	
  	
  	
  	
  agent-­‐version:	
  1.16.0
	
  	
  	
  	
  dns-­‐name:	
  ec2-­‐54-­‐205-­‐44-­‐5.compute-­‐1.amazonaws.com
	
  	
  	
  	
  instance-­‐id:	
  i-­‐0db6ad75
	
  	
  	
  	
  instance-­‐state:	
  running
	
  	
  	
  	
  series:	
  precise
	
  	
  	
  	
  hardware:	
  arch=amd64	
  cpu-­‐cores=1	
  cpu-­‐power=100	
  mem=1740M	
  root-­‐disk=8192M
services:
	
  	
  jenkins:
	
  	
  	
  	
  charm:	
  cs:precise/jenkins-­‐8
	
  	
  	
  	
  exposed:	
  true
	
  	
  	
  	
  relations:
	
  	
  	
  	
  	
  	
  master:
	
  	
  	
  	
  	
  	
  -­‐	
  jenkins-­‐slave
	
  	
  	
  	
  units:
	
  	
  	
  	
  	
  	
  jenkins/0:
	
  	
  	
  	
  	
  	
  	
  	
  agent-­‐state:	
  error
	
  	
  	
  	
  	
  	
  	
  	
  agent-­‐state-­‐info:	
  'hook	
  failed:	
  "master-­‐relation-­‐changed"'
	
  	
  	
  	
  	
  	
  	
  	
  agent-­‐version:	
  1.16.0
	
  	
  	
  	
  	
  	
  	
  	
  machine:	
  "1"
	
  	
  	
  	
  	
  	
  	
  	
  open-­‐ports:
	
  	
  	
  	
  	
  	
  	
  	
  -­‐	
  8080/tcp
	
  	
  	
  	
  	
  	
  	
  	
  public-­‐address:	
  ec2-­‐54-­‐205-­‐44-­‐5.compute-­‐1.amazonaws.com
Wednesday, October 30, 13
escalando
jenkins-slave
jenkins
jenkins-slave

$	
  juju	
  add-­‐unit	
  jenkins-­‐slave	
  

Wednesday, October 30, 13
relacionando
nagios

jenkins
$	
  juju	
  add-­‐relation	
  nagios	
  jenkins
$	
  juju	
  add-­‐relation	
  nagios	
  jenkins-­‐slave

Wednesday, October 30, 13

jenkins-slave

jenkins-slave
configurando
nagios

$	
  juju	
  expose	
  nagios
$	
  juju	
  ssh	
  nagios/0	
  sudo	
  cat	
  /var/lib/juju/nagios.passwd

Wednesday, October 30, 13
serviço subordinado
nrpe

$	
  juju	
  deploy	
  nrpe
$	
  juju	
  add-­‐relation	
  nrpe	
  jenkins
$	
  juju	
  add-­‐relation	
  nrpe	
  jenkins-­‐slave
$	
  juju	
  add-­‐relation	
  nrpe:monitors	
  nagios:monitors

Wednesday, October 30, 13
state machine

jenkins
jenkins-slave
jenkins-slave

Wednesday, October 30, 13

nrpe

nagios
resumindo...
➜	
  	
  ~	
  	
  juju	
  bootstrap
➜	
  	
  ~	
  	
  juju	
  deploy	
  jenkins
➜	
  	
  ~	
  	
  juju	
  deploy	
  jenkins-­‐slave
➜	
  	
  ~	
  	
  juju	
  add-­‐relation	
  jenkins	
  jenkins-­‐slave
➜	
  	
  ~	
  	
  juju	
  deploy	
  nagios
➜	
  	
  ~	
  	
  juju	
  set	
  jenkins	
  password=imasters
➜	
  	
  ~	
  	
  juju	
  expose	
  jenkins
➜	
  	
  ~	
  	
  juju	
  add-­‐unit	
  jenkins-­‐slave
➜	
  	
  ~	
  	
  juju	
  add-­‐relation	
  nagios	
  jenkins
➜	
  	
  ~	
  	
  juju	
  expose	
  nagios
➜	
  	
  ~	
  	
  juju	
  add-­‐relation	
  nagios	
  jenkins-­‐slave
➜	
  	
  ~	
  	
  juju	
  deploy	
  nrpe
➜	
  	
  ~	
  	
  juju	
  add-­‐relation	
  nrpe	
  jenkins
➜	
  	
  ~	
  	
  juju	
  add-­‐relation	
  nrpe	
  jenkins-­‐slave
➜	
  	
  ~	
  	
  juju	
  add-­‐relation	
  nrpe:monitors	
  nagios:monitors

Wednesday, October 30, 13
juju GUI
juju-gui

$	
  juju	
  deploy	
  juju-­‐gui
$	
  juju	
  expose	
  juju-­‐gui

Wednesday, October 30, 13
juju GUI

Wednesday, October 30, 13
juju GUI

Wednesday, October 30, 13
como esta ?
$	
  juju	
  status
$	
  juju	
  status	
  service*
$	
  juju	
  status	
  -­‐e	
  local
$	
  juju	
  status	
  -­‐-­‐format=json
$	
  juju	
  ssh	
  wordpress/1
$	
  juju	
  debug-­‐log

Wednesday, October 30, 13
escalando
$	
  juju	
  add-­‐unit	
  -­‐n	
  5	
  mysql
$	
  juju	
  add-­‐machine
$	
  juju	
  deploy	
  -­‐-­‐constraints=”mem=4G”

Wednesday, October 30, 13
destroy/remove
$	
  juju	
  remove-­‐unit	
  mysql/6
$	
  juju	
  destroy-­‐environment	
  -­‐e	
  amazon
$	
  juju	
  detroy-­‐relation	
  service	
  mysql

Wednesday, October 30, 13
http://juju.ubuntu.com
https://code.launchpad.net/~juju

Wednesday, October 30, 13

Provisionamento orquestrado nas nuvens com Juju

  • 1.
    provisionamento orquestrado nas nuvens comJuJu Thiago Rondon, b-datum.com 7masters, cloud computing, 30 de outubro de 2013 Wednesday, October 30, 13
  • 2.
    o que é? • Ubuntu, Go, OpenSource • Escale com deploy e integração. • Monitoramento e Diagnóstico • AWS, Azure, HP Cloud, OpenStack, MAAS • Provisionamento orquestrado Wednesday, October 30, 13
  • 3.
  • 4.
    metadata.yaml name: vanilla summary: Vanillais an open-source, pluggable, themeable, multi-lingual forum. maintainer: Your Name <your@email.tld> description: | Vanilla is designed to deploy and grow small communities to scale. This charm deploys Vanilla Forums as outlined by the Vanilla Forums installation guide. categories: - applications provides: website: interface: http requires: database: interface: mysql Wednesday, October 30, 13
  • 5.
    Hooks • • • • Wednesday, October 30,13 install, start, stop config-changed, upgrade-charm relation-joined, relation-changed relation-departed, relation-broken
  • 6.
  • 7.
    bootstrap state machine jenkins jenkins-slave nagios Wednesday, October30, 13 $  juju  bootstrap   $  juju  deploy  jenkins   $  juju  deploy  jenkins-­‐slave   $  juju  deploy  nagios
  • 8.
    relacionamento jenkins jenkins-slave $  juju  add-­‐relation  jenkins  jenkins-­‐slave   Wednesday, October 30, 13
  • 9.
    para o mundo $  juju  set  jenkins  password=imasters   $  juju  expose  jenkins Wednesday, October 30, 13
  • 10.
    para o mundo ➜    ~    juju  status  jenkins environment:  amazon machines:    "1":        agent-­‐state:  started        agent-­‐version:  1.16.0        dns-­‐name:  ec2-­‐54-­‐205-­‐44-­‐5.compute-­‐1.amazonaws.com        instance-­‐id:  i-­‐0db6ad75        instance-­‐state:  running        series:  precise        hardware:  arch=amd64  cpu-­‐cores=1  cpu-­‐power=100  mem=1740M  root-­‐disk=8192M services:    jenkins:        charm:  cs:precise/jenkins-­‐8        exposed:  true        relations:            master:            -­‐  jenkins-­‐slave        units:            jenkins/0:                agent-­‐state:  error                agent-­‐state-­‐info:  'hook  failed:  "master-­‐relation-­‐changed"'                agent-­‐version:  1.16.0                machine:  "1"                open-­‐ports:                -­‐  8080/tcp                public-­‐address:  ec2-­‐54-­‐205-­‐44-­‐5.compute-­‐1.amazonaws.com Wednesday, October 30, 13
  • 11.
    escalando jenkins-slave jenkins jenkins-slave $  juju  add-­‐unit  jenkins-­‐slave   Wednesday, October 30, 13
  • 12.
    relacionando nagios jenkins $  juju  add-­‐relation  nagios  jenkins $  juju  add-­‐relation  nagios  jenkins-­‐slave Wednesday, October 30, 13 jenkins-slave jenkins-slave
  • 13.
    configurando nagios $  juju  expose  nagios $  juju  ssh  nagios/0  sudo  cat  /var/lib/juju/nagios.passwd Wednesday, October 30, 13
  • 14.
    serviço subordinado nrpe $  juju  deploy  nrpe $  juju  add-­‐relation  nrpe  jenkins $  juju  add-­‐relation  nrpe  jenkins-­‐slave $  juju  add-­‐relation  nrpe:monitors  nagios:monitors Wednesday, October 30, 13
  • 15.
  • 16.
    resumindo... ➜    ~    juju  bootstrap ➜    ~    juju  deploy  jenkins ➜    ~    juju  deploy  jenkins-­‐slave ➜    ~    juju  add-­‐relation  jenkins  jenkins-­‐slave ➜    ~    juju  deploy  nagios ➜    ~    juju  set  jenkins  password=imasters ➜    ~    juju  expose  jenkins ➜    ~    juju  add-­‐unit  jenkins-­‐slave ➜    ~    juju  add-­‐relation  nagios  jenkins ➜    ~    juju  expose  nagios ➜    ~    juju  add-­‐relation  nagios  jenkins-­‐slave ➜    ~    juju  deploy  nrpe ➜    ~    juju  add-­‐relation  nrpe  jenkins ➜    ~    juju  add-­‐relation  nrpe  jenkins-­‐slave ➜    ~    juju  add-­‐relation  nrpe:monitors  nagios:monitors Wednesday, October 30, 13
  • 17.
    juju GUI juju-gui $  juju  deploy  juju-­‐gui $  juju  expose  juju-­‐gui Wednesday, October 30, 13
  • 18.
  • 19.
  • 20.
    como esta ? $  juju  status $  juju  status  service* $  juju  status  -­‐e  local $  juju  status  -­‐-­‐format=json $  juju  ssh  wordpress/1 $  juju  debug-­‐log Wednesday, October 30, 13
  • 21.
    escalando $  juju  add-­‐unit  -­‐n  5  mysql $  juju  add-­‐machine $  juju  deploy  -­‐-­‐constraints=”mem=4G” Wednesday, October 30, 13
  • 22.
    destroy/remove $  juju  remove-­‐unit  mysql/6 $  juju  destroy-­‐environment  -­‐e  amazon $  juju  detroy-­‐relation  service  mysql Wednesday, October 30, 13
  • 23.