Skip to content

Deployment Orchestration

Objetivos:

  1. Entender os conceitos básicos sobre uma plataforma de gerenciamento de aplicações distribuídas.
  2. Entender os conceitos básicos de comunicação entre aplicações e serviços.

Pré-requisitos:

  1. Terminar o capítulo anterior (Bare metal)
  2. Realizar a leitura sobre o Juju. [https://juju.is/docs/juju/how-to].
Info

DIVISÃO DO ROTEIRO O Roteiro é dividido em 2 partes principais.

  • Criando Infraestrutura para deploy com Juju (Deployment Orchestration)
  • Utilizando a infraestrutura Bare Metal com o Juju - exemplo de deploy Wordpress

Criando Infraestrutura para deploy com Juju

Ansible é um gerenciador de deploy que consegue lidar com a instalação e configuração de um conjunto de nós pré reservados, mas não consegue realizar o provisionamento direto com o MaaS (gerenciador de Bare-metal). Para montar a nossa Cloud Privada, vamos utilizar outro orquestrador de deploy que integra com o MaaS.

  • Antes de continuar, verifique se todas máquinas (server1, server2, server3, server4 e server5) estão Ready no MAAS. Faça o release das máquinas Django e Postgres caso necessário.
  • Acesse o main via SSH e instale o Juju
  • $ sudo snap install juju --channel 3.1

Comando da nova versão!!!!!

  • Verifique se o Juju enxerga o MaaS como um provedor de recursos
  • $ juju clouds

Adicione o cluster MAAS para que o Juju possa gerenciá-lo como uma cloud. Vamos fazer isso através de um arquivo de definição de cloud, como maas-cloud.yaml:

  • Caso não possua o MaaS como opção, deve adicioná-lo, confirme se o arquivo corresponde com o seu ambiente
  • Criar um arquivo de configuração: maas-cloud.yaml (atenção com a formatação)

      clouds:
        maas-one:
          type: maas
          auth-types: [oauth1]
          endpoint: http://192.168.0.3:5240/MAAS/
    

  • $ juju add-cloud --client -f maas-cloud.yaml maas-one

Adicione as credenciais MAAS para que o Juju possa interagir com a nova cloud adicionada. Vamos novamente usar um arquivo para importar nossas informações, como maas-creds.yaml:

credentials: maas-one: anyuser: auth-type: oauth1 maas-oauth: LGJ8svffZZ5kSdeA8E:9kVM7jJpHGG6J9apk3:KE65tLnjpPuqVHZ6vb97T8VWfVB9tM3j

  • $ juju add-credential --client -f maas-creds.yaml maas-one
  • Obs: OAuth é o API KEY gerado no MaaS (dentro do menu do usuário)

Crie o controlador (usando a série ‘jammy’) para a cloud ‘maas-one’ e chame-o de ‘maas-controller’: Iremos criar o controlador no server1 para isso faça a tag da maquina com o nome juju através do dashboard MAAS na maquina server1.

  • $ juju bootstrap --bootstrap-series=jammy --constraints tags=juju maas-one maas-controller
  • Para verificar o status do controller utilize:
  • $ juju status

Ao contrário do Ansible, Juju necessita de uma máquina exclusiva para controlar todo o deploy. Essa máquina é alocada automaticamente durante o bootstrap e controlará todo o deploy que faremos no próximo roteiro. Ainda, assim como você usou o maas-cli na primeira implantação, você usou o juju-cli para interagir com o serviço.

Para dúvidas relacionadas ao deploy com o juju acesse a documentação oficial: https://docs.openstack.org/project-deploy-guide/charm-deployment-guide/latest/install-juju.html

Utilizando a infraestrutura Bare Metal com o Juju

Vamos utilizar o Juju para deploy de uma das arquiteturas abaixo.

As aplicações que vamos utilizar são:

Faca o deploy da Aplicacao Grafana e Prometheus

Deploy Grafana e Prometheus

O Grafana é uma plataforma de código aberto que simplifica a apresentação visual de dados, como gráficos e painéis, facilitando a compreensão em tempo real de sistemas e informações.

Para funcionar, o Grafana requer um banco de dados para armazenar configurações, metadados e informações relacionadas à exibição de dados em seus painéis e gráficos. Ele é compatível com vários bancos de dados, como Prometheus, MySQL, PostgreSQL, InfluxDB, SQLite3 e outros. Neste contexto, estamos utilizando o Prometheus como banco de dados, mas você tem a flexibilidade de escolher outro se preferir.

  • Instale a aplicação charm para utilizarmos, vamos baixar o charm do Grafana do repositório charm-hub.
Charm

O charm é como um pacote que contém instruções sobre como instalar e configurar um aplicativo, como o Grafana. Você simplesmente escolhe o charm do Grafana, define algumas configurações e o Juju cuida do restante, tornando o processo de implantação mais fácil e consistente em ambientes de nuvem. Entenda melhor sobre o que é o charm lendo a sua documentação charm-hub.

$ sudo snap install charm --channel=2.x/stable --classic

Agora é só fazer o Deploy com o auxilio do JUJU

  • Faça o deploy do charm prometheus2, para fazer deploy do charm local, use juju deploy ./pasta

Deploy do charm grafana

  • Ao realizar o Deploy do grafana, acompanhe o processo utilizando o comando juju status

Caso ocorra um erro durante a instalação (hook failed: install): * Devemos acessar o log da aplicação via o comando juju debug-log --replay --include grafana/2

  • Nos logs voce encontrará mais informações da causa do erro NO_PUBKEY
  • Ele ocorre, pois a chave GPG do repositório do grafana não está no seu servidor, quando o juju tenta fazer apt-get update o sistema não consegue verificar a autenticidade do repositório.

  • Para consertar devemos acessar o servidor do grafana e instalar a chave manualmente:

juju ssh grafana/2
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
sudo apt-get update

Ao rodar os comandos acima, a chave será instalada no sistema. Aguarde alguns instantes e o processo de instalação do grafana seguirá normalmente. Acompanhe o andamento usando o comando juju status.

Integrando Grafana com Prometheus

  • Utilize a documentação encontrada no README do charm do grafana.

  • Acesse o dashboard do Grafana do seu computador e verifique o funcionamento do sistema.

  • Verifique se a integração foi feita corretamente. Para isso crie um dashboard dentro do grafana e adicione uma visualização (deve aparecer o prometheus como source).

Exercise

Checkpoint-4

  1. De um print da tela do Dashboard do MAAS com as Maquinas e seus respectivos IPs.
  2. De um print de tela do comando "juju status" depois que o Grafana estiver "active".
  3. De um print da tela do Dashboard do Grafana com o Prometheus aparecendo como source.

OPCIONAL - Deploy Wordpress e MySQL

O Wordpress é uma plataforma de gerenciamento de conteúdo (CMS) de código aberto, baseada em PHP e MySQL. Ele é usado por mais de 60 milhões de sites, incluindo 33,6% dos 10 milhões de sites mais bem classificados. Ele oferece ferramentas poderosas que permitem aos usuários criar, editar e publicar conteúdo na web sem a necessidade de conhecimentos avançados em programação.

Para funcionar, o Wordpress requer um banco de dados para armazenar informações relacionadas ao conteúdo do site. Ele é compatível com vários bancos de dados, como MySQL, MariaDB, PostgreSQL, SQLite e outros. Neste contexto, estamos utilizando o MySQL como banco de dados, mas você tem a flexibilidade de escolher outro se preferir.

  • Instale a aplicação charm para utilizarmos, vamos baixar o charm do Wordpress do repositório charm-hub.
Charm

O charm é como um pacote que contém instruções sobre como instalar e configurar um aplicativo, como o Grafana. Você simplesmente escolhe o charm do Grafana, define algumas configurações e o Juju cuida do restante, tornando o processo de implantação mais fácil e consistente em ambientes de nuvem. Entenda melhor sobre o que é o charm lendo a sua documentação charm-hub.

$ sudo snap install charm --channel=2.x/stable --classic

  • Baixe o charm do https://charmhub.io/wordpress usando o comando charm pull.
  • $ charm pull wordpress

  • Também vamos utilizar um charm previamente modificado do MYSQL...Faça o clone do repositório GIT.

  • $ git clone https://github.com/TiagoDemay/charm-mysql.git

Agora é só fazer o Deploy com o auxilio do JUJU

  • Faça o deploy do charm charm-mysql, para fazer deploy do charm local, use juju deploy ./pasta

Modifique o charm wordpress

  • Dentro do diretório criado, edite o arquivo metadata.yaml:
  • modifique para utilizar apenas Ubuntu Bionic

  • Faça o deploy do charm wordpress alterado localmente, utilize a documentação encontrada no README do charm do wordpress que vocês baixaram, pare antes do capitulo Scaled Down Usage for Personal Use

  • Acompanhe o andamento usando o comando juju status, após terminado, acesse o Wordpress do seu computador, e verifique o funcionamento do sistema

Limpeza de ambiente !!!

  • Limpe o deploy do Juju usando o command: juju destroy-controller main

Seminário

Voce fará um seminário sobre um tema pré definido, para completar a entrega deste roteiro ... peca o tema para o professor

Conclusão: SOMENTE PARA PENSAR !!!

O Ansible utilizou indiretamente o MaaS como provedor de recursos físicos. O MaaS por sua vez forneceu o que havia disponível no rack. Você acha que seria necessária uma máquina de 32Gb para rodar um Webserver ou um Load Balancer? Extrapole a resposta para um Datacenter real, onde as máquinas possuem configurações muito superiores. Como resolver esse problema?