Mateus Müller

Mateus is the guy behind the scenes.

17 Apr 2020

OPENSTACK: Como instalar DevStack com Vagrant para homelab

Neste artigo eu vou te mostrar como montei o meu homelab de OpenStack usando o DevStack com Vagrant. Sem mais delongas, vamos para a parte prática!

Pré-requisitos

  • VirtualBox precisa estar instalado
  • Vagrant precisa estar instalado
  • Pelo menos 8GB de RAM, 2 CPU cores e 60GB de disco
  • O plugin vagrant-disksize precisa estar instalado

Ah, também é importante lembrar que os seguintes serviços serão instalados:

  • keystone, glance, nova, placement, cinder, neutron, e horizon
  • Além disso, adicionei o swift, heat e magnum

Preparando o ambiente

Vamos criar um diretório para colocar o nosso projeto.

$ mkdir devstack-homelab
$ cd devstack-homelab/

Dentro do diretório, crie um arquivo chamado initial-devstack-setup.sh e coloque o seguinte conteúdo dentro:

#!/bin/bash

sudo apt update
sudo apt upgrade -y
sudo apt dist-upgrade -y
sudo useradd -s /bin/bash -d /opt/stack -m stack
sudo echo "stack ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/stack
sudo git clone https://opendev.org/openstack/devstack /opt/stack/devstack
sudo echo '[[local|localrc]]
ADMIN_PASSWORD=admin
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
HOST_IP=
FLAT_INTERFACE=enp0s8
FLOATING_RANGE=192.168.0.224/27
FIXED_RANGE=10.11.12.0/24
FIXED_NETWORK_SIZE=256
SWIFT_REPLICAS=1


enable_service s-proxy s-object s-container s-account
enable_plugin heat https://opendev.org/openstack/heat
enable_plugin heat-dashboard https://opendev.org/openstack/heat-dashboard
enable_plugin magnum https://opendev.org/openstack/magnum
enable_plugin magnum-ui https://opendev.org/openstack/magnum-ui' > /opt/stack/devstack/local.conf
sudo chown stack:stack -R /opt/stack

Não esqueça de alterar o “FLOATING_RANGE” para o endereço CIDR da sua rede de casa.

Dê permissão de execução:

$ chmod +x initial-devstack-setup.sh

Não esqueça de alterar os seguintes parâmetros também:

  • ADMIN_PASSWORD - Defina uma senha que será usada para logar na interface gráfica depois.
  • HOST_IP - Esse você precisa alterar depois que a VM subir para o endereço IP da sua rede de casa.

Agora vamos criar o Vagrantfile para subir a VM. Adicione o seguinte conteúdo:

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/bionic64"
  config.disksize.size = "70GB"
  config.vm.hostname = "openstack-controller"
  config.vm.network "public_network", bridge: "enp8s0"
  config.vm.provider "virtualbox" do |v|
    v.memory = 10240
    v.cpus = 10
    v.name = "openstack-controller"
  end
  config.vm.provision "shell", path: "initial-devstack-setup.sh"
end

Não esqueça de alterar o seguinte:

  • enp8s0 - Mude para a interface de rede do seu equipamento host.
  • v.memory - Defina o quanto de memória será usada. Neste caso, 10GB. O mínimo é 8GB.
  • v.cpus - Quantas vCPUs serão alocadas, neste caso são 10 cores.

Execução

Dentro da pasta, basta rodar o seguinte comando:

$ vagrant up

Assim que finalizar a execução, acesse remotamente:

$ vagrant ssh

Vire root e logue com o usuário stack que foi criado.

$ sudo su
$ su - stack

Acesse o diretório do devstack e modifique o local.conf. Mas antes disso, veja qual a sua interface de rede.

$ ip a

Essa foi a saída do meu “ip a”:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 02:cf:14:98:e9:22 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3
       valid_lft 82630sec preferred_lft 82630sec
    inet6 fe80::cf:14ff:fe98:e922/64 scope link 
       valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:b0:1c:d5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.134/24 brd 192.168.0.255 scope global dynamic enp0s8
       valid_lft 82631sec preferred_lft 82631sec
    inet6 fe80::a00:27ff:feb0:1cd5/64 scope link 
       valid_lft forever preferred_lft forever

Com o Vagrant, você sempre terá duas interfaces. Uma com o IP 10.0.2.15 usada como NAT para o comando “vagrant ssh”. A segunda rede é a que está em bridge e pegando IP do roteador 192.168.0.134. Este é o endereço IP que você deve adicionar lá.

$ vim local.conf

Altere essa linha:

HOST_IP=192.168.0.134

Depois, basta iniciar a execução e ser feliz.

$ ./stack.sh

Após a finalização, você deve usar o endereço da placa de rede bridge para chegar no dashboard do horizon.

Uma dica que eu gostaria de dar é: Não desligue essa VM.

Eu enfrentei alguns problemas depois de reiniciar e não consegui resolver. Desta forma, sugiro suspender a máquina se não for mais usar.

$ vagrant suspend

Aí você pode desligar seu equipamento e no outro dia rodar um:

$ vagrant resume

E vai tudo funcionar de novo! :)

Até a próxima!

comments powered by Disqus