Post on 15-Apr-2017
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 magia4
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
ArquiteturaJuju é 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ãoA 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ãoPara 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 link11
UtilizacãoPara 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ãoExiste 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ãoJuju é 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ências1. 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