Realizando deploy do OpenStack
Realizando deploy do OpenStack automático
Criando a VM para o Juju
O JUJU precisa de uma máquina para criar os volumes das máquinas do OpenStack. 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: cinder-machine (ou outro nome que indique que é VM do Cinder)
- Cores: 4 (mínimo)
- RAM: 6144 (mínimo)
Agora em
Storage configuration
- Selecione a pool de disco criada para o cinder e o tamanho disponível na partição com aquela pool.
Para adicionar a VM, clique em
Compose Machine
. Aguarde um momento até que o LXD crie a sua VM e ela estará pronta.
Configurando os computes
Antes de tudo, é necessário ter certeza de quais serviços o JUJU vai instalar nos computes. Em nosso deploy, só instalaremos os charms "nova-compute" e "ovn-chassis" nos computes físicos. Para impedir que o JUJU instale qualquer outro serviço nelas, precisamos alocar as máquinas para impedir que ela faça deploy nos computes
- No dashboard do MAAS, vá para a aba de
Machines
e selecione nossos dois computes - No botão
Actions
, clique emAllocate
Uma das principais qualidades deste deploy é justamente que o JUJU não diferencia computes físicos de VMs do LXD. Entretanto, em nosso caso isso acaba sendo um problema
Baixando o bundle
Com nosso JUJU funcionando, agora podemos fazer deploy do OpenStack! Para simplificar as coisas, fizemos um bundle que contém informações sobre VMs, charms e relações que as aplicações do OpenStack precisam para funcionar.
- Baixe ou clone o repositório do projeto para o seu computador (vamos ver como vamos fazer isso ainda)
- Passe as pasta de deploy para o controller
Realizando os deploys
Bundle principal
Com o bundle baixado, basta rodar
juju deploy ./bundle.yaml
Para acompanhar o status do deploy
watch -c 'juju status --color'
watch -c 'juju machines --color'
Realizando deploy do OpenStack manualmente
Bundle do cinder
Ao terminar deploy do bundle realizar deploy do cinder. Para ele, precisamos de uma máquina especial
- No MAAS, vá na aba
LXD
, clique em nosso host do lxd e por fimAdd VM
- Coloque as seguintes configurações
VM-name
: cinder-vmCores
: 4RAM
: 4096MBDisk
: 20GB (esse será para boot)Disk
(clique emAdd disk
para adicionar o segundo): 512 GB Adicione-a emCompose machine
e espere o MAAS realizar o comissinion.
Agora, pode-se verificar essa máquina no JUJU rodando
juju machines
Espere um tempo, se o JUJU não reconhecer elas no juju machines
, faça o seguinte processo:
- Crie uma chave ssh no controller
ssh-keygen
- Clique
Enter
para deixar todas as opções default, não precisamos delas - Pegue o path que a chave foi criada. Isso é mostrado durante a geração da chave
- Copie sua chave pública. Por exemplo, se nossa chave foi criada em
/home/ubuntu/.ssh/id_rsa
, vamos rodar o seguinte comando
cat /home/ubuntu/.ssh/id_rsa.pub
- No dasboard, vá na aba de se usuário, depois em
SSH Keys
e clique emImport SSH key
- Na caixa de seleção, selecione
upload
, cole a chave que você copiou no campoPublic key
e clique emImport SSH key
A partir de agora, qualquer máquina que sofrer deploy do MAAS terá sua chave, permitindo que você faça ssh nelas
Agora, vamos fazer um deploy manual dos computes
- Em
Machines
, selecione o cinder-vm, clique emActions
e depois emDeploy
Se a máquina não estiverem como
Ready
, clique emRelease
e repita o processo
- Selecione a versão 22.04 do ubuntu em
Release
e clique emStart deployment
e aguarde.
Após a máquina terminar o deploy, verifique se você tem acesso a ela de seu controller. Pegue o IP dela (abaixo de seu nome) e tente dar ssh nela. Vamos supor que o IP dela é 10.42.128.0
ssh ubuntu@10.42.128.0
Agora, vamos adicioná-la ao JUJU.
juju add-machine ssh:ubuntu@{vm_ip}
Substitua vm_ip pelo IP da VM.
O output deste comando será o índice ela. Mas se caso você perder este output, rode o comando
juju machines
Verifique na coluna Inst id
qual possui cinder-vm
. Nesta máquina, você achará o índice dela na coluna Machine
Agora, faça o deploy, passando em I
o íncide da máquina que você encontrou
juju deploy --to I --channel 2023.2/stable --config ./OpenStackBundle/cinder.yaml cinder
Em seguida realizar deploy do cinder-lvm (backend para gerenciamento de volumes).
juju deploy --channel 2023.2/stable --config ./OpenStackBundles/cinder-lvm.yaml cinder-lvm
Agora precisamos realizar deploy da aplicação mysql-router, para juntar o cinder a base de dados
juju deploy --channel 8.0/stable mysql-router cinder-mysql-router
Por fim realize as integrações do cinder: mysql-router:
juju integrate cinder-mysql-router:db-router mysql-innodb-cluster:db-router
juju integrate cinder-mysql-router:shared-db cinder:shared-db
Cinder :
juju integrate cinder:cinder-volume-service nova-cloud-controller:cinder-volume-service
juju integrate cinder:identity-service keystone:identity-service
juju integrate cinder:amqp rabbitmq-server:amqp
juju integrate cinder:image-service glance:image-service
juju integrate cinder:certificates vault:certificates
Cinder-lvm:
juju integrate cinder-lvm:storage-backend cinder:storage-backend
Deploys nos computes
Feitos os deploys dos outros serviços, podemos fazer deploy das aplicações que vão diretamento nos computes.
Configurando os computes
Primeiramente, precisamos desalocar os computes no MAAS para que o JUJU possa usar
- No dashboard do MAAS, vá para a aba de
Machines
e selecione nossos dois computes - No botão
Actions
, clique emRelease
Agora espere alguns instântes. Se o JUJU não identificar o IP delas nojuju machines
, faça o mesmo que você fez com acinder-vm
, mas para ambos os computes.
Lançando as aplicações
Agora com nossos computes adicionados, vamos fazer o deploy neles. Para isso, precisamos saber seus índices no JUJU. Para isso rode
juju machines
Verifique o IP do computes e verifique qual é o índice deles. Com eles em mãos, rode o comando, substituindo I
pelo índice dos computes. Faça isso para ambos
juju deploy --to I --channel 2023.2/stable --config ./OpenStackBundles/nova-compute.yaml nova-compute
Ao terminar deploy do nova, realizar deploy do ovn-chassis.
O processo é exatamente o mesmo, basta rodar substituir I
pelo índice dos computes
juju deploy --channel 23.09/stable --config ./OpenStackBundles/ovn.yaml ovn-chassis
Por fim, vamos realizar as integrações dos serviços Nova
juju integrate ovn-chassis:nova-compute nova-compute:neutron-plugin
juju integrate rabbitmq-server:amqp nova-compute:amqp
juju integrate nova-cloud-controller:cloud-compute nova-compute:cloud-compute
juju integrate glance:image-service nova-compute:image-service
Ovn-chassis:
juju integrate ovn-chassis:ovsdb ovn-central:ovsdb
juju integrate ovn-chassis:certificates vault:certificates
Dessa maneira, temos todos nosso serviços rodando e prontos. Precisamos somente resolver questões da vault.