Juju Charms é uma ferramenta open-source para implantar e gerenciar serviços em nuvem de forma orientada a serviços. Os charms são unidades que implementam serviços específicos e podem ser relacionados entre si. O Juju permite implantar, configurar, relacionar, escalar e destruir charms por meio de comandos ou interface gráfica.
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
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