AWS SERIES: DAY … FIVE: (using) YOUR OWN AMI-or-custom-image

Muito bem turma, chegou a hora da verdade e por isso vamos testar aquela nossa imagem da aula passada. A partir de agora, ela servirá como TEMPLATE para futuras máquinas/instâncias que necessitem do ansible e python previamente instalados. Na prática, isso implica que não precisaremos mais estar copiando e colando o script no campo userdata Basta apontar para ela e voá-la … Está feito!

Faça login novamente na AWS Console, e vá para o painel de instâncias EC2. Uma vez lá, selecione a máquina correspondente, criada no post anterior. Em seguida, Ações > Imagens e modelos > Criar imagem

Figura 01. criar imagem

Dê um nome e informe uma breve descrição acerca da vm. O valor do armazenamento permanece inalterado, ou seja, o novo disco também terá 8 GB de espaço disponível. E por último, clique no botão Criar imagem

Figura 02. nome, descrição e armazenamento

Aguarde um pouco, e observe a mensagem de progresso (em andamento)

Figura 03. mensagem

Valide a mesma trocando para a tela de Executar instâncias Localize a opção Minhas AMIs e finalmente escolha a imagem customizada.

Figura 04. selecionar AMI

NEXT, NEXT, NEXT, NEXT … De acordo, e seguindo o passo-a-passo dos outros artigos da série AWS já publicados aqui no BLOG

Figura 05. grupos de acesso
Figura 06.
Figura 07.

Após o término, pressione F5 … Batize-a, conecte-se e … FIM

Tchau 👋 Nos veremos em breve, novamente!

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

ANSIBLE SERIES: h.t.wrt* … tasks, plays e books: como escrevê-los?

* Sigla para: < How To Write >

Recapitulando o que vimos até o momento acerca do Ansible:

  • Teoria
    • DevOps: conceito, história, curiosidades ✅
    • Por que automatizar com ansible? ✅
    • 5 conceitos fundamentais ✅
  • Prática
    • Linha de comando, hello.YML e Ad-Hoc ✅
    • Web console: AWX/TOWER ✅
    • Como executar um JOB graficamente em tempo real ✅

Poxa vida! 😲 Eu diria um bocado não é mesmo? Sendo ou não, o que importa é que a estrada ainda se encontra a nossa frente e aos poucos, devagar, mas com passos firmes vamos progredindo no ROADMAP de um DEVOPS. Portanto, e acho que todos já estão acostumados com as minhas deixas (ou chamados) para iniciar um POST do blog … Hey Ho! Let’s go!

Muito bem jovens, ao que interessa então. Se você já buscou material, ou até mesmo cursou algum tipo de preparatório para o Ansible, as chances do professor ter abordado logo no começo (imediatamente após o briefing/overview) esses itens que vou mostrar é muito grande. Em outras palavras, e simplificando, acredito que tenha sido dessa forma: 1. o que é ansible? / 2. definições e termos / 3. prompt, módulos e comandos ad-hoc / para finalmente chegar em 4. como escrever playbooks. Por último é que eles mostram o AWX, boas práticas, roles, hosts windows, network e paramiko, etc. Mas e daí Victor? Eu sei, não há nada de errado com isso. Cada um ministra e monta seu plano de aulas da maneira que achar melhor aos estudantes. E tudo bem, ok. Mas no nosso caso, vocês e eu, quis inverter um pouco as coisas e adiantar logo a parte gráfica do ansible, ou seja, o tower/awx. Na verdade o meu intuito era “cativar” a todos apresentando de cara as duas faces do mesmo: linha de comando e interface web. Assim cada pessoa poderia escolher a melhor forma de trabalhar, de acordo com seu gosto e afinidade. Gosta de terminal? Ótimo, vá de CLI e seja feliz! Não, prefiro botões, gráficos e menus. Maravilha, pegue a GUI e curta a vida! O que quero dizer aqui é não existe método certo ou errado, melhor ou pior. Não, pelo contrário, há vantagens e desvantagens em cada um deles. Cabe tão somente a você pesar os prós e contras e escolher sua forma de operar. Lembrando sempre que é possível combiná-las tá? Por exemplo, tal tarefa é mais rápido e comodo se fizer via bash, já aquela outra é necessário maior controle de usuários e permissões, então farei por meio da web. Entenderam? Ou enrolei demais? 🤔

POOL DE INFORMAÇÕES

https://docs.ansible.com/

Desde sempre admirei empresas de tecnologia, bem antes de entrar na faculdade. Talvez por isso que enveredei para este ramo. Google, Microsoft, IBM, Facebook, e tantas outras (ora gigantes, ora um pouco mais modestas) foram alguns exemplos de modelo a perseguir, almejar e quem sabe um dia entrar no time… Uma vez imerso nesse grande oceano, chamado TI, passei a ter bastante contato com Linux e suas distros. Além de ter curtido, comecei a ficar de olho, meio que acompanhar notícias e bastidores das empresas idealizadoras/responsáveis. Foi assim que fiquei maravilhado com todo o trabalho por trás de cada uma dessas distribuições. Digo, não apenas o resultado final: o lançamento periódico de novas versões. Mas sim o suporte, divulgação, comunidades, fóruns oficiais, documentação, e afins. Também vale um destaque especial, o principal “cartão de visita” dessas empresas: os websites. Falo sério, você já acessou a Canonical, Red Hat, Suse e System76 ?? É verdadeiro deleite, e de encher os olhos, devido a tanto primor e cuidado com o design e layout. São muito bonitos, sem exceção!!!

E como prova disso, trago a seguir uma captura de tela da página INDEX da documentação do ansible. Podemos dizer que ela é uma espécie de hub central, uma vitrine, para orientar sobre tudo que o mesmo é capaz, e como fazer. Confiram:

Figura 01. Docs INDEX page

Acima devidamente circulado está o nosso foco: a documentação base, ou seja, relacionada ao núcleo, chamado de ansible-core. Pelas próximas semanas vamos nos debruçar sobre a sintaxe, lógica, melhores práticas, organização de pastas e arquivos, reuso de código, otimização, e muito mais. Para isso, irei sempre pontuar já no título do POST em questão, o que vamos aprender nele. Ex: loops, variáveis, templates, roles, e assim por diante.

Qualquer dúvida ou lacuna que porventura tenha deixado, acessem o link e vão direto na fonte para saná-las. Até porque não pretendo abordar absolutamente tudo que está lá, ok? Senão o que estaria fazendo é um simples CTRL-C + CTRL-V do referido conteúdo. E isso não quero, e tão é algo ético. Resumindo: antes de ler aqui, recomendo dar uma estudada pela oficial, por favor. Embora prometo fazer o meu melhor para se aproximar ao máximo dos mestres da Red Hat 🎩

01-a. BECOME: acesso, usuários e permissões

Ansible utiliza meios de escalonamento de privilégios pré-existentes na máquina remota. Isso é o que eles chamam de become. Ele seria o equivalente ao su, sudo, runas e similares. O objetivo é tanto permitir quanto executar tarefas locais nos alvos (nodes), usando privilégios de root ou qualquer outra permissão já criada dentro do nó. O efeito prático disso é torna-se outro usuário¹ dentro do host² em questão, sendo o primeiro completamente diferente daquele que usou para entrar no segundo.

i ) Usando o become

É possível controlá-lo através de tasks, plays, variáveis de conexão ou linha de comando. Em caso de duas ou mais ao mesmo tempo (sim, isso é válido e às vezes comum) consulte atentamente as regras de precedência para as mesmas. Leia mais aqui: https://docs.ansible.com/ansible/latest/reference_appendices/general_precedence.html#general-precedence-rules

! ! ! Diretivas do become ! ! !

Estabeleça como definir o become, controlando o mesmo à nível de task ou play. Variáveis e diretivas são independentes entre si. Por exemplo, definir become_user não é a mesma coisa que “só” become.

become: defina para 'yes' e ative o escalonamento de privilégios
become_user : defina o usuário com os privilégios desejados. ou seja, a credencial que você pretende se tornar e não o usuário que fez login.
become_method : (à nível de play ou task) sobrescreve o método padrão definido em ansible.cfg
become_flags :(à nível de play ou task) permite o uso de flags específicas para uma tarefa ou play. bastante comum quando se quer mudar o usuário para 'nobody' em casos de 'shell' setado para 'nologin'

Por exemplo,

Gerenciar um serviço (daemon) que requer privilégios de root … Em um cenário onde o usuário conectado não é root … Neste caso, utilizamos o valor padrão de become_user, que é justamente ‘root’

- name: Ensure the httpd service is running
  service:
    name: httpd
    state: started
  become: yes

Executar algo como ‘nobody’ quando o shell (terminal) está configurado para ‘nologin’

- name: Run a command as nobody
  command: somecommand
  become: yes
  become_method: su
  become_user: nobody
  become_flags: '-s /bin/sh'

To specify a password for sudo, run ansible-playbook with --ask-become-pass (-K for short). If you run a playbook utilizing become and the playbook seems to hang, most likely it is stuck at the privilege escalation prompt. Stop it with CTRL-c, then execute the playbook with -K and the appropriate password.

! ! ! Variáveis de conexão ! ! !

Nós e grupos suportam diversas, e distintas, opções ‘become’. Em cada gerenciável existe a possibilidade de defini-las em um arquivo inventário, ou usá-las como se fossem variáveis comuns.

São elas,

ansible_become: em termos de finalidade, praticamente uma cópia da diretiva become. ou seja, define se o escalonamento de privilégio será utilizado ou não.
ansible_become_method: escolhe qual forma de privilégio será usada.
ansible_become_user: dita qual usuário você irá se tornar via método de escalonamento. não é a mesma coisa que ansible_become: yes
ansible_become_password: senha do usuário citado anteriormente. é possível, mas não aconselhável, passar segredos em texto plano. aprenda formas mais seguras em https://docs.ansible.com/ansible/latest/user_guide/vault.html#playbooks-vault
! ! ! Opções na linha de comando ! ! !
--ask-become-pass OU -K
Solicita a senha "privilegiada" ... É usada para todos os hosts
--become OU -b
Executa as instruções com o become ... Não necessariamente haverá sempre uma senha
--become-method=BECOME_METHOD
Método utilizado ... Padrão = SUDO ... Outros [su | pbrun | pfexec | doas | dzdo | ksu | runas | machinectl]
--become-user=BECOME_USER
Rode os comandos como este 'usuário' ... Padrão = ROOT ... Não é o mesmo que --become ou -b

ii ) RISCOS E LIMITAÇÕES DO BECOME

Intuitivo mas não perfeito, o become apresenta certas limitações em sua capacidade. O que gera algumas questões “interessantes” a serem avaliadas, para que não se transformem em “desagradáveis”. Todas elas podem ser estudadas no link a seguir:

https://docs.ansible.com/ansible/latest/user_guide/become.html#risks-and-limitations-of-become

  • Riscos de se tornar um usuário sem privilégios
  • Não compatível com todos os plug-ins de conexão
  • Apenas um método pode ser habilitado por host
  • O escalonamento de privilégios deve ser generalista
  • Talvez não seja possível acessar variáveis de ambiente preenchidas por pamd_systemd

CONTINUA (…)

Próximo post >>> LOOPS

REFERÊNCIAS:

https://docs.ansible.com/

https://docs.ansible.com/core.html

https://docs.ansible.com/ansible/latest/

https://docs.ansible.com/ansible/latest/user_guide/index.html

https://docs.ansible.com/ansible/latest/user_guide/index.html#writing-tasks-plays-and-playbooks

https://docs.ansible.com/ansible/latest/user_guide/become.html#become

ANSIBLE Series: Web … Observando a execução de um JOB em tempo real

<head>
       Dedico esse post às mulheres 🌷 Especialmente para todas as  devs,
       sysadmins, engenheiras, pesquisadoras e cientistas 👩🏻‍🔬👩🏻‍💻👩🏻‍🏫👩🏻‍🎓 da computação
       ao redor do globo
</head>

E estamos aqui novamente, de volta ao Ansible. Mais precisamente continuando a parte gráfica, batizada de AWX/Tower. Preciso que resgatem na memória o que vimos no post ANSIBLE Series: Lab … Modo GUI = Web Console

Um resumo rápido e para ajudá-los…

1ª parte – Teoria: o que é AWX, por que foi criado, funções principais, e explicação sobre cada componente integrante da arquitetura.

2ª parte – HOW TO: como instalá-lo usando o método docker-compose.

3ª parte – Mão na massa: adicionar usuários, inventários, hosts, criar projetos e templates na interface web.

Portanto, sendo assim, não pretendo repetir ou me alongar demais nas explicações de cada coisa, seja item ou subitem, seja menu ou submenu, seja aba ou opção. Para que isso ocorra e todos compreendam recomendo a leitura do já citado ANSIBLE Series: Lab … Modo GUI = Web Console … Basta pesquisar no blog ou retroceder alguns artigos, ok? 😏

O que verão a seguir serão apenas telas já com os campos preenchidos por mim, de acordo com as minhas definições e configurações, ou seja, hosts, iventário, chave SSH, repositório GIT, etc. Se por acaso os nomes que você utilizou no laboratório diferem dos meus (o que é bem provável e possível), preste atenção e preencha os campos de acordo com eles.

Ultima chamada e reforço antes da prática de hoje: Caso queira saber/localizar aonde deve clicar selecionar ou digitar em cada passo/etapa no AWX, pare agora, leia e só retorne após o ANSIBLE Series: Lab … Modo GUI… Aaaaahhhhh, vocês já sabem muito bem o quê 😂😂😂😂 Chega de enrolar!!! rsrs

IF (TIMEOUT=TRUE) OR (ERROR=TRUE) THEN:

Control-A

# firewall-cmd --zone=public --add-masquerade --permanent
# firewall-cmd --permanent --add-service=http
# firewall-cmd --permanent --add-service=https
# firewall-cmd --reload

Node-01, Node-02

# systemctl status firewalld
# systemctl stop firewalld
# iptables -L

CRIANDO UMA ORGANIZAÇÃO (…)

Figura 01

ADICIONANDO UM USUÁRIO (…)

Figura 02

DEFININDO INVETÁRIO (…)

Figura 03

ACRESCENTANDO HOSTS (…)

Figura 04

ESTABELENCENDO CREDENCIAL (…)

Figura 05

INICIANDO UM PROJETO (…)

Figura 06

CRIANDO TEMPLATE (…)

Figura 07

RUNNING A JOB (!!!)

Figura 08

(**) Legendas:

Verde -> Sucesso -> OK!
Laranja -> Modificações/Alterações!
Vermelho -> Avisos/Falhas -> ERROR!

https://www.linuxtechi.com/install-ansible-awx-docker-compose-centos-8/

https://en.wikipedia.org/wiki/Margaret_Hamilton_(software_engineer)

https://pt.wikipedia.org/wiki/Margaret_Hamilton_(cientista_da_computa%C3%A7%C3%A3o)

Margareth Hamilton & Apollo 11

Happy women’s day 🙂