SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
Entendendo
Juju Charms
Demis Gomes
<demismg72@gmail.com>
<demis.gomes@gprt.ufpe.br>
Roteiro de Apresentacão
● O que é Juju Charms?
● Utilizacão
● Funcionalidades
● Pontos fracos
● Como um charm funciona?
● Conclusão
2
O que é Juju Charms?
Não, esta apresentacão não falará sobre
Juju Salimeni :'(
É sobre a ferramenta Juju
Charms! 3
O que é Juju Charms?
Juju Charms é um modelo open-source para arquiteturas orientadas a servicos e
deploys orientados a servicos [1]
Com Juju, é possível modelar diferentes servicos, como por exemplo, um servidor
web, um banco de dados ou uma ferramenta de monitoramento e relacioná-los de
modo que alcancem os objetivos propostos.
Juju permite "deployar", manter, configurar, destruir e escalar servicos em um
ambiente de Nuvem.
Juju é feita principalmente em Go, com quase 99% do código desta linguagem
O nome charm vem da facilidade de criar servicos, como se fosse magia 4
O que é Juju Charms?
Os servicos, chamados charms, são
ferramentas usados por
desenvolvedores para criar
aplicacões, como por exemplo
Hadoop, MySQL, RabbitMQ e outras.
Estes charms são providos pela
comunidade através da Charms
Store, com alguns deles sendo
recomendados, pois são feitos pelo
grupo de revisores do Juju,
chamado charmers.
O principal objetivo do Juju é reusar
o código genérico das aplicacões em
diferentes ambientes[1] 5
O que é Juju Charms?
Usuários e contribuidores
6
Arquitetura
7
Arquitetura
Juju é iniciado sobre um IaaS ou localmente, criando a máquina chamada State-
Service, que gerencia outras máquinas.
A State-service busca no Charms Store ou em um repositóro local (se passado por
argumentos) o charm a ser “deployado” a partir da requisição do administrador.
A State-service cria uma VM ou container (depende do IaaS), contendo um agente.
O agente se comunica com o State-service, passando informações à ele. O código
do charm roda em uma unit, que pode ser executada em uma ou mais máquinas.
O admin pode gerenciar o ambiente pela Juju CLI ou Juju GUI
8
Utilizacão
Pode ser desenvolvido em vários provedores de IaaS ou localmente[2]
9
Utilizacão
A instalacão pode ser encontrada em https://jujucharms.com/get-started
Depois da instalacão:
Para criar um servico[2]
:
juju deploy wordpress
Para relacioná-lo com o MySQL:
juju deploy mysql
juju add-relation wordpresss mysql
10
Utilizacão
Para adicionar uma unidade:
juju add-unit wordpress
Deste modo será criada uma nova instância do Wordpress
Para desenvolver um servico em uma máquina com mais recursos
juju deploy wordpress --constraints=”mem=6G cpu-cores=4“
Para desenvolver um servico com uma configuracão diferente
juju deploy --config myconfig.yaml mediawiki
É necessário criar o myconfig.yaml, como é mostrado neste link
11
Utilizacão
Para adicionar uma unidade em uma máquina específica:
juju add-unit wordpress --to 2
Onde "2" é o id da máquina
Para mudar a configuracão durante a execucão do charm:
juju set wordpress tuning=optimized
Onde “tuning” é uma opcão de configuracão e “optimized” um valor que pode ser atribuído a ela.
Para destruir um servico:
juju destroy mysql
12
Utilizacão
Existe uma ferramenta chamada
Juju GUI[3]
Com ela, é possível gerenciar os
charms por uma Web GUI,
facilitando o uso das
funcionalidades do Juju.
13
Características
● Instale, modele, escale e gerencie serviços de forma fácil
● Utiliza uma Web GUI facilitar o gerenciamento de modo intuitivo
● Não reinventa a roda, utilizando códigos feitos por experts que resolvem
muitos problemas comuns
● Evita problemas de dependências em diferentes máquinas, executando os
serviços em qualquer lugar que Juju está instalado
● Configure os serviços do jeito que quiser antes ou durante a sua execução
● Você pode criar um charm e contribuir com a comunidade
● Fácil de usar, instalar e configurar
14
Pontos fracos
● Não realiza auto scaling
● Limitada a máquinas Ubuntu
● Poderia ter uma ferramenta como uma IDE para facilitar o desenvolvimento de
um charm
15
Como um charm funciona?
Um charm é uma máquina Ubuntu que pode ser criada em algumas versões do
Ubuntu. A máquina pode ser uma máquina virtual ou um container, e contém um
código com a lógica necessária para funcionar.
Este charm roda scripts nesta máquina, que instalam e configuram o serviço a ser
executado, além de definir como o charm se relacionará com outros charms.
O charm pode prover um serviço, como um Web Server, ou requisitar um serviço,
como um banco de dados.
* until the presentation’s date in 15/09/2015 16
Como um charm funciona?
A estrutura básica de um código charm, que será detalhada nos próximos slides
17
Como um charm funciona?
A estrutura básica de um código charm
● config.yaml: composto por nome, descrição e
tipo de várias configurações definidas pelos
autores do charm
● metadata.yaml: contém o nome do charm,
descrição, resumo, tags e os serviços necessários
ou providos pelo charm. Ex: Wordpress requer
banco de dados e provê um website
● icon.svg: A imagem do charm
● README.md: Apesar da extensão da imagem a
direita ser ex, é indicado a extensão md, pois o
texto é melhor preenchido na web. Este arquivo
informa aos usuários como o charm funciona.
18
Como um charm funciona?
● hooks dir: Este diretório contém os
principais scripts que são executados
quando um charm está executando. O
diretório é composto por:
○ config-changed: este script é
executado quando uma configuração
é alterada durante a execução do
charm ou um novo arquivo de
configuração é passado no momento
do deploy
○ install: Script que instala os pacotes
necessários e configura o serviço
19
○ start: script simples que inicia o
serviço
○ stop: para o serviço
Como um charm funciona?
● hooks dir:
○ upgrade-charm: script que é chamado
quando uma nova versão do charm
está disponível e o usuário deseja
atualizá-la para a nova versão.
○ relation-name...: scripts que rodam
quando uma relação é criada. Os tipos
de relação podem ser joined,
departed, changed ou broken. Alguns
nomes de relação são banco de
dados, website, load-balancer, nfs,
etc...
20
Como um charm funciona?
Um exemplo de relação ocorre entre
Wordpress e MySQL. O Wordpress
requer o MySQL como banco de dados, e
executa o script db-relation-departed
quando conecta com o charm MySQL.
Este link contém o script.
Como o MySQL provê um banco de
dados, o charm MySQL execta o script
db-relation-joined para criar um banco
de dados e configurar o acesso do
Wordpress à ele. O código pode ser
acessado aqui.
Um bundle é um conjunto de
charms com características e
relações bem definidas. O exemplo
acima pode ser considerado um
bundle.
21
O que mais nós podemos fazer?
Escrever um charm, usando ferramentas como charm tools e charm helpers;
Enviar um charm ao Charms Store;
Contribuir com a comunidade
22
Conclusão
Juju é uma ferramenta de orquestração que permite modelar arquiteturas
orientadas a serviços, podendo rodar em vários provedores de IaaS
Ele reutiliza o código e implementa ambientes facilmente e rapidamente, sem
problemas de configuração ou de dependências entre as máquinas
Permite gerenciar, configurar, construir relações e escalar charms, mas não provê
autoscaling e é limitado a serviços que rodam no Ubuntu
Criar charms pode ser muito útil, além de ser legal contribuir com a comunidade
23
Referências
1. About Juju. https://jujucharms.com/docs/stable/about-juju. Acessado em
11/09/2015.
2. Introduction. https://jujucharms.com/docs/stable/getting-started. Acessado em
15/09/2015.
3. What is the GUI? https://jujucharms.com/docs/stable/howto-gui-management.
Acessado in 16/09/2015.
24

Mais conteúdo relacionado

Semelhante a Entendendo Juju Charms

Orquestrando OpenStack com Juju
Orquestrando OpenStack com JujuOrquestrando OpenStack com Juju
Orquestrando OpenStack com JujuTIVIT LATAM
 
Introdução ao jabber
Introdução ao jabberIntrodução ao jabber
Introdução ao jabbergrolibest
 
Sistemas operacionais de redes II
Sistemas operacionais de redes IISistemas operacionais de redes II
Sistemas operacionais de redes IIDaniel Brandão
 
Criando Sites Com CMS
Criando Sites Com CMSCriando Sites Com CMS
Criando Sites Com CMSClaudio Toldo
 
Vitor Hugo Bastos Cardoso apresenta voando alto com WordPress: um guia prátic...
Vitor Hugo Bastos Cardoso apresenta voando alto com WordPress: um guia prátic...Vitor Hugo Bastos Cardoso apresenta voando alto com WordPress: um guia prátic...
Vitor Hugo Bastos Cardoso apresenta voando alto com WordPress: um guia prátic...WordCamp Floripa
 
Projeto jorge,jefff, matheus
Projeto   jorge,jefff, matheusProjeto   jorge,jefff, matheus
Projeto jorge,jefff, matheusEadanalise
 
Speed stream 5200
Speed stream 5200Speed stream 5200
Speed stream 5200maxytetsu
 
Tcvb2 diogo mendes_ trabalho final modulo 3_v1
Tcvb2 diogo mendes_ trabalho final modulo 3_v1Tcvb2 diogo mendes_ trabalho final modulo 3_v1
Tcvb2 diogo mendes_ trabalho final modulo 3_v1diogomendes99
 
Introdução ao desenvolvimento front end usando bootstrap e angular js
Introdução ao desenvolvimento front end usando bootstrap e angular jsIntrodução ao desenvolvimento front end usando bootstrap e angular js
Introdução ao desenvolvimento front end usando bootstrap e angular jsCloves Moreira Junior
 
Mvc model view controller - java para desenvolvimento web
Mvc   model view controller - java para desenvolvimento webMvc   model view controller - java para desenvolvimento web
Mvc model view controller - java para desenvolvimento webValdir Junior
 
Servidor - Criação de Domínios
Servidor - Criação de DomíniosServidor - Criação de Domínios
Servidor - Criação de Domíniosrphasaigg
 
Programação Web com Zend Framework e Ajax com Dojo
Programação Web com Zend Framework e Ajax com DojoProgramação Web com Zend Framework e Ajax com Dojo
Programação Web com Zend Framework e Ajax com Dojofabioginzel
 
Tutorial completo montando uma lan house
Tutorial completo montando uma lan houseTutorial completo montando uma lan house
Tutorial completo montando uma lan housejulioblogger
 

Semelhante a Entendendo Juju Charms (20)

Orquestrando OpenStack com Juju
Orquestrando OpenStack com JujuOrquestrando OpenStack com Juju
Orquestrando OpenStack com Juju
 
Introdução ao jabber
Introdução ao jabberIntrodução ao jabber
Introdução ao jabber
 
Sistemas operacionais de redes II
Sistemas operacionais de redes IISistemas operacionais de redes II
Sistemas operacionais de redes II
 
Trab linux+sarg
Trab linux+sargTrab linux+sarg
Trab linux+sarg
 
Criando Sites Com CMS
Criando Sites Com CMSCriando Sites Com CMS
Criando Sites Com CMS
 
Vitor Hugo Bastos Cardoso apresenta voando alto com WordPress: um guia prátic...
Vitor Hugo Bastos Cardoso apresenta voando alto com WordPress: um guia prátic...Vitor Hugo Bastos Cardoso apresenta voando alto com WordPress: um guia prátic...
Vitor Hugo Bastos Cardoso apresenta voando alto com WordPress: um guia prátic...
 
Dreamweaver cs5
Dreamweaver cs5Dreamweaver cs5
Dreamweaver cs5
 
Projeto jorge,jefff, matheus
Projeto   jorge,jefff, matheusProjeto   jorge,jefff, matheus
Projeto jorge,jefff, matheus
 
Entrega ebook-gratis
Entrega ebook-gratisEntrega ebook-gratis
Entrega ebook-gratis
 
Speed stream 5200
Speed stream 5200Speed stream 5200
Speed stream 5200
 
Servidor apache
Servidor apacheServidor apache
Servidor apache
 
Apostila dreamweavercs5
Apostila dreamweavercs5Apostila dreamweavercs5
Apostila dreamweavercs5
 
Tcvb2 diogo mendes_ trabalho final modulo 3_v1
Tcvb2 diogo mendes_ trabalho final modulo 3_v1Tcvb2 diogo mendes_ trabalho final modulo 3_v1
Tcvb2 diogo mendes_ trabalho final modulo 3_v1
 
Tutorial codeigniter
Tutorial codeigniterTutorial codeigniter
Tutorial codeigniter
 
Introdução ao desenvolvimento front end usando bootstrap e angular js
Introdução ao desenvolvimento front end usando bootstrap e angular jsIntrodução ao desenvolvimento front end usando bootstrap e angular js
Introdução ao desenvolvimento front end usando bootstrap e angular js
 
Mvc model view controller - java para desenvolvimento web
Mvc   model view controller - java para desenvolvimento webMvc   model view controller - java para desenvolvimento web
Mvc model view controller - java para desenvolvimento web
 
Servidor - Criação de Domínios
Servidor - Criação de DomíniosServidor - Criação de Domínios
Servidor - Criação de Domínios
 
Programação Web com Zend Framework e Ajax com Dojo
Programação Web com Zend Framework e Ajax com DojoProgramação Web com Zend Framework e Ajax com Dojo
Programação Web com Zend Framework e Ajax com Dojo
 
Tutorial completo montando uma lan house
Tutorial completo montando uma lan houseTutorial completo montando uma lan house
Tutorial completo montando uma lan house
 
Windows server_2016
 Windows server_2016 Windows server_2016
Windows server_2016
 

Entendendo Juju Charms

  • 2. Roteiro de Apresentacão ● O que é Juju Charms? ● Utilizacão ● Funcionalidades ● Pontos fracos ● Como um charm funciona? ● Conclusão 2
  • 3. O que é Juju Charms? Não, esta apresentacão não falará sobre Juju Salimeni :'( É sobre a ferramenta Juju Charms! 3
  • 4. O que é Juju Charms? Juju Charms é um modelo open-source para arquiteturas orientadas a servicos e deploys orientados a servicos [1] Com Juju, é possível modelar diferentes servicos, como por exemplo, um servidor web, um banco de dados ou uma ferramenta de monitoramento e relacioná-los de modo que alcancem os objetivos propostos. Juju permite "deployar", manter, configurar, destruir e escalar servicos em um ambiente de Nuvem. Juju é feita principalmente em Go, com quase 99% do código desta linguagem O nome charm vem da facilidade de criar servicos, como se fosse magia 4
  • 5. O que é Juju Charms? Os servicos, chamados charms, são ferramentas usados por desenvolvedores para criar aplicacões, como por exemplo Hadoop, MySQL, RabbitMQ e outras. Estes charms são providos pela comunidade através da Charms Store, com alguns deles sendo recomendados, pois são feitos pelo grupo de revisores do Juju, chamado charmers. O principal objetivo do Juju é reusar o código genérico das aplicacões em diferentes ambientes[1] 5
  • 6. O que é Juju Charms? Usuários e contribuidores 6
  • 8. Arquitetura Juju é iniciado sobre um IaaS ou localmente, criando a máquina chamada State- Service, que gerencia outras máquinas. A State-service busca no Charms Store ou em um repositóro local (se passado por argumentos) o charm a ser “deployado” a partir da requisição do administrador. A State-service cria uma VM ou container (depende do IaaS), contendo um agente. O agente se comunica com o State-service, passando informações à ele. O código do charm roda em uma unit, que pode ser executada em uma ou mais máquinas. O admin pode gerenciar o ambiente pela Juju CLI ou Juju GUI 8
  • 9. Utilizacão Pode ser desenvolvido em vários provedores de IaaS ou localmente[2] 9
  • 10. Utilizacão A instalacão pode ser encontrada em https://jujucharms.com/get-started Depois da instalacão: Para criar um servico[2] : juju deploy wordpress Para relacioná-lo com o MySQL: juju deploy mysql juju add-relation wordpresss mysql 10
  • 11. Utilizacão Para adicionar uma unidade: juju add-unit wordpress Deste modo será criada uma nova instância do Wordpress Para desenvolver um servico em uma máquina com mais recursos juju deploy wordpress --constraints=”mem=6G cpu-cores=4“ Para desenvolver um servico com uma configuracão diferente juju deploy --config myconfig.yaml mediawiki É necessário criar o myconfig.yaml, como é mostrado neste link 11
  • 12. Utilizacão Para adicionar uma unidade em uma máquina específica: juju add-unit wordpress --to 2 Onde "2" é o id da máquina Para mudar a configuracão durante a execucão do charm: juju set wordpress tuning=optimized Onde “tuning” é uma opcão de configuracão e “optimized” um valor que pode ser atribuído a ela. Para destruir um servico: juju destroy mysql 12
  • 13. Utilizacão Existe uma ferramenta chamada Juju GUI[3] Com ela, é possível gerenciar os charms por uma Web GUI, facilitando o uso das funcionalidades do Juju. 13
  • 14. Características ● Instale, modele, escale e gerencie serviços de forma fácil ● Utiliza uma Web GUI facilitar o gerenciamento de modo intuitivo ● Não reinventa a roda, utilizando códigos feitos por experts que resolvem muitos problemas comuns ● Evita problemas de dependências em diferentes máquinas, executando os serviços em qualquer lugar que Juju está instalado ● Configure os serviços do jeito que quiser antes ou durante a sua execução ● Você pode criar um charm e contribuir com a comunidade ● Fácil de usar, instalar e configurar 14
  • 15. Pontos fracos ● Não realiza auto scaling ● Limitada a máquinas Ubuntu ● Poderia ter uma ferramenta como uma IDE para facilitar o desenvolvimento de um charm 15
  • 16. Como um charm funciona? Um charm é uma máquina Ubuntu que pode ser criada em algumas versões do Ubuntu. A máquina pode ser uma máquina virtual ou um container, e contém um código com a lógica necessária para funcionar. Este charm roda scripts nesta máquina, que instalam e configuram o serviço a ser executado, além de definir como o charm se relacionará com outros charms. O charm pode prover um serviço, como um Web Server, ou requisitar um serviço, como um banco de dados. * until the presentation’s date in 15/09/2015 16
  • 17. Como um charm funciona? A estrutura básica de um código charm, que será detalhada nos próximos slides 17
  • 18. Como um charm funciona? A estrutura básica de um código charm ● config.yaml: composto por nome, descrição e tipo de várias configurações definidas pelos autores do charm ● metadata.yaml: contém o nome do charm, descrição, resumo, tags e os serviços necessários ou providos pelo charm. Ex: Wordpress requer banco de dados e provê um website ● icon.svg: A imagem do charm ● README.md: Apesar da extensão da imagem a direita ser ex, é indicado a extensão md, pois o texto é melhor preenchido na web. Este arquivo informa aos usuários como o charm funciona. 18
  • 19. Como um charm funciona? ● hooks dir: Este diretório contém os principais scripts que são executados quando um charm está executando. O diretório é composto por: ○ config-changed: este script é executado quando uma configuração é alterada durante a execução do charm ou um novo arquivo de configuração é passado no momento do deploy ○ install: Script que instala os pacotes necessários e configura o serviço 19 ○ start: script simples que inicia o serviço ○ stop: para o serviço
  • 20. Como um charm funciona? ● hooks dir: ○ upgrade-charm: script que é chamado quando uma nova versão do charm está disponível e o usuário deseja atualizá-la para a nova versão. ○ relation-name...: scripts que rodam quando uma relação é criada. Os tipos de relação podem ser joined, departed, changed ou broken. Alguns nomes de relação são banco de dados, website, load-balancer, nfs, etc... 20
  • 21. Como um charm funciona? Um exemplo de relação ocorre entre Wordpress e MySQL. O Wordpress requer o MySQL como banco de dados, e executa o script db-relation-departed quando conecta com o charm MySQL. Este link contém o script. Como o MySQL provê um banco de dados, o charm MySQL execta o script db-relation-joined para criar um banco de dados e configurar o acesso do Wordpress à ele. O código pode ser acessado aqui. Um bundle é um conjunto de charms com características e relações bem definidas. O exemplo acima pode ser considerado um bundle. 21
  • 22. O que mais nós podemos fazer? Escrever um charm, usando ferramentas como charm tools e charm helpers; Enviar um charm ao Charms Store; Contribuir com a comunidade 22
  • 23. Conclusão Juju é uma ferramenta de orquestração que permite modelar arquiteturas orientadas a serviços, podendo rodar em vários provedores de IaaS Ele reutiliza o código e implementa ambientes facilmente e rapidamente, sem problemas de configuração ou de dependências entre as máquinas Permite gerenciar, configurar, construir relações e escalar charms, mas não provê autoscaling e é limitado a serviços que rodam no Ubuntu Criar charms pode ser muito útil, além de ser legal contribuir com a comunidade 23
  • 24. Referências 1. About Juju. https://jujucharms.com/docs/stable/about-juju. Acessado em 11/09/2015. 2. Introduction. https://jujucharms.com/docs/stable/getting-started. Acessado em 15/09/2015. 3. What is the GUI? https://jujucharms.com/docs/stable/howto-gui-management. Acessado in 16/09/2015. 24