Setup do JUJU
Criando a VM para o Juju
O JUJU precisa de uma máquina para que possa fazer o bootstrap. Nesta VM o JUJU irá lançar uma série se serviços que iram coordenar todas as aplicações, fazer o download de charms etc. Em nosso caso caso, vamos criar uma VM no LXD para este papel.
- Na web UI do MAAS na barra lateral entrar em LXD e depois clique no nome do projeto que criamos nos passos anteriores
- Na nova tela, clique em
Add VM
- Coloque as seguintes configurações
- VM name: juju-machine (ou outro nome que indique que é VM do JUJU)
- Cores: 2 (mínimo)
- RAM: 4096 (mínimo)
Agora em
Storage configuration
Size: 50GB (mínimo) Para adicionar a VM, clique emCompose Machine
. Aguarde um momento até que o LXD crie a sua VM e ela estará pronta.
Com a máquina criada vamos adicionar uma tag para instalar o Juju. Isso é necessário para o Juju encontrar a máquina onde vai fazer bootstrap.
- Novamente nas configurações do lxdHost, clique no nome da VM do juju
- Vá para a aba
Configuration
e, na áreaTags
, clique emEdit
- Na barra de pesquisa digite o nome
juju
e depois emCreate tag "juju"
- Na janela aberta, simplesmente clique em
Create and add to tag changes
- Para adicionar a tag criada, clique em
Save
- Aguardar o compose da máquina, até o status dela aparecer como ready
Instalação do Juju
O JUJU é instalado via snap. Entretanto, diferente do apt, o snap não ter permissão de criar pastas na home. Desta forma, precisamos criar a pasta manualmente
sudo mkdir -p ~/.local/share/juju
Mudar a propriedade da pasta para o user
sudo chown -R ubuntu:ubuntu ~/.local
Com o diretório criado, podemos instalar o JUJU
sudo snap install juju --channel 3.5
Adicionando uma cloud
O JUJU precisa de uma cloud para que ele possa lançar seus serviços. Entenda como cloud qualquer substrato que o JUJU possa lançar VMs.
Em nosso caso vamos usar uma cloud hibrida de MAAS e LXD. Para lançá-la, precisamos criar um arquivo de configuração com as informações da cloud
nano juju-cloud.yaml
Nosso arquivo ficará dessa maneira
clouds:
maas-nimbus:
type: maas
auth-types: [oauth1]
endpoint: http://{Endereço do Controller Central}:5240/MAAS
Agora adicione a nuvem ao JUJU
juju add-cloud --client -f juju-cloud.yaml maas-nimbus
Adicionando a cloud, vamos adicionar as credenciais desta cloud.
Primeiramente, precisamos pegar a chave de autenticação do MAAS
- Na web UI do MAAS, selecione o seu perfil na aba latera (em cima de
Log out
) e vá para a abaAPI keys
- Clique no ícone de salvar, ela estará na sua área de transferência agora
Com a chave em mãos, podemos criar nosso arquivo
nano juju-cloud-credentials.yaml
Nosso arquivo de configurações deve ficar assim
credentials:
maas-nimbus:
anyuser:
auth-type: oauth1
maas-oauth: I
Cole a chave que você copiou em I
Adicione as credencias ao JUJU
juju add-credential --client -f juju-cloud-credentials.yaml maas-nimbus
Realizando o bootstrap do Juju:
Agora sim podemos fazer o bootstrap.
Por se tratar de um processo demorado, é útil que usamos o comando
tmux
, para que o comando continue rodando mesmo que a nossa conexão ssh caia.
Para sair dotmux
, façactrl + b
e depoisd
juju bootstrap --bootstrap-series=jammy --constraints tags=juju maas-nimbus maas-controller-cirrus
As constraints filtram os nós do MAAS, neste caso buscando somente máquinas com a tag juju
bootstrap-series define a release serie do sistema operacional que vai ser instalado
Adicionando um model
Por último, precisamos adicionar o model do openstack. Para o JUJU, model é como um projeto que isola aplicações implantadas em models diferentes.
juju add-model --config default-series=jammy openstack
Adicionando um space
O juju sempre usa a primeira interface encontrada para fazer boot pxe e para os serviços se comunicarem. No caso das VMs criada no Controllers só há uma interface e os serviços se comunicam corretamente, mas nos computes existem várias interfaces que fazem com que o juju se confunda no deploy.
juju add-space cirrus {Bridge do Openstack}/24