Skip to content

Bare Metal

Objetivos:

  • Entender os conceitos básicos sobre uma plataforma de gerenciamento de hardware.
  • Introduzir conceitos básicos sobre redes de computadores.

Pré-requisitos:

Info

DIVISÃO DO ROTEIRO

O Roteiro é dividido em 2 partes principais.

  • Criando a Infraestrutura (Nuvem Bare-metal)
  • Usando a infraestrutura: Django em Nuvem Bare-Metal

Material

O grupo irá contar com os seguintes itens no kit:

  • 1 NUC (main) com 10Gb e 1 SSD (120Gb)
  • 1 NUC (server1) com 12Gb e 1 SSD (120Gb)
  • 1 NUC (server2) com 16Gb e 2 SSD (120Gb+120Gb)
  • 3 NUCs (server3, server4 e server5) com 32Gb e 2 SSD (120Gb+120Gb)
  • 1 Switch DLink DSG-1210-28 de 24 portas
  • 1 Roteador TP-Link TL-R470T+

Rede

Atencao as modificacoes necessárias apresentadas nos requisitos de projeto citados abaixo, modifique o que for necessário.

Cada grupo tem a disposição um ponto de rede (cabo preto) com saída para a rede interna da faculdade.

Tarefa: Confirme se as conexões de rede feitas anteriormente estão corretas. Utilize o diagrama fornecido no roteiro de cabeamento e as informacoes acima.

Cada kit possui um IP de entrada, verifique no dashboard do roteador.

Senhas - IMPORTANTE

Todas as senhas do seu sistema devem seguir o seguinte critério:

  • utilizar a palavra 'cloud' + a letra do kit minúscula.
  • Por exemplo: 'cloudz' é a senha padrão do kit Z.
  • Usar a mesma senha para todos os serviços que exigem cadastramento
  • NÃO alterar nenhuma senha que já esteja pré-cadastrada.

Criando a Infraestrutura (Nuvem Bare-metal)

  • Consulte o diagrama abaixo "H1 - Diagrama" as setas laranjas representam a "Bridge" que será implantado nos próximos passos.

Instalando o Ubuntu

Procure tutoriais de como instalar o Sistema Operacional Ubuntu server, utilize um pen drive para baixar a imagem e criar um pendrive para boot da instalacao.

  • Instale o Ubuntu Server 22.04 LTS na NUC main:
    • hostname: main
    • login: cloud
    • senha: (cloud + letra do kit)
    • IP fixo: 172.16.0.3
    • Server name: 172.20.129.131

Instalando o MaaS

  • Verifique se consegue pingar '8.8.8.8'. Se não conseguir, descubra como rotear os pacotes corretamente.
  • Verifique se consegue pingar 'www.google.com'. Se não conseguir, descubra como resolver as urls corretamente.
  • $ sudo apt update && sudo apt upgrade -y

  • $ sudo snap install maas --channel=3.3/stable

  • $ sudo snap install maas-test-db

Acessando sua maquina remotamente.

Faça o acesso utilizando SSH

Dentro da rede Local

ssh cloud@172.16.0.3

Configurando o MaaS

  • Inicializando o MaaS:
    • $ sudo maas init region+rack --maas-url http://172.16.0.3:5240/MAAS --database-uri maas-test-db:///
    • $ sudo maas createadmin
    • use o login cloud
    • use a senha padrão da disciplina
    • deixe a chave vazia
  • Gerando um par de chaves para autenticação.
    • $ ssh-keygen -t rsa
    • use senha vazia dessa vez
    • $ cat ./.ssh/id_rsa.pub
    • copie a chave gerada
  • Agora vamos acessar o Dashboard do MaaS:
    • ele estará disponível em http://172.16.0.3:5240/MAAS.
    • Entenda onde o serviço esta rodando e faça o login
    • configure um DNS Forwarder com o DNS do Insper (DNS Externo que o seu roteador enxerga).
    • Importe as imagens do Ubuntu 22.04LTS, Ubuntu 20.04 LTS e Ubuntu 18.04 LTS.
    • Faça o upload da chave copiada no terminal SSH.
    • Em Settings | General:
    • Global Kernel Parameters: net.ifnames=0 (sem espaços)

Chaveando o DHCP

  • Explore as configurações do MaaS. Habilite o DHCP na subrede pelo MaaS Controller.
    • ALTERE o Reserved Range para iniciar em 172.16.11.1 e acabar em 172.16.14.255.
  • Deixe o DNS da subnet apontando para o DNS do Insper!
  • Desabilitar o DHCP no roteador.

Checando a saúde do MAAS

Confirme a saúde do sistema MAAS visitando a página Controladores na interface web (dashboard). Selecione o nome do controlador e certifique-se de que a página resultante mostre uma marca de seleção verde ao lado dos itens 'regiond' até 'dhcpd':

Comissionando servidores

Cadastre os hosts (machines) disponíveis. Server1 ate Server5

  • Altere a opção Power Type para Intel AMT e preencha segundo as informacoes abaixo:
    1. MacAddress que voce anotou (Se nao anotou, desmonta os cabos e faz tudo de novo!!!)
    2. A senha é = CloudComp6s!
    3. IP do AMT = 172.16.15.X (sendo X o id do server, por exemplo server1 = 172.16.15.1)
  • As NUCs irão comissionar automaticamente, realizando o boot via PXE na rede.
  • hora do Chá, só aliviar o estômago um pouco. Chá também tem cafeína.
  • Todos os nós devem aparecer com o status Ready. Verificar se as características de hardware (cpu, memória, SSD e rede) foram detectados com sucesso.
  • Adicionar o Roteador como devices no Dashboard do MaaS

Criando OVS bridge (ATENÇÃO!!!)

Uma Open vSwitch (OVS) bridge reduz a necessidade de duas interfaces de rede físicas.

As pontes OVS são criadas na aba Rede na página de configuração de um nó. Aqui, vamos criar uma ponte a partir da interface regular 'enp1s0':

O nome da ponte será referenciado em outras partes dos roteiros. Chame-a de ‘br-ex’.

Múltiplas VLANs podem ser adicionadas à ponte, mas neste exemplo de nuvem, uma única VLAN não etiquetada é usada.

Configure todos os cinco nós de nuvem desta maneira para garantir que o OVN Chassis possa ser acomodado por qualquer nó.

Fazendo Acesso Remoto ao seu KIT

De acordo com as aulas teóricas, vamos realizar um NAT para permitir o acesso externo "Rede Wi-fi Insper" do seu computador ao servidor MAIN.

A meta é conseguir conectar no servidor principal "main" utilizando a porta 22.

Libere tambem o acesso ao gerenciamento remoto do seu roteador criando uma regra de gestão para a rede 0.0.0.0/0

Se não lembrar das aulas teóricas, pesquise por como fazer NAT no Roteador do seu KIT.

LINK-documentacao

Usando a infraestrutura:

Django em Nuvem Bare-Metal

Primeiro Deploy

Vamos realizar um deploy manual de uma aplicação simples em Django em nossa nuvem MaaS.

Antes de começar, realize um pequeno ajuste no DNS server:

  • Dentro da aba Subnets, clicar na subnet 172.16.0.0/20 e editar a Subnet summary colocando o DNS do Insper - 172.20.129.131

Primeira parte: Banco de Dados

Postgres é um servidor de banco de dados versátil e de fácil manejo. Muito usado em projetos Opensource.

  • Acesse o Dashboard do MaaS e realize o deploy do Ubuntu 22.04 no server1.
  • Acesse o terminal do server1 via SSH:
  • $ sudo apt update
  • $ sudo apt install postgresql postgresql-contrib -y
  • Ainda no terminal do server1, crie agora um usuário para a aplicação:
  • $ sudo su - postgres
  • $ createuser -s cloud -W
  • Usar a senha: cloud
  • Crie um database para a aplicação:
  • $ createdb -O cloud tasks
  • Exponha o serviço para acesso:
  • $ nano /etc/postgresql/12/main/postgresql.conf
  • Remova o comentário e substitua a string da linha para aceitar conexões remotas:
      listen_addresses = '*'
    
  • $ nano /etc/postgresql/12/main/pg_hba.conf
  • Adicione a linha que libera qualquer máquina dentro da subnet do kit:
      host    all             all             172.16.0.0/20          trust
    
  • Saia do usuário postgres
  • Libere o firewall:
  • $ sudo ufw allow 5432/tcp
  • Reinicie o serviço:
  • $ sudo systemctl restart postgresql

🤖 Será que é possível automatizar esse processo ❓

Parte II: Aplicação Django

De volta ao maas, vamos subir uma aplicação ORM Django pré produzida. No lugar de [login], utilize o usuário criado para administrar o MaaS.

  • Peça uma máquina direto do cli no terminal agora:
  • $ maas login [login] http://172.16.0.3:5240/MAAS/
  • Buscar o token no dashboard dentro das configurações do usuário.
  • Solicite a reserva da máquina para o MaaS:
  • $ maas [login] machines allocate name=server2
  • Anote o campo system_id do json resultante.
  • Realize o deploy via linha de comando, usando o cli:
  • $ maas [login] machine deploy [system_id]
  • Café ☕ ... Aguarde a máquina finalizar e entre via ssh nela.
  • No SSH do server2:
  • $ git clone https://github.com/raulikeda/tasks.git
  • Entre no diretorio tasks.
  • $ ./install.sh
  • reboot e aguarde
  • Teste acessando o serviço na porta 8080 no terminal do maas:
  • $ wget http://[IP server2]:8080/admin/

Para acessar o serviço no seu browser seria necessário fazer um NAT no roteador. Porém podemos considerar esse serviço como sendo temporário e podemos usar uma outra forma de expor o serviço para fora do kit usando SSH tunnel:

  • Desconecte do SSH do maas
  • Reconecte novamente usando:
  • $ ssh cloud@10.103.0.X -L 8001:[IP server2]:8080
  • O comando acima irá criar um tunel do serviço do server2 na porta 8080 para o seu localhost na porta 8001 usando a conexão SSH.
  • Note que é importante que a porta 8001 não esteja sendo usada no seu computado.
  • Acesse então o endereço no browser: http://localhost:8001/admin/
  • Login Django: cloud
  • Senha Django: cloud

Tome um tempo olhando o conteúdo do arquivo install.sh. Ele automatiza as tarefas de instalação usando shell script.

Note que a utilização do maas-cli no terminal substitui a utilização do dashboard. Tome um tempo explorando:

  • $ maas [login] help commands

Caso tenha interesse na aplicação django: https://docs.djangoproject.com/pt-br/3.1/intro/tutorial01/

Exercise

CheckPoint-1

De um print das Telas abaixo:

1. Do Dashboard do **MAAS** com as máquinas.
1. Da aba images, com as imagens sincronizadas.
1. Da Aba de cada maquina(5x) mostrando os testes de hardware e commissioning com Status "OK"

Finalizando

Entre no Site e responda as questoes da plataforma PrairieLearn, você deve fazer no minimo de 70 pontos, para poder seguir para o Roteiro 2.

LINK da plataforma de questões

Acessar com seu usuário de login do INSPER. e-mail institucional

As imagens abaixo são da plataforma.

  • Clicar em Enroll Course
  • Procurar o Curso -> NCCC 101: Network concepts for cloud construction
  • Se cadastrar.
  • Responder as questões

Conclusão: SOMENTE PARA PENSAR

 Descreva como o MaaS poderia ser utilizado em um datacenter real (com muitos servidores) e como seria um processo alternativo sem essa ferramenta. Ainda, é possível e *SIMPLES* realizar a implantação de uma aplicação usando o MaaS?