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:
- Realizar a leitura sobre o MaaS. [https://maas.io/].
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:
- MacAddress que voce anotou (Se nao anotou, desmonta os cabos e faz tudo de novo!!!)
- A senha é = CloudComp6s!
- 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.
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/14/main/postgresql.conf
- Remova o comentário e substitua a string da linha para aceitar conexões remotas:
$ nano /etc/postgresql/14/main/pg_hba.conf
- Adicione a linha que libera qualquer máquina dentro da subnet do kit:
- 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