AWS SERIES: DAY … TWO: (mapa) GLOBAL, (zona) REGION, (disponibilidade) DATACENTER, (máquina) ID, e (acesso) SSH-EC2-USER

Já ouviu aquela máxima que seres humanos gostam de palavras e máquinas preferem números? O que para nós é http://www.google.com.br para um computador na verdade é 142.251.129.67

Figura 01. ping http://www.google.com.br

Se adaptarmos para AWS, o que nós chamamos de Ohio e Virgínia do Norte, simplesmente são us-east-2 e us-east-1, respectivamente. Todos os códigos que representam cada região e zona da nuvem da Amazon estão presentes em https://docs.aws.amazon.com/pt_br/AWSEC2/latest/UserGuide/using-regions-availability-zones.html

Figura 02. zonas e regiões

O mapa completo para uma imagem geograficamente precisa, com possibilidade de interação através do mouse, está em https://aws.amazon.com/pt/about-aws/global-infrastructure/

Figura 03. infraestrutura global da AWS

Qualquer informação básica passível de consulta acerca da instância, selecione-a primeiro com apenas um clique, e depois role para baixo da tela no novo sub-painel a ser carregado. Uma aba geral chamada de Detalhes é exibida por padrão, ao lado de outras batizadas de Segurança, Redes, Armazenamento, Status, Monitoramento, Tags.

Figura 04. detalhes da instância
Figura 05. detalhes da instância
Figura 06. monitoramento em tempo real

Permanecendo na página, e deixando marcada a caixa de seleção, vamos agora entrar na EC2 similar ao que faríamos com qualquer outra máquina virtual. Para tal, localize o botão CONECTAR na parte superior da tela.

Figura 07. botão conectar

Copie e cole a seguinte linha para uso do SSH. Se estiver no Linux, o protocolo é suportado nativamente, bastando apenas abrir o terminal, colar e executar. Senão, no Windows baixe e instale o Git Bash antes do procedimento.

ssh -i "rootkiv-aws.pem" ec2-user@ec2-3-139-90-191.us-east-2.compute.amazonaws.com
Figura 08. copie e cole
Figura 09. git bash for windows

>_ BÔNUS EXTRA: Proteção contra exclusão acidental

Quando ligadas, as instâncias dentro da AWS CONSOLE se comportam como máquinas … E como bons exemplares, também é possível efetuar outras operações para além do boot. São elas: interromper, reinicializar e encerrar. Em particular, na interface web, estão denominadas como Estado da instância

Figura 10. estados da instância

Por estarem muito próximos um do outro, esses botões podem ser acionados sem querer. Exemplo, você queria hibernar a máquina quando na verdade apertou encerrar. Observe a seguir, um pouco mais de perto:

Figura 11. ações próximas

Encerrar aqui quer dizer apagar a máquina e o disco por inteiro. Sem volta ou garantia nenhuma de recuperação posterior. Por isso, ative sempre que puder o recurso que irei mostrar logo mais.

Figura 12. passo um
Figura 13. passo dois

Um pequeno teste final, simule uma exclusão acidental …

Figura 14.
Figura 15.
You Shall Not Pass by Gustavo Athayde on Dribbble
Você não irá passar!

Um feliz natal (atrasado) do blog @automatesmachines.org

AWS SERIES: DAY … ONE: (conta) FREE TIER, (instância) EC2 e (dois passos) 2FA

Em nosso desembarque na tão famosa e “badalada” nuvem, necessitaremos criar e configurar alguns itens básicos antes de qualquer outra coisa. Primeiramente, é claro, começando pela conta de usuário gratuita na própria AWS … Sem ela? Nada de acesso, simples assim. Curta e grosseiramente (me perdoem, por favor) essa seria a resposta. Então, arregacem as mangas e mãos à obra!

No navegador digite https://aws.amazon.com/ na barra de endereços. Localize o botão ‘criar uma conta gratuita’ e selecione com clique simples.

Figura 01. criar uma conta gratuita

Logo após, o que temos é apenas mais um daqueles formulários de internet para usar determinado serviço. Perguntas triviais como: nome, e-mail, endereço, profissão, login, senha, etc, etc, etc. É bem provável até que o seu browser já tenha algumas dessas respostas e vá auto completando tais informações graças aos cookies e mecanismos de salvamento 🤭

Figura 02. questionário 1 de 5
Figura 03. questionário 2 de 5
Figura 04. fatura e pagamento (3 de 5)

Sim, é obrigatório cadastrar pelo menos um número de cartão de crédito internacional válido e ativo 😨😨😨 Como é? Tô fora Victor … Obrigado, mas essa série vou pular! Nada temam sra.(s) e sr.(s) pois não serão cobrados por isso. Aliás, melhor dizendo, somente em casos de uso acima da quota estabelecida pelos termos de uso gratuito. Chamado de “Nível de uso gratuito da AWS”, o mesmo se encontra disponível em https://aws.amazon.com/pt/free Recomenda-se aqui uma leitura mais pausada e detalhada, para que em seu futuro não haja surpresas desagradáveis ou consequências mais severas na forma de taxas extras.

Por exemplo, quanto custa uma instância EC2 ligada initerruptamente na nuvem AWS? Parênteses: não estamos considerando a parte gratuita já adquirida. Queremos calcular o preço (valor/hora) excedente ao limite gratuito. E a resposta está em https://aws.amazon.com/pt/ec2/pricing/on-demand/

Figura 05. tabela de preços para EC2 sob demanda

>_ AWS CONSOLE: LOGIN E MULTI-FATOR

Principal porta de entrada (na verdade, a única até então) para gerenciar seus serviços e recursos disponibilizados na nuvem, a AWS Console fica acessível por meio do link https://aws.amazon.com/pt/console/ E para tal, resgate o usuário e senha criados hoje mais cedo:

Figura 06. link de acesso
Figura 07. e-mail do proprietário (usuário root)
Figura 08. multi-factor authentication

Pausa para explicar essa opção extra de segurança que impede acessos indevidos e não-autorizados. Uma vez dentro da web console, veremos que o céu é o limite para AWS. Digo isso pois encontraremos uma infinidade de recursos e possibilidades bem ali, ao nosso alcance. Coisas que talvez nunca serão utilizadas mas de todo jeito permanecem lá, esperando, prontos pra uso. Para que fique ainda mais claro o poder que você tem em suas mãos, é como se ela fosse o internet banking da sua conta bancaria. A maioria dos itens presentes não são gratuitos e portanto seu eventual uso será cobrado. Então, exercite sua mente e dimensione o estrago que um atacante causará na fatura do seu cartão … Bem grande não é? 😱😱😱 Sendo assim, não perca mais tempo e ative o código multi-fator na sua conta AWS. Na barra de pesquisa da console, busque pelo termo-chave “iam”(i-a-m):

Figura 09. todos os serviços AWS
Figura 10. painel do IAM
Figura 11. dispositivo MFA

No meu caso, optei por usar meu próprio smartphone Android com o app Google Authenticator. Consulte para saber mais sobre dispositivos, sistemas, aplicativos MFA suportados pela nuvem AWS.

>_ AWS CONSOLE: EC2 – AMAZON LINUX – T2.MICRO

Elastic Computer, ou simplesmente, EC2. Trata-se do nome que é dado a uma máquina virtual (vm) dentro da AWS. Quando começar, é bastante comum não haver a correspondência termo-serviço totalmente formada e definida na mente. Está na dúvida? Use a pesquisa para saber qual é o serviço que aquela sigla/palavra representa.

Figura 12. painel EC2

Localizada internamente, no painel do EC2, a Visão Global traz uma foto de todos os recursos de todas as instâncias sendo usados (ou não) no momento. Disse “ou não” porque você pode ter X instâncias criadas mas nenhuma em execução. Talvez foram desligadas ou nunca foram ligadas ainda. Ou seja, esses recursos “constam”, pois estão sim listados. Mas não “contam” como uso corrente, já que não serão cobrados.

Figura 13. visão global (instâncias)

Se observarem a imagem acima, verão que já tenho uma instância na AWS. Criei essa no início do mês e deixei rodando desde então. Por se tratar de apenas uma, estou seguro e isento de cobranças. Isso porque estou dentro do pacote de 750 horas mensais gratuitas de EC2 (meses pares, 24 x 30 = 720) (meses ímpares, 24 x 31 = 744). Contudo, preste sempre muita atenção! O dashboard da AWS nunca será absoluto e mostrará todas as instâncias em todas as regiões. Regiões? 🤨 Como assim? Acontece que a computação de modo geral funciona em torno dos datacenters: pequenos, modestos ou grandiosos. E com a nuvem não poderia ser diferente. Os centros de dados da AWS estão espalhados por todo o globo, em regiões distintas. Nos últimos anos, o padrão para as novas contas de usuário da Amazon normalmente é: ou Ohio, ou Virgínia do Norte (ambos Estados Unidos). Portanto, caso você crie uma instância em X e depois sem querer acabe esbarrando em Y com o mouse, saiba que a AWS não o notificará sobre tal mudança e você será cobrado de acordo com o preço daquela “nova” região (Y). A lógica é bastante simples: quanto mais próximo do seu local atual for a hospedagem das máquinas, mais caro será o preço por horas excedentes. Por exemplo, no caso de um brasileiro como eu, o valor para ter servidores em São Paulo, que é o datacenter mais perto de mim, será bem maior do que em outras regiões.

Encerrando essa parte de “precificação”, fique atento para essas duas situações:

a) No meio do caminho, durante os estudos, uma troca acidental de região e consequentemente valores um pouco mais “salgados” no fim do mês, na fatura do cartão.

Figura 14. us-east-2 (Ohio)

b) Mais de uma instância rodando ao mesmo tempo durante o mês inteiro, resultando no estouro das horas gratuitas cedidas pela AWS, e por tabela, cobrança sob demanda (ex: U$ 0,22/h) dali em diante até o fechamento do mês corrente.

Agora sim, estamos prontos! Burocracia compreendida, passemos para a parte mais legal: a prática. E antes de criarmos a nossa primeira instância na nuvem, uma ressalva … Eventualmente, se a aplicação/sistema/solução em que está trabalhando foi homologada para “esse” ou “aquele” Linux, se atenha ao script, mantenha o plano. Claro que ninguém irá lhe impedir de testá-lo em outros sistemas, mas para fins de produção é sempre melhor estar no ambiente em que o mesmo foi desenvolvido e tem suporte garantido. Ok?

Siga os passos e dirija-se até a seguinte tela:

página inicial > EC2 > executar instâncias > selecione uma AMI (Amazon Machine Image)

Figura 15. etapa 01: imagem de máquina

O primeiro ponto que vale a pena destacar aqui é a etiqueta “qualificado para o nível gratuito” (em inglês, free tier). Procure por ela quando quiser utilizar esse e os demais serviços da AWS. Do contrário, você já sabe … 💸💸💸 Segundo ponto, é o tipo de imagem para a máquina virtual EC2. Caso a recomendação da aplicação/solução seja Ubuntu, então use o Ubuntu. Caso seja OpenSuSE, use o OpenSuSE. E assim por diante. Quando não, opte pelo Amazon Linux. E quem é esse Victor? Nada mais do que um RedHat compilado para a AWS. Em outras palavras, otimizado para trabalhar na nuvem da Amazon. Ele conta com uma série de ferramentas e integrações que irão facilitar muito o dia-a-dia do administrador (você).

À título de informação, as outras opções que temos (desde o Windows, passando pelo MacOS, e chegando até o Linux) :

Figura 16.

Próxima etapa, tipo da instância a ser implantada. Ou seja, o hardware da máquina. Seguindo a lógica, quanto mais poderosa for, mais caro será o seu valor. Sendo assim, busque pelas instâncias free tier (gratuitas). Normalmente são as de nome T2.MICRO

Figura 17. t2.micro – 1 CPU 2.5GHz – 1 GB ram

No rodapé, aperte o botão PRÓXIMO: detalhes da instância. Nessa página não mexeremos em nada, deixando tudo como está (padrão/default) Voltaremos em breve, no futuro, para maiores detalhes e explicações acerca de cada uma das configurações.

Figura 18. detalhes da instância (default)

NEXT … Adicionar um storage, ou em bom português, armazenamento de dados. Somente aqui haverá uma segmentação por parte da AWS, pois a mesma trata a máquina virtual e o armazenamento como serviços diferentes. A máquina virtual diz respeito as questões de processamento, memória, etc. Já o armazenamento diz respeito ao disco, ou seja, até onde vai a capacidade de gravar informações. Um fato positivo é que todos são SSD, melhorando significativamente o desempenho e velocidade. Mas, novamente cuidado! Limite-se apenas a quantidade máxima para o nível gratuito.

Figura 19. storage

NEXT … Tags? Não, por enquanto não queremos nenhuma.

NEXT … Security Group, ou Grupo de Segurança. Equivalente a um firewall para essa vm EC2. Devido ao fato de estar na nuvem, aberta a toda e qualquer pessoa, quem realmente pode/deve acessá-la via SSH e afins? Todos, apenas um grupo seleto, somente você? Para isso, uma boa recomendação é deixar ativa a opção meu IP e só.

Figura 20. meu ip

NEXT … Review e launch (revisão e lançamento). Verifique se está tudo OK e conforme desejado. Se sim, mande em frente e espere a conclusão!

Figura 21. executar (launch)

É obrigatório gerar um novo par de chaves SSH ou selecionar algum já pré-existente salvo localmente no seu computador. Como já possuo um devido a primeira instância, sendo esta a minha segunda, então vou apenas apontar o par que tenho na minha máquina.

Figura 22.

Running … Please wait …

Figura 23.

Ao final, edite, dê um nome e salve!

Figura 24.

Dia 01 de trabalho concluído 🙃 Te aguardo no próximo !!!

>_ REFERÊNCIAS:

https://explore.skillbuilder.aws/learn/course/external/view/elearning/134/aws-cloud-practitioner-essentials?dt=tile&tile=fdt

https://explore.skillbuilder.aws/learn/course/external/view/elearning/1851/aws-technical-essentials?dt=tile&tile=fdt

AWS SERIES: TEORIA … Nuvem, Cloud Computing ou Internet ?

Sendo ou não de TI, as chances de ter ouvido “esse” ou “aquele” termo, tal “palavrinha” chave, ou todas as alternativas anteriores, é muito, mas muito grande mesmo. E não é exagero dizer que a nuvem já faz parte das nossas vidas, mesmo que às vezes não percebamos ou negligenciamos o seu devido valor. Sim, eu poderia muito bem passar a noite inteira aqui, dando exemplos e situações nas quais você foi salvo pela nuvem, mas vou poupá-lo disso e vamos somente a alguns casos: (a) agenda de contatos restaurada após roubo ou “morte” de um celular; (b) backup das fotos de casamento perdidas durante uma catástrofe natural; (c) carros que enviam dados de GPS uns para os outros sinalizando um eventual congestionamento, e portanto a recomendação de desvio aos demais; (d) download de um bom livro para longas e tediosas viagens.

Todos são a materialização do que ficou conhecido como “Computação em nuvem” (cloud computing, em inglês). Por não ser de hoje, embora soe como algo recente para os mais leigos, a mesma trouxe inúmeras consequências e causou mudanças de paradigma na computação. Ela nos apresentou um novo caminho, quase sem volta, pois os resultados e benefícios são tantos e tão vantajosos, que não faz o menor sentido a ideia de recuo/retrocesso . A Industria 4.0 ou Internet das Coisas (IoT, sigla em inglês) está aí para provar e não me deixa mentir. Somos inteiramente capazes de criar novos dispositivos complexos, a cada dia que passa e a partir de outros menores e mais acessíveis. Por exemplo, somando sensores, leds, circuitos programáveis, baterias, hardware sobressalente (braço, asa, hélice) e um chassi, você é capaz de construir um drone terrestre ou aéreo. Em um segundo momento, inevitavelmente terá que pensar em como interconectá-lo (da melhor maneira possível) a esses outros novos dispositivos ao mesmo tempo que funcione para todo o resto: pré-existente e legado. É justamente nesse intervalo que a nuvem entra em cena para salvar o dia.

E se atualmente testemunhamos esses objetos em todo lugar, coexistindo pacificamente e formando uma grande nuvem de coisas, boa parte do mérito deve ir para as tecnologias sem fio. Wi-Fi, Bluetooth e o 5G, são os vetores que carregam tais mudanças e as possibilita para um incontável número de aparelhos e usuários mundo afora. A cada nova versão lançada destes protocolos sem fio, mais e mais nos libertamos de cabos e tomadas, para uma maior abrangência, eficiência e autonomia, tanto do ponto de vista de alcance quanto do ponto de vista energético.

Porém, mesmo com essa introdução, talvez a pergunta ainda seja … Mas afinal, o que é Cloud Computing (computação em nuvem)? Vamos respondê-la então 🧐

>_ O QUE É?

Com a palavra, alguns dos maiores “players” do mercado no quesito CLOUD, à nível nacional e internacional. É claro que cada um irá expor do seu jeito, mas todos convergem para a mesma ideia por trás do conceito.

De uma forma simples, cloud computing, ou computação na nuvem, é uma tecnologia que permite acesso remoto a softwares, armazenamento de arquivos e processamento de dados por meio da internet. É uma alternativa para você acessar dados importantes de qualquer computador, em qualquer lugar.

SALESFORCE. https://www.salesforce.com/br/cloud-computing/

A computação em nuvem é a entrega de recursos de TI sob demanda por meio da Internet com definição de preço de pagamento conforme o uso. Em vez de comprar, ter e manter datacenters e servidores físicos, você pode acessar serviços de tecnologia, como capacidade computacional, armazenamento e bancos de dados, conforme a necessidade, usando um provedor de nuvem.

AMAZON WEB SERVICES. https://aws.amazon.com/pt/what-is-cloud-computing/

A cloud computing é o acesso sob demanda, via internet, a recursos de computação — aplicativos, servidores (físicos e virtuais), armazenamento de dados, ferramentas de desenvolvimento, recursos de rede e muito mais — hospedados em um data center remoto gerenciado por um provedor de serviços em cloud (ou CSP). O CSP disponibiliza esses recursos por uma assinatura mensal ou por um valor cobrado conforme o uso.

IBM. https://www.ibm.com/br-pt/cloud/learn/cloud-computing

Em suma, o que temos e podemos destacar é:

  • zero investimento (nada de hardware novo ou próprio)
  • onipresente (a qualquer hora, em qualquer lugar, a partir de qualquer plataforma)
  • pagamento == uso (sob-demanda e elástico para mais ou para menos)
  • disponibilidade via internet
  • escolha de um provedor de serviços na nuvem (chamado de CSP)

>_ COMO FUNCIONA?

Existe um velho ditado que afirma ( … ) uma imagem vale mais do que mil palavras. Bom, nesse caso sou obrigado a concordar pois encontrei, talvez a melhor, animação (.GIF) para explicar a nuvem se comportando na pr´atica, em tempo real.

Todos os créditos vão para o blog da MANDIC, uma empresa do Grupo Claranet Brasil. Pioneira com foco na internet desde o embrião, foi fundada em 1990 e especializou-se em prestar serviços on-line disponibilizados na grande rede mundial de computadores (a famosa WWW, ou World Wide Web). Acesse para saber mais em https://www.mandic.com.br/

Quanto ao seu conteúdo, trata-se na prática em reunir todo o processamento e armazenamento contratado pelo indivíduo/empresa em um único, porém amplo, recurso computacional. Em teoria, este seria constituído por uma rede de servidores interligados na nuvem, aonde os mesmos se comportam conforme a necessidade. No fim das contas, eles acabam reagindo dinamicamente as eventuais cargas de trabalho (workloads) provindas de clientes do sistema/aplicação/banco de dados em questão.

Com isso você alcançaria facilmente, e rapidamente:

  • Economia de custose paga apenas pelo que usar
  • Escalabilidade – vantagem da elasticidade
  • Agilidade – diversos servidores no ar em poucos instantes
  • Confiabilidade – suporte 24×7 e 365 dias do ano.
  • Armazenamento ilimitado – aumentar a disponibilidade atual de espaço de armazenamento
  • Backups e restauração – garantidos pelo provedor (CSP)
  • Acesso às informações – dashboards/gráficos/relatórios nativos e integrados

>_ TIPOS E DEFINIÇÕES

Nuvem pública

Toda a infraestrutura, segurança e dados do cliente final estão fisicamente e sob a tutela dos provedores de nuvem. Atualmente, os principais são: Amazon (AWS), Microsoft (Azure), e Google (Cloud Plataform).

Nuvem privada

Um desdobramento da nuvem pública, oferecendo recursos muito semelhantes, mas aonde os dados e serviços do cliente final são totalmente gerenciados pela organização contratada para essa função. É como se essa última fosse uma espécie de intermediário entre você/sua empresa e a AWS, por exemplo.

Nuvem híbrida

Sugestiva e didática, é a junção dos dois tipos de nuvem: pública + privada. Aqui, na maioria das vezes, não é obrigatoriamente necessário ter dois provedores distintos.

>_ MODELOS E SERVIÇOS

IaaS

Infraestrutura como serviço: processamento, armazenamento e conectividade de rede sob demanda. Clientes são capazes de desenvolver seus próprios aplicativos nesses recursos.

EX: Alibaba

PaaS

Plataforma como serviço: serviços, disponibilidade de recursos e backup dos dados são gerenciados pelo provedor mediano, facilitando assim para os clientes finais se concentrarem apenas na funcionalidade de seus próprios aplicativos.

EX: Google App Engine, RedHat OpenShift

SaaS

Software como serviço: terceirizados fornecem aplicativos de usuário final a seus clientes com alguns recursos administrativos no nível do aplicativo, como a capacidade de criar e gerenciar seus usuários.

EX: ERP, CRM, Google Docs

>_ REFERÊNCIAS

https://www.mandic.com.br/cloud/

https://www.salesforce.com/br/cloud-computing/

https://aws.amazon.com/pt/what-is-cloud-computing/

https://www.softwareone.com/pt-br/blog/artigos/2020/01/25/afinal-o-que-e-cloud-computing

https://www.ibm.com/br-pt/cloud/learn/cloud-computing

VICRLDA: GNOME BOXES … cadê o modo bridge ???

Certa vez, lendo as discussões num fórum sobre Linux, me deparei com a declaração de um usuário que afirmava o seguinte: “Em grande parte, os desenvolvedores do projeto GNOME encaram a própria bandeira à níveis extremos – simples e fácil de usar (…) E como consequência, suas aplicações carregam esse DNA intrinsecamente”. Na época, honestamente não fez muito sentido para mim. Além disso, um questionamento aflorou particularmente: E o que há de errado? Isso é bom, não? Bem, e a resposta é SIM e NÃO. Continue lendo para entender melhor!

Se você, caro leitor, ficou empolgado com o Ansible mas não teve êxito no último laboratório, peço desculpas pois sim, foi minha culpa 😦 Para o sucesso deste é necessário fazer um pequeno workaround, gambiarra, ou melhor, uma solução alternativa, para soar mais bonito (rsrs) Em minha defesa, e fazendo o papel de advogado do diabo, o que aconteceu foi que travei em determinado ponto da prática, enquanto escrevia a teoria (o POST em si) ao mesmo tempo. Dessa maneira, pesquisei sobre o erro no Google, encontrei, corrigi e voltei a escrever como se nada tivesse acontecido, como se o BUG não existisse (quase que cantarolando de tanta felicidade, haha)

Eu sei que o título já entrega muita coisa, quando exponhe logo de cara sobre o que abordará, indo até o cerne e apontando o problema … Mas, mesmo assim, peço um pouco de paciência para os fatos, capturas de tela e explicações a seguir:

Acredito que o primeiro impulso de todo administrador/engenheiro de sistemas quando loga em uma máquina é verificar qual IP ela pegou. Portanto, vamos abrir o boxes e iniciar a VM. Feito isso, execute o comando que lista tais informações:

Figura 01. ip addr show

Observe atentamente para a faixa de rede atribuída (/24), neste caso sendo 10.0.2.X, e o endereço 10.0.2.15 … Guarde-a bem pois utilizaremos em um dos testes mais básicos para validar a comunicação entre máquinas: o ping.

Deixando aberto o terminal convidado, e liberando o teclado (CTRL+ALT da esquerda), dirija-se até o terminal hospedeiro, no meu caso o Pop_Shell, e digite ping -c 5 10.0.2.15

Figura 02. Pingando do HOST para o GUEST

Exatamente! Não conseguimos enxergar o CentOS 8, porque a interface é automaticamente configurada no modo NAT, processo esse considerado interno, do próprio GNOME Boxes. O porém aqui reside no fato de que não há outra opção de rede para a interface dessa ou qualquer outra máquina que esteja rodando sob o boxes. Isso porque o ecossistema GNOME Shell (interface gŕafica + aplicativos) tentam manter sempre tudo o mais simples possível. Recordam do lema deles?? Pois é, isso mesmo! Resultado: não sobra muito espaço para customizações e afins, já que a margem é quase inexistente, ínfima na maioria das aplicações 😦

Caso sirva de consolo, e graças a lógica de funcionamento do NAT, você não fica completamente isolado uma vez dentro da VM, pois a máquina visualiza sua rede doméstica/corporativa além de sair para internet sem nenhum problema.

Figura 03. Ping para a rede local e saída pela internet

Localize a pasta onde fica armazenada o disco virtual do CentOS, e copie o seu caminho completo:

Figura 04. /home/user/.var/app/org.gnome.Boxes/data/gnome-boxes/images

Instale o virt-manager no sistema hospedeiro. Disponível na Pop_Shop! ou visitando o site oficial (https://virt-manager.org/) e baixando.

Quando concluído, abrir e ir na opção Arquivo > Nova Máquina Virtual > Importar imagem de disco existente

Figura 05. QEMU/KVM

Botão “Avançar”, forneça o caminho navegando até ele ou cole aquele copiado mais cedo:

Figura 06.

Defina quanto de memória e CPU:

Figura 07.

Revise as configurações e por fim, botão “concluir”:

Figura 08.

Listada como ‘centos8’, clique com botão direito e escolha ‘executar’

Figura 09.

Em seguida, botão “abrir” para visualizar a console:

Figura 10.

Menu superior, aba “Ver”, opção “Detalhes”

Figura 11.

Um clique simples sobre o ícone ” NIC :b3:de:40 ” e copie exatamente de acordo com a captura abaixo:

Figura 12.

Aplique as alterações antes de fechar, retorne a console da máquina, e verifique o IP da interface:

Figura 13.

Finalmente, repita o teste do ping em ambos os sentidos da comunicação (HOST > GUEST e GUEST > HOST)

Figura 14. VM alcançando o hospedeiro tanto via IP quanto hostname
Figura 15. Sucesso total !!! Pop_OS enxergando a VM

Conclusão: a partir de hoje use sempre o virt-manager para executar a máquina devido a possibilidade de mais modos de rede para a interface!

ANSIBLE SERIES: YML … add sudo(ers) >> no prompt or ask

Olá! Como vai? Muito prazer, Victor é o meu nome … Ou @vicrlda, se preferir … Navegando pela internet em busca de inspiração, situações, exemplos práticos para exercitar e solucionar via ANSIBLE ??? É um sysadmin ou desenvolvedor que anseia o cargo de Engenheiro Devops / SRE ?? Por favor, peço que me deixe cumprimentá-lo e lhe dar os parabéns, pois o caro leitor (você) veio ao lugar certo! Seja mais do que bem-vindo ao @machinesbecomeservices.com … A partir de hoje, serei o seu humilde anfitrião / companheiro / fiel escudeiro nessa incrível jornada que chamo de “estrada para a automação”

Em contrapartida, se por acaso você é um veterano, não pera (…) Melhor dizendo, se já é um velho conhecido meu e do BLOG, por favor pule para a próxima etapa … Ops! Quero dizer, seção (hahaha)

Ambiente: Máquinas e Pré-requisitos

Para total compreensão e sentido, por favor, peço que…

Recém-chegados, leiam o seguinte post, e partam desse princípio:

https://machinesbecomeservices.com/2021/09/21/vicrlda-dual-boot-pop_os-gnome-boxes-vpn-checkpoint-e-novo-workflow/

Longa datas, revisem esse outro post, e iniciem suas VMs do ponto exato em que paramos:

https://machinesbecomeservices.com/2020/12/01/ansible-series-hands-on-01-modo-cli-e-hello-yml-1st-playbook/

Quem ainda não entendeu nada, acompanhe a śerie ANSIBLE desde o começo 😉

https://machinesbecomeservices.com/?s=ansible

GNOME Boxes, uma solução All-in-One: Download nativo de ISOs + Criação das instâncias + Uso integrado

Com o Boxes, não é mais necessário sair da ferramenta em busca de outros meios/softwares para baixar, instalar, configurar, usar máquinas virtuais. Destaque principalmente, e especialmente, para a primeira etapa que é fazer o download das ISOs, onde normalmente acessaríamos os respectivos sites oficiais de cada uma, e obteríamos via métodos tradicionais como o próprio GET ou até mesmo TORRENT. Bem, dito isso, vamos abri-lo agora para conhecê-lo um pouco melhor e ver como as coisas transcorrem, além de claro, testemunhar toda a sua simplicidade, praticidade e comodidade. Teclado e mouse em mãos, vem comigo!

Uma vez baixado via loja de aplicativos linux favorita (deb, rpm, flatpak, snapp), abra-o pela primeira vez e verá a seguinte tela:

Figura 01: GNOME Boxes v.40.2

Clique no ícone + para iniciar o processo de criação. Observe que a janela aberta traz consigo três opções principais, que são: (a) os sistemas operacionais mais baixados naquele momento, por outros usuários da plataforma; (b) lista de todos os outros SOs que não aparecem pois não figuram no ranking Top 3 anterior; e (c) finalmente instalar a partir de um arquivo .ISO previamente baixado e disponível localmente.

Figura 02. Opções e formas de iniciar o processo

Escolha a segunda opção, “Navegue e pesquise sistemas operacionais para instalar”.

Figura 03. Listagem dos Sistemas Operacionais

Procure por ‘centos’ na barra de pesquisa:

Figura 04. Busca por ‘centos’

Simularemos um ambiente heterogêneo, então isso significa distros variadas, com versões diferentes. Selecione CentOS 7 x86_64 (netinst) :

Figura 05. Download automático da ISO

Aguarde a conclusão do download, iniciado automaticamente, para logo em seguida começar o que o Boxes chama de “instalação expressa”. Informe um nome de usuário, e abaixo clique em adicionar senha, digitando a mesma no campo aberto:

Figura 06. Instalação Expressa / Usuário e senha

Na próxima tela, revisar e criar, defina a quantidade de RAM e tamanho máximo do HD, ambos virtuais. Para efeitos de teste, e considerando que essas máquinas serão sempre “descartáveis”, ou seja, meros templates clonados de um git, GitHub ou GitLAB via Ansible/AWX/Tower … Sinta-se livre para escolher a configuração que mais lhe agrada, e que seu hardware atual permite. Mas, tenha em mente que apenas 512 MB de RAM e 10 GB de HD, são o “mínimo” e mais do que suficientes para rodar um Linux em modo texto. Portanto, esta será a minha escolha de configuração para a maioria dos servidores-alvo (nós) que iremos criar eventualmente, ao longo da série:

Figura 07. Instalação expressa / RAM e HD virtuais

Feito! Agora basta esperar até que o sistema seja criado e pronto! Ressaltando que o ícone da imagem é uma espécie de olho que fica girando (bolinha fazendo círculos) :

Figura 08. Instalação expressa / SO sendo preparado

Caso a instalação demore e comece a achar meio estranho, faça como eu, seja curioso, e dê um simples clique em cima da bolinha. Talvez se depara com isso, um terminal bugado que por algum motivo não conseguiu finalizar o processo sozinho:

Figura 09. Instalação expressa / Kernel panic !!!

Seguindo a própria recomendação exibida em tela, digite journalctl no terminal para depurar o log e reunir mais informações sobre o possível erro.

Buscando a circunstância para tamanha anomalia, ou quem sabe com sorte, pelo menos alguma pista que levasse até o principal suspeito … Encontrei várias linhas no arquivo de log informando que “a partição X não foi montada”; “a partição Y não existe”; “a Z não possui espaço suficiente”; e coisas desse tipo … Meu primeiro palpite foi de que o particionamento automático da instalação expressa está bugando ao dimensionar, formatar e levantar o esqueleto de diretórios necessário ao sistema operacional. Cheguei ao ponto de aumentar o tamanho do disco virtual querendo testar o algoritmo de fracionamento em diferentes quantidades e valores de armazenamento, pois talvez aqueles exatos 10,7 GB iniciais estivessem sendo pulverizados em tantas micro partições, que no final uma ou outra não tivesse espaço disponível para continuar, quebrando assim toda a instalação. Outros testes realizados foram: aumentar memória, reiniciar a máquina, apagar a VM e recomeçar do zero. Nada! Sem êxito nenhum! Quase perdendo as esperanças, resolvi usar outra imagem, o CentOS 8. Além disso, ainda desconfiado de haver algum BUG no meio, desativei o processo de instalação expressa, simplesmente clicando e desmarcando a caixa de seleção. Dedos cruzados, e na torcida!!! Veremos o que nos espera adiante:

Figura 10. Repetindo o processo com CentOS 8
Figura 11. A-ha! Sem erros!!! Conclusão: instalação expressa do Boxes momentaneamente bugada

Siga em frente, definindo seus próprios parâmetros e configurações da VM, contudo sabendo que em muitas das vezes os padrões pré-selecionados de fábrica já satisfazem o nosso objetivo, salvo eventuais exceções a serem modificadas posteriormente, sem dano algum a integridade do sistema. Não explicarei em detalhes pois não cabe aqui, tão pouco é o objetivo desse POST, como instalar e configurar um CentOS. Isso porque no futuro pretendo abordar esse assunto, em particular, trazendo as possibilidades de cenários e suas variantes. Ok?

Pop_OS! : Executando o Ansible

Apostando no conhecimento prévio adquirido nos posts antecessores, vou direto ao ponto e mostro como transformar o seu Pop_OS! em um nó controlador do Ansible. Essa e tantas outras nomenclaturas, podem ser revistas a qualquer momento. Na dúvida sobre determinado termo, busque aqui no BLOG e releia! Pois cada um deles conta e todos são igualmente importantes, sem exceção.

sudo apt update
Figura 12. Atualizando a última versão dos repositórios atuais
sudo apt install software-properties-common
Figura 13. Instalando o pacote de softwares para python
sudo add-apt-repository --yes --update ppa:ansible/ansible
Figura 14. Adicionando o PPA (repo) oficial do Ansible
sudo apt install ansible
Figura 15. Instalando o pacote ‘ansible’ e suas dependências
ansible --version
Figura 16. Verificando qual versão foi instalada
ansible-config init --disabled > ansible.cfg
ansible --version
Figura 17. Criando o arquivo de configuração

LAB : Adicionando usuário e senha pré-definidos

Tarefa recorrente no cotidiano de um administrador de sistemas, informar novos usuários aos servidores linux pode ser divertido ou entediante, dependendo de como enxerga … Se não gosta de aventura, emoção ou coisas novas, então: (a) escreva um shell script, (b) copie-o para todas as máquinas em que o usuário necessita acesso, (c) execute o mesmo localmente, (d) digite o nome/senha, e por fim, repita os passos C e D até o número X de hosts envolvidos. Por outro lado, se busca tempo livre para novas demandas, novos projetos, novas habilidades, ou somente para tomar aquele cafezinho na copa com toda a calma, conversando e saboreando … Então, aprenda YAML, playbooks, Ansible: aqui, agora !!! 😉

Vamos lá! Para começar, armazenar senhas em texto plano é considerado uma falha de segurança. Qualquer atacante (externo ou interno) teria fácil acesso a esse segredo, usando-o a favor dele, e consequentemente, contra você. Por isso, dados críticos ou informações sigilosas devem sempre apresentar certo nível de criptografia, nunca expostos totalmente. Em nosso caso, utilizaremos a biblioteca passlib do python para gerar o hash de uma senha aleatória forte, sendo esse dado a constar no código-fonte, e não a credencial em si. Para tal abra o editor de texto e, sem olhar, digite algumas teclas aleatoriamente. Feito? Ótimo! Agora no terminal execute os seguintes comandos:

pip3 install passlib
python3 -c "from passlib.hash import sha512_crypt; import getpass; print(sha512_crypt.using(rounds=5000).hash(getpass.getpass()))"
CTRL-C (gedit) + CTRL-V (bash) + ENTER (tecla) = HASH (ctrl-c + ctrl-v + ctrl-s)

Salve o resultado (hash) no mesmo bloco de notas, ao lado da senha que criou há pouco. Assim você terá as duas informações, enquanto escreve o playbook, repassando apenas a última.

Com isso, ainda no terminal, monte a estrutura necessária:

mkdir awx
mkdir -p awx/inventories awx/playbooks
ls -lhR awx/
Figura 18.
cd awx/
touch inventories/hosts
touch playbooks/add-sudo-no-prompt-or-ask.yml
Figura 19.
ls -lhR awx/
Figura 20.

Edite o arquivo hosts conforme o conteúdo abaixo:

vim awx/inventories/hosts
##CENTOS-a ansible_host=10.10.2.141
##CENTOS-b ansible_host=10.10.2.143

Depois abra o playbook e cole o seguinte:

vim awx/playbooks/add-sudo-no-prompt-or-ask.yml
---
- hosts: all
  become: yes
    
  tasks:
  - name: Adiciona usuario e entrega poderes de ROOT
    ansible.builtin.user:
        name: "bob"
        state: present
        password: "$6$XxSTRcR6la4KKUl1$R7XqBVSTOTCNq8PeBpPHL5gK9x1xy8D7oICVHgc2StH7/7wuheM2rPdpw9WD4QkM.Sh1BaDaBq70kE8ScY0jd."
        update_password: on_create
        groups: wheel
        append: yes
...

1ª linha: Todo playbook, na prática um arquivo com extensão .yml ou .yaml, deve começar com três hifens (traços) para sinalizar a sintaxe da sua natureza, a linguagem YAML.

2ª linha: YAML suporta vários tipos de estruturas de dados. Quando trabalhamos com ANSIBLE as mais comuns são listas e dicionários. Uma lista pode ser um conjunto de itens, separados por linha e iniciados com hífen + espaço (“- “) cada. Já um dicionário pode ser um grupo de mapas, composto por chave:valor cada linha e nomeado exclusivamente. Também é possível misturá-los, o que acaba resultando em listas de dicionários ou dicionários com listas muitas vezes. Para encurtar, particularmente nesse caso, estamos dizendo ao Ansible que a lista “hosts” é composta por todas as entradas (sem exceção) do inventário padrão, de mesmo nome. Dessa forma, o playbook será executado em TODOS os servidores listados.

3 ª linha: Equivalente ao su/sudo, aqui definimos o método de escalonamento na máquina remota. O valor YES implica que o usuário escolhido foi o root do sistema ( become: yes = become_user: root )

5ª linha: Dicionário que contém todas as tasks daquela play em questão.

6ª linha: String que nomeia a primeira task do playbook, podendo ser uma frase, palavra, ou caractere de escolha livre.

7ª linha: Módulo ansible utilizado para cumprir aquela tarefa.

8ª linha: Parâmetro name do módulo user para informar o login de usuário.

9ª linha: Parâmetro que remove (absent) ou adiciona (present) o login anterior.

10ª linha: Parâmetro que recebe o valor da senha no formato hash, gerado em etapas superiores.

11ª linha: Parâmetro que atualiza para uma nova senha ou mantém a mesma em casos de preexistência.

12ª linha: Parâmetro que dita qual (is) grupo (s) aquela credencial será membro.

13ª linha: Parâmetro que defini se o grupo é só mais um apêndice ou substituto único e exclusivo para aquele usuário.

14ª linha: Fim do playbook (três pontos).

RUN PLAYBOOK , RUN ! ! !

Últimos metros da maratona, faltando apenas uma etapa para que tudo funcione perfeitamente … Bem, conforme dito no passado, Ansible trata-se de uma ferramenta agentless (sem agente) que faz uso do SSH para comunicação entre as partes. E sendo assim, não poderíamos esquecer de gerar o seu par de chaves correspondente. Para isso, logado como usuário SUDO (comum às duas máquinas: local e remota), no controlador execute:

ssh-keygen -t rsa -b 4096
Figura 21.
ssh-copy-id [usuario_remoto]@[ip_ou_hostname_do_alvo]
Figura 22.
ssh user@machine
Figura 23.
[password]
Figura 24.
exit or logout
ansible -i awx/inventories/hosts -m ping all
Figura 25.
ansible-playbook -i awx/inventories/hosts awx/playbooks/add-sudo-no-prompt-or-ask.yml --ask-become-pass
Figura 26.
Figura 27. ANTES e DEPOIS¹
Figura 28. ANTES e DEPOIS²

REFERÊNCIAS:

https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html

https://www.redhat.com/en/topics/automation/what-is-yaml

https://www.tutorialspoint.com/yaml/yaml_basics.htm

https://rollout.io/blog/yaml-tutorial-everything-you-need-get-started/

VICRLDA: dual-boot , pop!_os , gnome boxes , vpn checkpoint e novo workflow

Saudações terráqueos !!! Meu nome é VICRLDA-1-5-92 ... Sou um mensageiro intergaláctico, venho em paz e trago comigo um comunicado. Na verdade, trata-se de um sucinto relato sobre acontecimentos particulares ocorridos neste último mês e meio aqui na Terra, período no qual meu mestre e senhor (Victor, o grande) estava afastado e impossibilitado de deslocamento para vir lhes anunciar pessoalmente. Enfim, devaneios à parte, logo abaixo segue a transcrição da mensagem! Câmbio, desligo.

Olá pessoal ! Que bom revê-los e estar de volta após mais uma breve pausa! Não exatamente proposital, eu confesso, mas também não estava nos planos ficar tanto tempo sem postar nada. Quase 45 dias já se passaram desde o nosso último encontro, ocorrido em 09 de agosto. De lá pra cá, talvez a notícia mais importante (pelo menos pra mim) é que fui alçado e agora sou um especialista nível 03 no meu local de trabalho. Formalmente, e internamente, trata-se do setor de infraestrutura e operações, ou simplesmente setor de SUPORTE, como é o caso de muitas empresas aqui no Brasil. Redes, Banco de Dados, Segurança, Linux e Windows Server, são apenas alguns dos elementos que compõem e dão forma ao departamento de Infraestrutura de TI de uma organização. Usualmente, esse digamos “guarda-chuva”, está sob a tutela de um gerente que responde a um diretor técnico que recebe orientações do diretor-presidente. A nomenclatura varia um pouco, é claro, e outros protagonistas adicionais existem, coexistem, ou deixam de existir nesse organismo vivo chamado Governança Corporativa (estude COBIT 5 para saber mais!). Bom, e o que isso tem haver comigo? Não, não falo de você, estou perguntando a mim mesmo … rsrs! Esse reconhecimento enquanto profissional de TI só foi possível graças aos esforços com o Ansible, que dentro da empresa começou designado a mim como projeto piloto (de testes). E uma vez que apresentei os resultados inicias, muito positivos e relevantes, diga-se de passagem, foi dado o START para colocá-lo em PRODUÇÃO, com mais recursos e pessoal alocado.

No meio do caminho, enquanto trabalhava no projeto, utilizava como hospedeiro e sistema operacional principal da máquina o próprio Windows 10. Nada demais, ou contra, mas o sentimento que me acompanha já faz certo tempo, é que a “janela” da Microsoft não me satisfaz em termos de desempenho, velocidade e produtividade. Ainda mais quando se usa um hardware modesto a simples. Os maiores “pecados” estão concentrados principalmente no gerenciamento de memória e I/O. Tenho instalado 8 GB de RAM e HD convencional de 5400 rpm com um WINDOWS Limpo (fresh install, sem blotware dos fabricantes). E após um determinado período de tempo (semanas, dias, horas), especialmente se você assim como eu tem o costume de suspender/hibernar o PC ao invés de desligar toda vez, a configuração atual deixa de ser suficiente para rodar, testar, e trabalhar com diversas máquinas virtuais, mesmo estas colocadas em modo texto. O SO vai gargalhar, e verá seu uso de RAM chegar a 85/90 por cento da capacidade total. E o pior, boa parte sendo alocada para o Windows e seus incontáveis processos em segundo plano, e inúmeras atualizações pendentes, constantemente ignoradas no estado HOLD, mas que continuam ocupando espaço lá na escassa e suada memória RAM.

Somente então a partir daí que tomei a atitude de, não eliminá-lo, mas sim trocá-lo por um jogador de peso e mais experiente: Kernel Linux + Distro Pop_OS! ( … ) Quando o assunto é agilidade, ganho de tempo e mais fluidez no workflow de um sysadmin ou dev, incontestavelmente, LINUX > Windows … Ei pessoal, levem na esportiva, afinal é apenas uma opinião pessoal deste autor que vos escreve! Ok? Feito as pazes? Adiante então, vamos prosseguir! Meu conselho para você que se encaixa nessa descrição: faça dual-boot, instale qualquer distro de sua preferência (.deb ou .rpm), dê uma chance para o Linux e seja feliz, + rápido + tempo livre pra curtir a vida!!!!

Pois muito bem, caso tenha escolhido o Pop_OS! ou qualquer distro com o ambiente GNOME Shell, verifique na loja de aplicativos e procure por “Boxes” ou “GNOME Boxes”. Encurtando e simplificado bastante, o Boxes está para o VirtualBox assim como o VMware Player está para o VMware Workstation. Ou seja, todos eles são virtualizadores, contudo os primeiros são bem mais limitados de opções e muito mais restritos para ajustes finos de hardware. Então por que utilizá-lo? A primeira pergunta que vem a cabeça, correto? A resposta remonta ao ponto que mencionei mais cedo: produtividade. O GNOME Boxes, assim como tantas outras ferramentas/programas de software livre, apresentam um ás na manga quando se trata de Linux, opensource, enfim, de modo geral no comparativo com outros S.O.s disponíveis no mercado … Integração, meu caro amigo! Integração é a palavra-chave que resume perfeitamente essa relação: núcleo (kernel) < > sistema operacional < > pacotes (software). Tudo isso sai da fábrica quase configurado, ás vezes já pronto, e para todo resto o que falta é a distância de apenas um comando no terminal. Resumindo. Em outras palavras: os “meios” necessários para que um admin ou dev consiga desempenhar tarefas e atividades em diversos tipos de sistemas e ambientes, de forma simultânea, e tendo que optar como base um SO único/hospedeiro … Qualquer distribuição linux oferece enorme vantagem, sendo quase sempre a escolha mais indicada. Pois os ditos “meios”, que na verdade e na prática, são meras ferramentas que já estão presentes, ou rodam nativamente, ou ambos. Além disso, mostram benchmarks ultra rápidos, graças ao gerenciamento de memória e sistema de arquivos diferenciados.

Recapitulando a composição do meu novo workflow, temos: Linux Kernel 5.13.0 + Pop_OS! 21.04 + GNOME Boxes 40.2 + ( … ) Por último, mas não menos importante, o cliente VPN da Check Point Software Technologies Ltd. Uma empresa estadunidense de segurança cibernética com imenso portfólio de produtos, soluções e serviços voltados para a área. E assim, chegamos ao gran finale do dia de hoje … O que é uma VPN? Por que utilizar? Como instalar? Qual tipo estou usando? São perguntas a serem respondidas em outro momento, num futuro próximo.

Adeus, e até breve! 😉

https://www.kernel.org/

https://pop.system76.com/

https://wiki.gnome.org/Projects/GnomeShell

https://www.checkpoint.com/quantum/remote-access-vpn/