Code Monkey home page Code Monkey logo

arquitetura_aws's Introduction

arquitetura_aws

Este repositório contém a primeira atividade avaliativa do programa de estágio da Compass.UOL (PB 20/03/2023). Dentro da atividade proposta, o documento a seguir é o que compreende a parte prática do exercício, envolvendo conhecimentos em infraestrutura da Amazon Web Services (AWS) e Linux.

Tabela de conteúdos


Requisitos do exercício

Requisitos AWS:

  • Gerar uma chave pública para acesso ao ambiente;
  • Criar uma instância EC2 com sistema operacional Amazon Linux 2 (Família t3.small, 16 GB SSD);
  • Gerar um IP elástico e anexar à instância EC2;
  • Liberar as portas de comunicação para acesso público: 22/TCP, 111/TCP e UDP, 2049/TCP/UDP, 80/TCP, 443/TCP.

Requisitos no linux:

  • Configurar o NFS entregue;
  • Criar um diretório dentro do filesystem do NFS com seu nome;
  • Subir um apache no servidor - o apache deve estar online e rodando;
  • Criar um script que valide se o serviço está online e envie o resultado da validação para o seu diretório no nfs;
  • O script deve conter - Data HORA + nome do serviço + status + mensagem personalizada de ONLINE ou offline;
  • O script deve gerar 2 arquivos de saída: 1 para o serviço online e 1 para o serviço offline;
  • Preparar a execução automatizada do script a cada 5 minutos;
  • Fazer o versionamento da atividade;
  • Fazer a documentação explicando o processo de instalação do Linux.

Executando os requisitos do exercício

Gerando uma chave pública para acesso ao ambiente da AWS:

Este processo refere-se à geração de um usuário e grupo, configuração de suas políticas e criação de uma chave para acesso à conta.
  1. No console web da AWS, através do menu 'Serviços', no canto superior esquerdo, acesse o serviço de 'IAM' (Identity and Access Management). O termo 'IAM' também pode ser buscado através da barra de pesquisa, no topo da página.
  2. Na coluna esquerda, na seção 'Gerenciamento de acesso', clique em 'Grupos de usuários'.
  3. Clique em ‘Criar grupo’.
  4. Atribua um nome ao novo grupo e na seção ‘Associar políticas de permissões’ marque a opção ‘AdministratorAccess’. Clique em ‘Criar grupo’. Essa política concede acesso de administrador aos usuários que forem adicionados a esse grupo.
  5. Para criar um novo usuário e adicioná-lo ao grupo criado, clique em ‘Usuários’, na seção ‘Gerenciamento de acesso’ na coluna esquerda, ainda no serviço de IAM.
  6. Clique em ‘Adicionar usuários’.
  7. Adicione um nome para o usuário criado e clique em ‘Próximo’.
  8. Nas ‘Opções de permissões’, selecione ‘Adicionar usuário ao grupo’. Na seção ‘Grupos de usuários’, selecione o grupo criado anteriormente e clique em ‘Próximo’.
  9. Revise as configurações e clique em ‘Criar usuário’.
  10. Para gerar uma chave pessoal basta clicar em ‘Usuários’, na seção ‘Gerenciamento de acesso’ na coluna esquerda, ainda no serviço de IAM.
  11. Clique no nome do usuário criado anteriormente.
  12. Na página do usuário, abaixo da seção ‘Resumo’, clique na aba ‘Credenciais de segurança’. Em ‘Chaves de acesso’, clique em ‘Criar chave de acesso’.
  13. Marque a opção ‘Command Line Interface (CLI)’ e, no fim da página, ‘Compreendo a recomendação acima e quero prosseguir para criar uma chave de acesso’. Clique em ‘Próximo’.
  14. Defina uma etiqueta de descrição (opcional) e clique em ‘Criar chave de acesso’.
  15. Armazene a ‘Chave de acesso’ e a ‘Chave de acesso secreta’, ou baixe o arquivo ‘.csv’ e clique em ‘Concluído’.

Criando uma instância EC2 pela console web da AWS:

Este processo refere-se à criação de uma instância EC2 com o sistema operacional Amazon Linux 2 (família t3.small e 16 GB de armazenamento SSD).
  1. No console web da AWS, através do menu 'Serviços', no canto superior esquerdo, acesse o serviço de 'EC2'. O termo 'EC2' também pode ser buscado através da barra de pesquisa, no topo da página.
  2. Na coluna esquerda, na sessão 'Instâncias', clique em 'Instâncias'.
  3. Para criar uma nova instância, clique no botão 'Executar instâncias' no topo da página.
  4. Em 'Nome e tags', adicione um nome para a instância e tags (opcional).
  5. Na seleção das imagens da aplicação, selecione o grupo 'Amazon Linux', especificamente 'Amazon Linux 2 Kernel 5.10 AMI 2.0.20230504.1 x86_64 HVM gp2'. O ID dessa AMI (Amazon Image) deve ser: ami-06a0cd9728546d178.
  6. No 'Tipo de instância', selecione 't3.small'.
  7. Na sessão 'Par de chaves (login)', gere um novo par de chaves para acessar essa instância, ou selecione uma chave existente.
    Para gerar um novo par de chaves, clique no botão 'Criar novo par de chaves'. Atribua um nome, selecione o tipo, o formato do arquivo (.pem para OpenSSH e .ppk para uso com Putty) e uma tag (opcional). Após finalizar a operação, salve o arquivo baixado em local seguro.
  8. Na seção 'Configurações de rede', marque a opção 'Criar grupo de segurança', ou selecione um grupo já existente. Configurações específicas de rede para esse grupo serão feitas no requisito 'Liberando as portas de comunicação da instância EC2 para acesso público'.
  9. Na sessão 'Configurar armazenamento', selecione 16GB, tipo gp2 de volume raiz.
  10. Em 'Resumo', verifique as configurações selecionadas, certificando-se que o 'Número de instâncias' seja '1'. Clique no botão 'Executar instância'.

Criando uma instância EC2 pela AWS CLI:

De forma alternativa à seção 'Criando uma instância EC2 pela console web da AWS', o processo referenciado aqui compreende à geração da mesma instância, porém, através da interface de linha de comando (CLI) da AWS. Para atender esse requisito as seguintes etapas serão necessárias: configuração da CLI, geração de um usuário e grupo, configuração de suas políticas, criação de uma chave para acesso à conta e, por fim, execução da instância.
  1. Em um terminal linux, digite o comando sudo yum update para atualizar todos os pacotes do sistema.
  2. Baixe a CLI digitando curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip". Para mais informações sobre como fazer a instalação acesse a documentação da AWS CLI.
  3. Descompacte o arquivo baixado digitando unzip awscliv2.zip. Se o comando não funcionar, instale os pacotes correspondentes ao serviço unzip utilizando o comando sudo yum install unzip. Depois tente descompactar o arquivo novamente.
  4. Instale a CLI digitando o comando sudo ./aws/install.
  5. Após a instalação, certifique-se que o sistema consegue identificar o programa inserindo o comando aws --v. O retorno deve informar a versão de tudo o que foi instalado.
  6. Para efetuar o acesso aos serviços da AWS através da CLI, antes é necessário gerar uma chave pessoal, que deve, posteriormente, ser informada nas configurações da interface. Como é preciso que se faça a atribuição de políticas de acesso para que o usuário, através de sua chave pessoal, execute os serviço, recomenda-se criar um grupo, atribuir políticas a ele e incluir esse usuário ao grupo. Este processo está documentado na seção 'Gerando uma chave pública para acesso ao ambiente da AWS'.
  7. Para configurar a CLI, digite, em um terminal linux, aws configure, informando o ID e chave de acesso secreta vinculada à conta, o código da região que se pretende manipular os serviços e o formato do retorno dos dados (recomenda-se json).
  8. O processo de execução de uma instância pode ser feito através do comando aws ec2 run-instances --image-id ami-06a0cd9728546d178 --count 1 --instance-type t3.small --key-name nome_da_chave --block-device-mappings '[{"DeviceName":"/dev/xvda","Ebs":{"VolumeSize":16,"VolumeType":"gp2"}}]' --tag-specifications 'ResourceType=instance,Tags=[{Key="Name",Value="Nome da instância"}]'. O comando deve ser executado no diretório que contém o arquivo do par de chaves (nome_da_chave).
  9. Se o par de chaves ainda foi gerado, veja 'Seção extra: Gerando um par de chaves para acesso à instância e transferência para a máquina virtual'.

Gerando um IP elástico e anexando à instância EC2:

Este processo refere-se à geração de um IP elástico e sua associação à uma instância EC2, neste caso, realizado através do console web.
  1. No console web da AWS, através do menu 'Serviços', no canto superior esquerdo, acesse o serviço de 'EC2'. O termo 'EC2' também pode ser buscado através da barra de pesquisa, no topo da página.
  2. Na coluna esquerda, na sessão 'Redes e segurança', clique em 'IPs elásticos'.
  3. Clique no botão 'Alocar endereço IP elástico', marque a opção 'Conjunto de endereços IPv4 da Amazon' e clique em 'Alocar'. Pode ser necessário especificar o grupo de borda de rede que deve ser a mesma região onde foi criada a instância.
  4. Para associar o IP alocado à uma instância em execução selecione-o no painel de IPs, clique em 'Ações' e selecione a opção 'Associar endereço IP elástico'.
  5. Selecione 'Instância' no 'Tipo de recurso', escolha a instância que terá o IP associado e clique em 'Associar'.

Liberando as portas de comunicação da instância EC2 para acesso público:

Este processo refere-se à configuração de regras de entrada no grupo de segurança associado à instância, neste caso, realizado através do console web. As regras de segurança são: 22/TCP, 111/TCP e UDP, 2049/TCP/UDP, 80/TCP, 443/TCP.
  1. No console web da AWS, através do menu 'Serviços', no canto superior esquerdo, acesse o serviço de 'EC2'. O termo 'EC2' também pode ser buscado através da barra de pesquisa, no topo da página.
  2. Na coluna esquerda, na seção 'Rede e segurança', clique em 'Security groups'.
  3. Selecione o grupo de segurança criado anteriormente, clique no botão 'Ações' e 'Editar regras de entrada'.
  4. Clique em 'Adicionar regra' ao inserir os dados de cada linha da tabela abaixo.

    Tipo Intervalo de portas Tipo de origem
    TCP personalizado 22 Qualquer local-IPv4
    TCP personalizado 111 Qualquer local-IPv4
    UDP personalizado 111 Qualquer local-IPv4
    TCP personalizado 2049 Qualquer local-IPv4
    UDP personalizado 2049 Qualquer local-IPv4
    TCP personalizado 80 Qualquer local-IPv4
    TCP personalizado 443 Qualquer local-IPv4
  5. Após inseridas as 7 regras de entrada, clique em 'Salvar regras'.

Configurando um Network File System (NFS):

Este processo refere-se à criação de um NFS na instância EC2 executada anteriormente.
  1. No console web da AWS, através do menu 'Serviços', no canto superior esquerdo, acesse o serviço de 'EFS' (Elastic File System). O termo 'EFS' também pode ser buscado através da barra de pesquisa, no topo da página.
  2. Na coluna esquerda, clique em 'Sistemas de arquivos'. Depois, em ‘Criar sistema de arquivos’, no topo da página.
  3. Atribua um nome (opcional), selecione a Virtual Private Cloud (VPC) e clique em ‘Criar’.
  4. Nas informações do EFS criado, clique na aba ‘Rede’, logo abaixo da seção ‘Geral’. Clique em ‘Gerenciar’.
  5. Na seção ‘Destinos de montagem’, troque o grupo de segurança para o mesmo utilizado pela instância, para todas as zonas de disponibilidade listadas. Clique em ‘Salvar’.
  6. Ainda na página de informações do NFS criado, clique em ‘Anexar’.
  7. Com a opção ‘Montar via DNS’ selecionada, copie o comando que aparece na seção ‘Usando o cliente do NFS:’. Um exemplo desse comando é: sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport fs-0cf1d041dea5dc917.efs.us-east-1.amazonaws.com:/ efs.
  8. No terminal da instância, crie um diretório que vai ser montado para receber os arquivos compartilhados. Para isso, use o comando mkdir /home/ec2-user/nfs. Neste exemplo, o diretório a ser montado é nfs/ no caminho /home/ec2-user
  9. Execute o comando sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport fs-0cf1d041dea5dc917.efs.us-east-1.amazonaws.com:/ /home/ec2-user/nfs.
  10. Executando o comando df -h, deve-se ver o diretório montado corretamente. Aqui está um exemplo:

    Filesystem Size Used Avail Use% Mounted on
    fs-0cf1d041dea5dc917.efs.us-east-1.amazonaws.com:/ 8.0E 0 8.0E 0% /home/ec2-user/efs
  11. Para configurar a montagem automática do diretório quando a máquina é iniciada, execute o comando sudo vim /etc/fstab e adicione a linha fs-0cf1d041dea5dc917.efs.us-east-1.amazonaws.com:/ /home/ec2-user/nfs nfs4 nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport 0 0.
  12. Por fim, para criar um diretório com o seu nome dentro do NFS criado execute o comando sudo mkdir /home/ec2-user/nfs/seu_nome.

Criando um servidor Apache:

Este processo refere-se à instalação de um servidor Apache na instância EC2 criada anteriormente.
  1. No terminal Linux, execute o comando sudo yum update para atualizar os pacotes instalados no sistema.
  2. Instale os pacotes do Apache usando o comando sudo yum install httpd.
  3. Para iniciar o servidor digite sudo systemctl start httpd.
  4. Para verificar se o serviço está ativo utiliza-se o comando systemctl status httpd. O status deve estar ativo.
  5. Outra forma de verificar a disponibilidade do servidor é informando o endereço IP da instância na barra URL do navegador. Uma página de testes do Apache deve aparecer.
  6. Por último, para configurar a inicialização automática do serviço Apache com o sistema operacional, basta executar o comando sudo systemctl enable httpd.

Criando um script de verificação do status do serviço Apache:

Este processo refere-se à criação de um 'shell script' que tem a função de automatizar a verificação do status do serviço Apache gerado anteriormente.
  1. Para inserir o script na instância, execute o comando touch /home/ec2-user/apache_status.sh. Edite o arquivo criado digitando vim /home/ec2-user/apache_status.sh e cole o conteúdo do script presente neste repositório.
  2. O arquivo apache_status.sh, tem a função de verificar o status do serviço httpd(Apache) e armazenar mensagens de log no diretório /nfs.
  3. O script possui a funcionalidade de criar os arquivos de log, caso ainda não existam, e adicionar a mensagem "Data-hora (fuso horário de São Paulo) + APACHE + ONLINE + SERVIDOR WEB ATIVO.", caso o serviço esteja ativo, e "Data-hora (fuso horário de São Paulo) + APACHE + OFFLINE + SERVIDOR WEB INATIVO.", caso contrário.

Preparando a execução automatizada do script a cada 5 minutos:

Este processo refere-se à execução automatizada do apache_status.sh a cada 5 minutos.
  1. Execute o comando sudo crontab -e para abrir, em modo de edição, o arquivo que armazena os scripts de automatização do sistema.
  2. Clique na letra i para ativar a função de inserção e adicione o comando: */5 * * * * /bin/bash caminho_do_script.sh. Neste caso, o caminho do script é /home/ec2-user/apache_status.sh.
  3. Execute o comando sudo systemctl restart crond, para reiniciar o serviço de automatização. Agora o script apache_status.sh deve ser executado automaticamente a cada 5 minutos.

Instalando uma máquina virtual com sistema Linux:

Este processo refere-se à instalação da distribuição Oracle Linux 8.7 (sem interface gráfica), na Oracle VirtualBox 7.0, em uma máquina rodando o sistema operacional Windows 11.
  1. Baixe e siga o processo de instalação do host para Windows do Oracle VirtualBox 7.0.
  2. Baixe o arquivo ISO completo da distribuição Oracle Linux 8.7.
  3. No VirtualBox clique no ícone 'Novo'.
  4. Use o campo 'Nome' para nomear a máquina virtual, selecione a imagem ISO baixada e marque a opção 'Pular instalação desassistida' se for o único a utilizar a instância criada.
  5. Ao clicar em 'Próximo', selecione a quantidade de memória RAM e número de núcleos de processamento a serem utilizados. Recomenda-se, aproximadamente, 2MB e 1 núcleo de CPU.
  6. Ao clicar em 'Próximo', selecione a quantidade de armazenamento em disco a ser utilizado. Recomenda-se 'Criar um novo disco rígido agora' e selecionar a opção padrão '20GB'.
  7. Ao clicar em 'Próximo', revise as especificações realizadas e clique em 'Finalizar'.
  8. Para iniciar a máquina virtual criada, selecione-a na coluna a esquerda e clique no ícone 'Iniciar'.
  9. Na interface gráfica de instalação, deve-se atentar a algumas configurações importantes, como linguagem do teclado (br), seleção do software (server), rede (seleção da interface caso a máquina conecte-se a internet), definição de senha para o root e criação de um usuário comum do sistema.
  10. Depois de revisar as configurações, clique em 'Begin Installation'.
  11. Finalizado o processo de instalação, clique em 'Reboot System'.
  12. Por último, recomenda-se colocar a interface de rede da máquina virtual em modo bridge (ponte). Para isso, no gerenciador de virtualizações do VirtualBox (página inicial do programa), selecione a máquina que deseja alterar as configurações na coluna esquerda. Clique em 'Configurações', no topo da página. Na janela de configurações, selecine a seção 'Rede', na coluna esquerda. Na aba 'Adaptador 1', com a caixa de seleção 'Habilitar Placa de Rede' marcada, selecine 'Placa em modo Bridge', na seção 'Conectado a:'. Clique em 'Ok' para salvar a alteração. Agora, a máquina pode ser iniciada com a nova configuração.

Seção extra: Gerando um par de chaves para acesso à instância e transferência para a máquina virtual:

Este processo refere-se à geração de um par de chaves no serviço EC2 e transferência do arquivo para a máquina virtual com linux.
  1. No console web da AWS, através do menu 'Serviços', no canto superior esquerdo, acesse o serviço de 'EC2' (Elastic Compute Cloud). O termo 'EC2' também pode ser buscado através da barra de pesquisa, no topo da página.
  2. Na coluna esquerda, na sessão 'Redes e segurança', clique em 'Pares de chaves'.
  3. Para criar um par de chaves, clique no botão ('Criar par de chaves') no canto superior direito da página.
  4. Atribua um nome, selecione o tipo de par de chaves, o formato do arquivo (.pem para OpenSSH e .ppk para uso com Putty) e uma tag (opcional).
  5. Após finalizar a operação, salve o arquivo baixado em local seguro.
  6. Para tranferir o arquivo baixado do sistema Windows para a máquina virtual com Linux, digite, no terminal PowerShell, o comando scp C:\caminho\chave\no\windows usuário_linux@ipv4_público_linux:/caminho/destino/linux.

arquitetura_aws's People

Contributors

felipesereno avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.