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
, ehorizon
- Além disso, adicionei o
swift
,heat
emagnum
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!