Entenda o que é OpenStack! Saiba instalar o DevStack no Linux!

Entenda o que é OpenStack! Saiba instalar o DevStack no Linux!

Neste artigo mostraremos uma visão geral sobre OpenStack, da história dessa plataforma de computação em nuvem, seus principais componentes, da comunidade e ferramentas de teste. Posteriormente teremos mais artigos técnicos relacionados ao OpenStack.

Visão geral sobre Openstack

001 - Visão geral sobre Openstack
Arquitetura básica do OpenStack

1. História do OpenStack

Ao mesmo tempo, a Anso Labs (contratante da NASA) publicou o código beta de um “controlador de malha de computação em nuvem” baseado em Python, que também é conhecido como “Nova”, onde atualmente é um dos principais componentes do OpenStack. Ambos os esforços convergiram e formaram a base para o OpenStack, que foi oficialmente anunciado em 21 de julho de 2010.

A missão do OpenStack é produzir uma plataforma de computação em nuvem Open Source onipresente que seja fácil de usar, simples de implementar, interoperável entre implementações, funcione bem em todas as escalas e atenda às necessidades de usuários e operadores de nuvens públicas e privadas.

Para promover o desenvolvimento global da ferramenta OpenStack, em setembro de 2012 foi criada a Fundação OpenStack (The OpenStack Foundation). O objetivo da Fundação OpenStack é oferecer aos desenvolvedores, usuários e todo o ecossistema de infraestrutura aberta, fornecendo um conjunto de recursos compartilhados para construir a comunidade, facilitar a colaboração, assim como suportar a integração de tecnologias de código aberto.

2. Conceitos do OpenStack

Computação em nuvem possui várias definições pela Internet. O grupo Gartner define computação em nuvem como um estilo de computação em que recursos relacionados a TI massivamente escalonáveis são fornecidos “como um serviço” usando tecnologias da Internet para vários clientes externos.  Já a Amazon define computação em nuvem como a entrega sob demanda de poder computacional, armazenamento de banco de dados, aplicações e outros recursos de TI por meio de uma plataforma de serviços de nuvem via Internet com uma definição de preço conforme o uso.

Em relação ao OpenStack, como o próprio nome diz, ele é Open (de código aberto) + Stack (pilha), em outras palavras, é uma ferramenta de código aberto que funciona com um conjunto de funcionalidades (pilhas) que você pode adicionar na sua solução OpenStack conforme necessidade da sua nuvem computacional. Podemos dizer por analogia que quanto mais pilhas temos no seu OpenStack, mais “energia” teremos na solução. Abaixo temos um mapa com algumas funcionalidades do OpenStack:

002 - Visão geral sobre Openstack

3. Principais componentes do OpenStack

Atualmente existem centenas de funcionalidades, também conhecidos como serviços ou projetos no OpenStack. Os componentes básicos para o funcionamento mínimo são:

3.1 Nova

003 - Visão geral sobre Openstack

É o gerenciador da infraestrutura computacional de uma nuvem OpenStack. Todas as atividades necessárias para manter o ciclo de vida das instâncias de uma nuvem OpenStack são controlados pelo Nova. Portanto gerencia todas as necessidades de recursos computacionais, rede, autorização e escalabilidade da nuvem. O Nova é uma plataforma de gerenciamento, mas não possui nenhuma capacidade de virtualização em si mesmo. O Nova executa um conjunto de daemons sobre os servidores Linux existentes para fornecer este serviço.

3.2 Neutron

004 - Visão geral sobre Openstack

Neutron é um projeto do OpenStack que fornece conectividade de rede como um serviço. Dessa forma permite aos usuários configurar e definir conectividade e endereçamento de rede na nuvem. O Neutron lida com a criação e o gerenciamento de uma infraestrutura de rede virtual, incluindo redes, switches, sub-redes e roteadores para dispositivos gerenciados pelo serviço Nova. Serviços avançados, como firewalls ou rede privada virtual (VPN) também podem ser usados.

 

3.3 Cinder

005 - Visão geral sobre Openstack

Cinder é um projeto que fornece armazenamento em bloco como um serviço. Em outras palavras, é o responsável por entregar discos rígidos aos sistemas administrados pelo Nova. Ele virtualiza o gerenciamento de dispositivos de armazenamento em bloco e fornece aos usuários finais uma API de autoatendimento para solicitar e consumir esses recursos sem exigir conhecimento de onde o armazenamento deles está realmente implantado ou em que tipo de dispositivo.

 

3.4 Glance

006 - Visão geral sobre Openstack

Glance é o responsável pelo repositório e gerenciamento de imagens de máquinas virtuais. Os serviços de imagem incluem a descoberta, registro e recuperação de imagens de máquinas virtuais. O Glance tem uma API que permite a consulta de metadados de imagem da máquina virtual, bem como a recuperação da imagem real. Imagens de máquinas virtuais disponibilizadas através do Glance podem ser armazenadas em uma variedade de locais, desde sistemas de arquivos simples até sistemas de armazenamento de objetos.

3.5 Keystone

007 - Visão geral sobre Openstack

Keystone é um serviço que fornece autenticação de usuários e autorização de acessos ao ambiente do OpenStack. Este serviço é utilizado por todos os outros componentes do OpenStack para autorização, acessos e permissões. O serviço suporta várias formas de autenticação, incluindo credenciais de nome de usuário e senha e sistemas baseados em token. O serviço de autenticação utiliza os conceitos de usuário, inquilinos (tenants) e funções (roles). Inquilinos também são conhecidos como grupos de usuários, projeto ou organização.

3.6 Horizon

008 - Visão geral sobre Openstack

Horizon é o painel de controle (dashboard) do OpenStack. Fornece uma interface para o usuário baseada na Web e disponibiliza acessos a todos os serviços instalados (Nova, Neutron, Cinder, Keystone, Glance, etc). Abaixo um exemplo do Horizon.

009 - Visão geral sobre Openstack new
OpenStack Horizon (Dashboard)

4. A Comunidade OpenStack

A comunidade OpenStack atualmente é uma das mais ativas e uma das mais organizadas que já conheci. Inclusive o Brasil é a 6ª maior comunidade sobre OpenStack no mundo. No final de Julho/2018 tive a oportunidade de participar do OpenStack Upstream Training promovido pelo OpenStack Days SP. O treinamento mostra como a comunidade OpenStack funciona, desde a sua organização até o processo completo de desenvolvimento.

010 - Visão geral sobre Openstack new

O conteúdo do curso pode ser acessado aqui. O que mais me impressionou no curso não foi só a parte técnica relacionada ao OpenStack, mas também todas as ferramentas de colaboração que a comunidade utiliza para trabalhar em equipe, como por exemplo a própria página do OpenStack Foundation, o IRC, Git e Gerrit.

O OpenStack é desenvolvido e lançado em ciclos de 6 meses. Cada versão do OpenStack é batizado com um nome e atualmente estamos na versão Queens. Como o OpenStack é um conjunto de projetos (Nova, Neutron, Cinder, etc) e cada projeto possui um time de desenvolvedores, é necessário um controle das fases de desenvolvimento das versões, chamadas de fases de manutenção.

5. Ferramenta de testes – DevStack

DevStack é uma ferramenta de testes e desenvolvimento do OpenStack. É um conjunto de scripts que configura todo um ambiente básico do OpenStack em uma máquina local, sempre na última versão em desenvolvimento. Portanto esta ferramenta é interessante para desenvolvimento de novos projetos e para aprendizado. Lembrando que por ser uma ferramenta de testes NÃO UTILIZE o DevStack em um ambiente de produção! O DevStack carrega as informações em memória, portanto na próxima reinicialização da máquina, todas as informações serão perdidas.

Abaixo demonstramos um passo a passo para a utilização do DevStack:

5.1 Requisitos mínimos do DevStack

É possível utilizar em qualquer distribuição Linux, por exemplo Debian, Red Hat, Fedora, CentOS. Entretanto a versão mais utilizada e testada com o DevStack é o Ubuntu LTS. Inclusive nesta demonstração utilizaremos esta distribuição.

Por ser um ambiente de testes, recomendamos a instalação desse ambiente em uma máquina virtual com o hypervisor de sua preferência, como por exemplo VirtualBox ou KVM.

Em relação aos recursos, recomendo que esta máquina virtual tenha pelo menos 10 GB de disco livre, pelo menos 2 VCPU’s e pelo menos 4 GB de memória RAM. Lembrando que com estes valores você só conseguirá levantar o ambiente básico do OpenStack, caso contrário será necessário mais recursos para operá-lo, como por exemplo criar máquinas virtuais.

A máquina virtual deve ter uma placa de rede em modo Brigde, com o modo promíscuo habilitado e com acesso a Internet. Abaixo um exemplo no Oracle VM VirtualBox:

Deixe o sistema operacional o mais atualizado possível, no caso do Ubuntu LTS execute o comando abaixo para a atualização:

Terminal
sudo apt update
sudo apt dist-upgrade -y

5.2 Criar o usuário stack

Adicione o usuário stack com o comando abaixo:

Terminal
sudo useradd -s /bin/bash -d /opt/stack -m stack

Em seguida libere os privilégios de sudoers para o usuário stack:

Terminal
echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack

Vire o usuário stack:

Terminal
sudo su - stack

5.3 Download do DevStack

Com o usuário stack, faça o download do projeto no git da OpenStack e em seguida entre no diretório baixado:

Terminal
git clone https://opendev.org/openstack/devstack.git
cd devstack

Nota do autor: Por ser uma ferramenta em constante desenvolvimento, este link pode estar indisponível algumas vezes por questões de atualização.

5.4 Criar o arquivo local.conf

Crie o arquivo local.conf  dentro do diretório /opt/stack/devstack/ com o conteúdo abaixo:

Terminal
[[local|localrc]]
ADMIN_PASSWORD=secret
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD

Na variável ADMIN_PASSWORD é definido a senha das ferramentas do DevStack.

5.5 Iniciar a instalação do DevStack

Para inicializar a instalação, basta executar o script stack.sh localizado em /opt/stack/devstack/stack.sh.

Terminal
./stack.sh

A instalação pode levar de 10 a 20 minutos, dependendo do poder de processamento da sua máquina virtual e da velocidade de conexão com a Internet.

Nota do autor: Por experiência própria, algumas vezes é necessário rodar o ./stack.sh mais de uma vez. Isso é necessário por causa de erros de dependências de pacotes e também por não conseguir acessar determinado endereço na Internet.

5.6 Acessar o OpenStack (Horizon)

Por fim, após a instalação com sucesso acesse a página do OpenStack via browser no endereço em http://localhost/dashboard (acesso local) ou http://IP_da_VM/dashboard (via browser externo). O usuário a ser informado é o admin e a senha é aquela definida no arquivo local.conf (ver passo 6.4).

013 - Visão geral sobre Openstack

Em conclusão, esperamos que este artigo tenha dado uma visão geral do OpenStack, das suas principais funcionalidades, projetos, ciclos de vida, da importância de sua comunidade e a possibilidade de montar um ambiente de testes de maneira fácil e rápida com o DevStack.

Futuramente teremos mais artigos sobre o OpenStack aqui no SempreUpdate. Até breve!