{"id":50340,"date":"2026-03-10T21:55:16","date_gmt":"2026-03-11T00:55:16","guid":{"rendered":"https:\/\/portifolioos-prontos.com\/?post_type=product&#038;p=50340"},"modified":"2026-04-03T08:57:25","modified_gmt":"2026-04-03T11:57:25","slug":"aula-pratica-infraestrutura-como-codigo-3-atividades","status":"publish","type":"product","link":"https:\/\/portifolioos-prontos.com\/index.php\/product\/aula-pratica-infraestrutura-como-codigo-3-atividades\/","title":{"rendered":"Aula Pr\u00e1tica Infraestrutura como C\u00f3digo (3 Atividades)"},"content":{"rendered":"<p><strong>Aula Pr\u00e1tica Infraestrutura como C\u00f3digo (3 Atividades)<\/strong><\/p>\n<hr \/>\n<p>ROTEIRO DE AULA PR\u00c1TICA<br \/>\nNOME DA DISCIPLINA: INFRAESTRUTURA COMO CODIGO<br \/>\nUnidade: U2_FERRAMENTAS INFRAESTRUTURA COMO C\u00d3DIGO<br \/>\nAula: A5_Utiliza\u00e7\u00e3o da computa\u00e7\u00e3o em nuvem e container<br \/>\nOBJETIVOS<br \/>\nDefini\u00e7\u00e3o dos objetivos da aula pr\u00e1tica:<br \/>\nO objetivo desta aula pr\u00e1tica \u00e9 compreender os conceitos de containers, identificando suas<br \/>\ndiferen\u00e7as em rela\u00e7\u00e3o \u00e0s m\u00e1quinas virtuais, criar e gerenciar imagens Docker customizadas para<br \/>\naplica\u00e7\u00f5es web simples utilizando Dockerfile, executar e administrar containers localmente com<br \/>\nmapeamento de portas e volumes, entender os princ\u00edpios b\u00e1sicos de orquestra\u00e7\u00e3o de containers<br \/>\ncom Kubernetes (Pods, Deployments e Services), implantar aplica\u00e7\u00f5es em um cluster Kubernetes<br \/>\nlocal com Minikube, e configur\u00e1-las para acesso externo atrav\u00e9s de um Service.<br \/>\nSOLU\u00c7\u00c3O DIGITAL:<br \/>\nVSCode, GitBash, DockerDesktop e Minikube<br \/>\nHardware:<br \/>\n\u2022 Computador com no m\u00ednimo 8GB de RAM.<br \/>\n\u2022 20GB de espa\u00e7o livre em disco.<br \/>\n\u2022 Conex\u00e3o est\u00e1vel com a Internet.<br \/>\nSoftware (todos gratuitos e de c\u00f3digo aberto):<br \/>\n\u2022 Docker Desktop: Ferramenta que instala o Docker Engine e o Docker CLI.<br \/>\n(Dispon\u00edvel para Windows, macOS e Linux).<br \/>\n\u2022 Minikube: Ferramenta para executar um cluster Kubernetes de n\u00f3 \u00fanico<br \/>\nlocalmente.<br \/>\n\u2022 kubectl: Ferramenta de linha de comando para interagir com o cluster<br \/>\nKubernetes (j\u00e1 vem inclu\u00edda no Docker Desktop).<br \/>\n\u2022 VSCode: editor de c\u00f3digo.<br \/>\n\u2022 Git Bash: Para clonar o reposit\u00f3rio da aplica\u00e7\u00e3o de exemplo.<br \/>\nLink dos Softwares Utilizados:<br \/>\n\u2022 Git: https:\/\/git-scm.com\/downloads<br \/>\n\u2022 Docker Desktop: https:\/\/www.docker.com\/products\/docker-desktop\/<br \/>\nP\u00fablico3<br \/>\n\u2022 Minikube: https:\/\/minikube.sigs.k8s.io\/docs\/start\/<br \/>\nPROCEDIMENTOS PR\u00c1TICOS E APLICA\u00c7\u00d5ES<br \/>\nProcedimento\/Atividade n\u00ba 1<br \/>\nCONTEINERIZA\u00c7\u00c3O COM DOCKER<br \/>\nAtividade proposta: Nesta aula pr\u00e1tica, o estudante ir\u00e1 \u201ccontainerizar\u201d uma aplica\u00e7\u00e3o web<br \/>\nsimples em Python. Primeiramente, ser\u00e1 criada uma imagem Docker para a aplica\u00e7\u00e3o usando<br \/>\num Dockerfile. Em seguida, ser\u00e1 executada essa imagem como um container em seu ambiente<br \/>\nlocal. Por fim, se dar\u00e3o os primeiros passos na orquestra\u00e7\u00e3o, implantando e expondo essa<br \/>\nmesma aplica\u00e7\u00e3o em um cluster Kubernetes local (Minikube), simulando um ambiente de<br \/>\nprodu\u00e7\u00e3o simplificado.<br \/>\nProcedimentos para a realiza\u00e7\u00e3o da atividade:<br \/>\n1 \u2013 Instala\u00e7\u00e3o das Ferramentas:<br \/>\n\u2022 Instale o Docker Desktop. Ap\u00f3s a instala\u00e7\u00e3o, certifique-se de que ele est\u00e1 em execu\u00e7\u00e3o.<br \/>\n\u2022 Instale o Minikube.<br \/>\n\u2022 Abra um terminal (ou PowerShell\/CMD no Windows) e verifique se as instala\u00e7\u00f5es foram<br \/>\nbem-sucedidas com os comandos: docker \u2013version e kubectl version \u2013client.<br \/>\n2 \u2013 Clone o Reposit\u00f3rio da Aplica\u00e7\u00e3o de Exemplo:<br \/>\n\u2022 No terminal, navegue at\u00e9 um diret\u00f3rio de sua prefer\u00eancia.<br \/>\n\u2022 Entre na nossa classe e Clone o projeto que cont\u00e9m uma aplica\u00e7\u00e3o web simples:<br \/>\nhttps:\/\/classroom.github.com\/a\/-XgJM8gz<br \/>\ngit clone LINK HTTPS PARA CLONAR<br \/>\n\u2022 Acesse o diret\u00f3rio da aplica\u00e7\u00e3o que usaremos.<br \/>\ncd CAMINHO PARA A APLICA\u00c7\u00c3O<br \/>\n3 \u2013 Containerizando a Aplica\u00e7\u00e3o com Docker<br \/>\n\u2022 Cria\u00e7\u00e3o do Dockerfile:<br \/>\no Dentro do diret\u00f3rio da aplica\u00e7\u00e3o e crie um arquivo chamado Dockerfile<br \/>\n(exatamente com este nome, sem extens\u00e3o).<br \/>\no Adicione o seguinte conte\u00fado ao arquivo:<br \/>\n\u2022 Defina uma imagem base oficial do Python 3.9<br \/>\nP\u00fablico4<br \/>\n\u2022 Defina o diret\u00f3rio de trabalho dentro do container<br \/>\n\u2022 Copie o arquivo de depend\u00eancias para o diret\u00f3rio de trabalho<br \/>\n\u2022 Instale as depend\u00eancias da aplica\u00e7\u00e3o<br \/>\n\u2022 Copie o restante do c\u00f3digo da aplica\u00e7\u00e3o para o diret\u00f3rio de trabalho<br \/>\n\u2022 Exponha a porta 8080, ou a porta que a aplica\u00e7\u00e3o escuta<br \/>\n\u2022 Defina o comando para executar a aplica\u00e7\u00e3o quando o container iniciar<br \/>\n4 \u2013 Constru\u00e7\u00e3o da Imagem Docker:<br \/>\n\u2022 No terminal, certifique-se de que voc\u00ea ainda est\u00e1 no diret\u00f3rio do projeto.<br \/>\n\u2022 Execute o comando abaixo para construir a imagem. Substitua seu-nome por seu nome<br \/>\nou um identificador \u00fanico.<br \/>\ndocker build -t seu-nome\/hello-app:v1 .<br \/>\n5 \u2013 Verifique se a imagem foi criada com sucesso listando as imagens locais: docker images.<br \/>\n6 \u2013 Execu\u00e7\u00e3o do Container Docker:<br \/>\n\u2022 Execute o container a partir da imagem que voc\u00ea acabou de criar:<br \/>\ndocker run -d -p 8080:8080 \u2013name minha-app seu-nome\/hello-app:v1<br \/>\n<img decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/25aa.svg\" alt=\"\u25aa\" \/>\u00a0-d: modo \u201cdetached\u201d (executa em segundo plano).<br \/>\n<img decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/25aa.svg\" alt=\"\u25aa\" \/>\u00a0-p 8080:8080: mapeia a porta 8080 da sua m\u00e1quina (host) para a porta 8080 do<br \/>\ncontainer.<br \/>\nP\u00fablico5<br \/>\n<img decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/25aa.svg\" alt=\"\u25aa\" \/>\u00a0\u2013name: atribui um nome f\u00e1cil de lembrar ao container.<br \/>\n\u2022 Verifique se o container est\u00e1 em execu\u00e7\u00e3o: docker ps.<br \/>\n\u2022 Acesse a aplica\u00e7\u00e3o no seu navegador: http:\/\/localhost:8080. Voc\u00ea deve ver a<br \/>\nmensagem \u201cHello, world!\u201d.<br \/>\n7 \u2013 Orquestrando o Container com Kubernetes (Minikube):<br \/>\n\u2022 Iniciando o Cluster Kubernetes Local (powershell):<br \/>\nminikube start<br \/>\nP\u00fablico6<br \/>\n\u2022 No terminal, inicie o Minikube. Este processo pode levar alguns minutos.<br \/>\n\u2022 Para que o Minikube utilize as imagens Docker que voc\u00ea construiu localmente sem a<br \/>\nnecessidade de um registro remoto, execute o comando em um powershell:<br \/>\nminikube docker-env | Invoke-Expression<br \/>\n\u2022 Aten\u00e7\u00e3o: Se voc\u00ea fechar este terminal, precisar\u00e1 executar este comando novamente em<br \/>\num novo terminal para que o Kubernetes encontre a imagem local.<br \/>\n8 \u2013 Cria\u00e7\u00e3o do Arquivo de Deployment:<br \/>\n\u2022 Crie um arquivo chamado deployment.yaml. Este arquivo \u201cdeclara\u201d ao Kubernetes como<br \/>\nsua aplica\u00e7\u00e3o deve ser executada.<br \/>\n\u2022 Adicione o seguinte conte\u00fado ao arquivo:<br \/>\no Defina a Implanta\u00e7\u00e3o, criando um gerenciador de aplica\u00e7\u00e3o chamado hello-appdeployment.<br \/>\no Especifique o N\u00famero de R\u00e9plicas, garantindo que 2 inst\u00e2ncias (Pods) da sua<br \/>\naplica\u00e7\u00e3o estejam sempre em execu\u00e7\u00e3o.<br \/>\no Crie o Modelo do Pod, definindo um \u201cmolde\u201d para as inst\u00e2ncias, rotulando cada<br \/>\numa com app: hello-app para que o Deployment saiba quais gerenciar.<br \/>\no Defina o Container, instruindo cada inst\u00e2ncia a criar um container usando a<br \/>\nimagem Docker local seu-nome\/hello-app:v1.<br \/>\no Exponha a Porta, informa ao Kubernetes que a aplica\u00e7\u00e3o dentro de cada<br \/>\ncontainer escuta na porta 8080.<br \/>\n9 \u2013 Cria\u00e7\u00e3o do Arquivo de Service:<br \/>\n\u2022 Crie um arquivo chamado service.yaml. Este arquivo ir\u00e1 expor seu Deployment para que<br \/>\nele possa ser acessado de fora do cluster.<br \/>\n\u2022 Adicione o seguinte conte\u00fado ao arquivo:<br \/>\no Crie um Servi\u00e7o de Rede, definindo um servi\u00e7o chamado hello-app-service, que<br \/>\natuar\u00e1 como um \u201cendere\u00e7o\u201d fixo para sua aplica\u00e7\u00e3o.<br \/>\no Encontre os Pods Corretos, usando o selector para encontrar e se conectar a todos<br \/>\nos Pods que t\u00eam o r\u00f3tulo (label) app: hello-app (os que foram criados pelo seu<br \/>\nDeployment).<br \/>\nP\u00fablico7<br \/>\no Mapeie as Portas, recebendo tr\u00e1fego na porta 8080 e o redirecionando para a<br \/>\ntargetPort (porta de destino) 8080 dos containers dentro dos Pods.<br \/>\no Exponha a Aplica\u00e7\u00e3o para Fora, atrav\u00e9s do type: NodePort, ele tornar\u00e1 a aplica\u00e7\u00e3o<br \/>\nacess\u00edvel externamente, em uma porta espec\u00edfica em cada n\u00f3 (computador) do<br \/>\ncluster.<br \/>\n10 \u2013 Aplicando os Manifestos no Cluster:<br \/>\n\u2022 Use o kubectl para aplicar os arquivos de configura\u00e7\u00e3o ao seu cluster Minikube:<br \/>\nkubectl apply -f deployment.yaml<br \/>\nkubectl apply -f service.yaml<br \/>\n11 \u2013 Criando a imagem agora dentro do kubernets:<br \/>\ndocker build -t elisa\/hello-app:v1 .<br \/>\n12 \u2013 Verificando e Acessando a Aplica\u00e7\u00e3o no Kubernetes:<br \/>\n\u2022 Verifique se os Pods (inst\u00e2ncias da aplica\u00e7\u00e3o) est\u00e3o rodando: kubectl get pods. Voc\u00ea<br \/>\ndever\u00e1 ver 2 pods com o status \u201cRunning\u201d.<br \/>\n\u2022 Verifique se o Service foi criado: kubectl get services.<br \/>\nminikube service hello-app-service<br \/>\nP\u00fablico8<br \/>\n\u2022 Este comando dever\u00e1 abrir automaticamente a aplica\u00e7\u00e3o no seu navegador. Note<br \/>\nque a URL ser\u00e1 diferente de localhost.<br \/>\nAvaliando os resultados:<br \/>\nDurante esta pr\u00e1tica, voc\u00ea executou o processo completo de empacotar uma aplica\u00e7\u00e3o com<br \/>\nDocker e, em seguida, implant\u00e1-la em um ambiente orquestrado com Kubernetes. \u00c9 importante<br \/>\nrefletir sobre a evolu\u00e7\u00e3o entre essas duas etapas, analisando os novos conceitos e as vantagens<br \/>\nque surgiram.<br \/>\nAgora, sua atividade \u00e9:<br \/>\n1. Descrever, com suas pr\u00f3prias palavras, quais foram os desafios encontrados e o que<br \/>\naprendeu ao realizar a transi\u00e7\u00e3o da execu\u00e7\u00e3o de um container local com Docker para uma<br \/>\nimplanta\u00e7\u00e3o orquestrada com Kubernetes.<br \/>\n2 \u2013 Utilize esta tabela para organizar os passos realizados e adicionar capturas de tela<br \/>\n(contendo data e hor\u00e1rio do rel\u00f3gio do computador na captura de tela):<br \/>\nPasso a Passo Realizado Print Correspondente<br \/>\nArquivo Dockerfile criado na raiz do projeto. [Insira o Print]<br \/>\nResultado do comando docker images<br \/>\nmostrando a imagem seu-nome\/hello-app:v1.<br \/>\n[Insira o Print]<br \/>\nResultado do comando docker ps mostrando o<br \/>\ncontainer minha-app em execu\u00e7\u00e3o.<br \/>\n[Insira o Print]<br \/>\nAplica\u00e7\u00e3o acess\u00edvel em http:\/\/localhost:8080<br \/>\n(fase Docker).<br \/>\n[Insira o Print]<br \/>\nCluster Minikube em execu\u00e7\u00e3o (sa\u00edda do<br \/>\ncomando minikube status).<br \/>\n[Insira o Print]<br \/>\nChecklist:<br \/>\n\u2713 Preparar o Ambiente: Instalar o Git Bash, Docker Desktop e o Minikube.<br \/>\nP\u00fablico9<br \/>\n\u2713 Containerizar a Aplica\u00e7\u00e3o: Criar o Dockerfile para definir a imagem da sua aplica\u00e7\u00e3o.<br \/>\n\u2713 Construir e Rodar com Docker: Usar o comando docker build para criar a imagem e<br \/>\ndocker run para execut\u00e1-la localmente.<br \/>\n\u2713 Iniciar o Cluster Kubernetes: Subir seu ambiente Kubernetes local com o comando<br \/>\nminikube start.<br \/>\n\u2713 Definir a Implanta\u00e7\u00e3o: Criar os arquivos deployment.yaml e service.yaml para descrever<br \/>\ncomo a aplica\u00e7\u00e3o deve rodar no Kubernetes.<br \/>\n\u2713 Implantar e Acessar no Kubernetes: Aplicar os arquivos .yaml com kubectl apply e<br \/>\nacessar sua aplica\u00e7\u00e3o com minikube service.<br \/>\nRESULTADOS<br \/>\nResultados do experimento:<br \/>\nO aluno dever\u00e1 submeter um relat\u00f3rio t\u00e9cnico conciso EM PDF contendo:<br \/>\n1. Capturas de tela (prints) para cada item do Checklist de Execu\u00e7\u00e3o, evidenciando a<br \/>\nexecu\u00e7\u00e3o bem-sucedida dos comandos e o acesso \u00e0s aplica\u00e7\u00f5es.<br \/>\n2. O conte\u00fado final dos arquivos Dockerfile, deployment.yaml e service.yaml criados.<br \/>\n3. Um breve par\u00e1grafo (de 5 a 10 linhas) com suas pr\u00f3prias palavras, descrevendo os<br \/>\ndesafios encontrados e o que aprendeu ao realizar a transi\u00e7\u00e3o da execu\u00e7\u00e3o de um<br \/>\ncontainer local com Docker para uma implanta\u00e7\u00e3o orquestrada com Kubernetes.<br \/>\n4. O material deve ser compilado em um \u00fanico arquivo PDF.<br \/>\nResultados de Aprendizagem:<br \/>\nAp\u00f3s concluir esta atividade, voc\u00ea ter\u00e1 aprendido:<br \/>\n\u2022 A diferen\u00e7a fundamental entre empacotar uma aplica\u00e7\u00e3o em uma imagem (Docker) e<br \/>\nexecutar\/gerenciar m\u00faltiplas inst\u00e2ncias dessa imagem em um ambiente orquestrado<br \/>\n(Kubernetes). Entender\u00e1 a rela\u00e7\u00e3o entre Imagem, Container, Pod, Deployment e Service.<br \/>\n\u2022 Comandos do Docker (build, run, ps, images) e do kubectl (apply, get pods, get services,<br \/>\nversion), al\u00e9m de aprender a estrutura b\u00e1sica de arquivos de manifesto declarativos do<br \/>\nKubernetes.<br \/>\nP\u00fablico<br \/>\nINFRAESTRUTURA COMO CODIGO<br \/>\nRoteiro<br \/>\nAula Pr\u00e1tica<br \/>\nP\u00fablico2<br \/>\nROTEIRO DE AULA PR\u00c1TICA<br \/>\nNOME DA DISCIPLINA: INFRAESTRUTURA COMO CODIGO<br \/>\nUnidade: U3_GERENCIAMENTO DE INFRAESTRUTURAS COMO C\u00d3DIGO<br \/>\nAula: A11_Gerenciamento reposit\u00f3rios com GitHub e GitLab<br \/>\nOBJETIVOS<br \/>\nDefini\u00e7\u00e3o dos objetivos da aula pr\u00e1tica:<br \/>\nO objetivo desta aula pr\u00e1tica \u00e9 compreender os fundamentos da automatiza\u00e7\u00e3o do versionamento<br \/>\nem projetos de software; implementar pr\u00e1ticas de versionamento autom\u00e1tico utilizando<br \/>\nferramentas de Integra\u00e7\u00e3o Cont\u00ednua e Entrega Cont\u00ednua (CI\/CD) e integrar versionamento com<br \/>\npipelines de CI\/CD para otimizar processos de desenvolvimento e entrega.<br \/>\nSOLU\u00c7\u00c3O DIGITAL:<br \/>\nGitBash<br \/>\n\u2022 Computador com sistema operacional Windows\/Linux\/MacOS;<br \/>\n\u2022 Conta no GitHub ou GitLab;<br \/>\n\u2022 Git instalado: https:\/\/git-scm.com\/downloads<br \/>\n\u2022 Ferramenta CI\/CD: GitHub Actions ou GitLab CI.<br \/>\nPROCEDIMENTOS PR\u00c1TICOS E APLICA\u00c7\u00d5ES<br \/>\nProcedimento\/Atividade n\u00ba 1<br \/>\nAUTOMATIZANDO SUA PIPELINE<br \/>\nAtividade proposta: Nesta atividade pr\u00e1tica, o estudante ir\u00e1 configurar um projeto para<br \/>\nautomatizar o versionamento utilizando pipelines CI\/CD. A vers\u00e3o do software ser\u00e1<br \/>\nautomaticamente incrementada ao realizar commits, e o c\u00f3digo ser\u00e1 automaticamente<br \/>\nconstru\u00eddo e testado a cada push realizado no reposit\u00f3rio.<br \/>\nProcedimentos para a realiza\u00e7\u00e3o da atividade:<br \/>\nP\u00fablico3<br \/>\n1- Configura\u00e7\u00e3o inicial<br \/>\n\u2022 Crie um reposit\u00f3rio no GitHub\/GitLab com o nome auto-version-ci-cd.<br \/>\n\u2022 Clone o reposit\u00f3rio localmente: git clone\u00a0.<br \/>\n2- Prepara\u00e7\u00e3o do projeto<br \/>\n\u2022 Crie um arquivo inicial chamado version.txt com o conte\u00fado: v0.0.1.<br \/>\n\u2022 Adicione o arquivo ao Git e fa\u00e7a o primeiro commit inicial.<br \/>\n3- Automatiza\u00e7\u00e3o do versionamento com CI\/CD<br \/>\n\u2022 No reposit\u00f3rio, crie um diret\u00f3rio .github\/workflows (GitHub) ou .gitlab-ci.yml (GitLab).<br \/>\n\u2022 Adicione um arquivo de workflow (por exemplo, versioning.yml) para automatizar a<br \/>\nleitura, incremento e commit da vers\u00e3o.<br \/>\n\u2022 Crie este arquivo (versioning.yml), da seguinte forma:<br \/>\no Quando um commit \u00e9 enviado para a branch main, a automa\u00e7\u00e3o \u00e9 acionada<br \/>\nautomaticamente.<br \/>\no O workflow roda em uma m\u00e1quina virtual Ubuntu fornecida pelo GitHub Actions.<br \/>\no O script verifica o conte\u00fado do arquivo chamado version.txt, que cont\u00e9m a vers\u00e3o<br \/>\natual do projeto (por exemplo, v0.0.1).<br \/>\no Em seguida, ele quebra o n\u00famero de vers\u00e3o em partes separadas por pontos (.),<br \/>\nincrementa a \u00faltima parte da vers\u00e3o em uma unidade, e salva o novo valor no<br \/>\narquivo version.txt. Por exemplo, se a vers\u00e3o atual \u00e9 v0.0.1, ap\u00f3s o incremento<br \/>\nser\u00e1 v0.0.2.<br \/>\no O workflow ent\u00e3o realiza um commit autom\u00e1tico deste arquivo modificado<br \/>\n(version.txt) diretamente no reposit\u00f3rio, usando o usu\u00e1rio \u201cCI Bot\u201d.<br \/>\no Finalmente, ele faz um push da nova vers\u00e3o incrementada novamente para a<br \/>\nbranch main.<br \/>\n4 \u2013 Execu\u00e7\u00e3o e Testes<br \/>\n\u2022 Realize altera\u00e7\u00f5es e commits no projeto e verifique se a vers\u00e3o \u00e9 automaticamente<br \/>\nincrementada pelo pipeline. Por exemplo, altere o arquivo README.md.<br \/>\nP\u00fablico4<br \/>\nAvaliando os resultados:<br \/>\nDurante esta pr\u00e1tica, voc\u00ea executou o processo automatiza\u00e7\u00e3o de uma pipeline.<br \/>\nAgora, sua atividade \u00e9:<br \/>\n1. Explicar com suas palavras como a automatiza\u00e7\u00e3o do versionamento com CI\/CD pode<br \/>\nbeneficiar a colabora\u00e7\u00e3o em projetos de software.<br \/>\n2 \u2013 Utilizar esta tabela para organizar os passos realizados e adicionar capturas de tela<br \/>\n(contendo data e hor\u00e1rio do rel\u00f3gio do computador na captura de tela):<br \/>\nPasso a Passo Realizado Print Correspondente<br \/>\nReposit\u00f3rio criado [Insira o Print]<br \/>\nReposit\u00f3rio clonado. [Insira o Print]<br \/>\nArquivo version.txt e workflow\/versioning.yml<br \/>\ncriados e commitados<br \/>\n[Insira o Print]<br \/>\nExecu\u00e7\u00e3o da pipeline; [Insira o Print]<br \/>\nP\u00fablico5<br \/>\nIncremento autom\u00e1tico da vers\u00e3o funcionando<br \/>\ncorretamente.<br \/>\n[Insira o Print]<br \/>\nChecklist:<br \/>\n\u2713 Preparar o Ambiente: Instalar o Git Bash.<br \/>\n\u2713 Reposit\u00f3rio criado e clonado com sucesso.<br \/>\n\u2713 Arquivo version.txt criado e commit inicial realizado corretamente.<br \/>\n\u2713 Arquivo de workflow criado na pasta .github\/workflows\/versioning.yml.<br \/>\n\u2713 Workflow configurado corretamente conforme instru\u00e7\u00f5es fornecidas.<br \/>\n\u2713 Commit realizado diretamente via interface web do GitHub\/GitLab.<br \/>\n\u2713 Incremento autom\u00e1tico de vers\u00e3o funcionando corretamente ap\u00f3s commits e push no<br \/>\nreposit\u00f3rio.<br \/>\n\u2713 Captura de tela do pipeline em execu\u00e7\u00e3o adicionada ao relat\u00f3rio.<br \/>\n\u2713 Breve relat\u00f3rio contendo reflex\u00e3o entregue corretamente.<br \/>\nRESULTADOS<br \/>\nResultados do experimento:<br \/>\nO aluno dever\u00e1 submeter um relat\u00f3rio t\u00e9cnico conciso EM PDF contendo:<br \/>\n1. Capturas de tela (prints) para cada item do Checklist de Execu\u00e7\u00e3o, evidenciando a<br \/>\nexecu\u00e7\u00e3o bem-sucedida dos comandos e o acesso \u00e0s aplica\u00e7\u00f5es.<br \/>\n2. URL do reposit\u00f3rio GitHub\/GitLab com hist\u00f3rico claro de commits e execu\u00e7\u00e3o do pipeline<br \/>\n(do passo anterior);<br \/>\n3. Breve relat\u00f3rio descrevendo o que foi questionado para reflex\u00e3o.<br \/>\nResultados de Aprendizagem:<br \/>\nAp\u00f3s concluir esta atividade, voc\u00ea ter\u00e1 aprendido:<br \/>\n\u2022 Implementa\u00e7\u00e3o de pipelines CI\/CD;<br \/>\n\u2022 Automatiza\u00e7\u00e3o do versionamento e incremento autom\u00e1tico de vers\u00f5es;<br \/>\n\u2022 Melhor compreens\u00e3o do fluxo de versionamento automatizado integrado ao processo de<br \/>\ndesenvolvimento cont\u00ednuo.<br \/>\nP\u00fablico<br \/>\nINFRAESTRUTURA COMO CODIGO<br \/>\nRoteiro<br \/>\nAula Pr\u00e1tica<br \/>\nP\u00fablico2<br \/>\nROTEIRO DE AULA PR\u00c1TICA<br \/>\nNOME DA DISCIPLINA: INFRAESTRUTURA COMO CODIGO<br \/>\nUnidade: U4_ DESENVOLVIMENTO SEGURO<br \/>\nAula: A15_ Melhoria cont\u00ednua com automa\u00e7\u00e3o segura<br \/>\nOBJETIVOS<br \/>\nDefini\u00e7\u00e3o dos objetivos da aula pr\u00e1tica:<br \/>\nOs objetivos desta aula pr\u00e1tica s\u00e3o:<br \/>\n<img decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/25aa.svg\" alt=\"\u25aa\" \/>\u00a0Compreender conceitos de monitoramento com Prometheus e Grafana.<br \/>\n<img decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/25aa.svg\" alt=\"\u25aa\" \/>\u00a0Realizar configura\u00e7\u00e3o b\u00e1sica de monitoramento utilizando Prometheus.<br \/>\n<img decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/25aa.svg\" alt=\"\u25aa\" \/>\u00a0Criar dashboards e visualizar dados utilizando Grafana.<br \/>\n<img decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/25aa.svg\" alt=\"\u25aa\" \/>\u00a0Configurar alertas para automa\u00e7\u00e3o de respostas simples.<br \/>\nSOLU\u00c7\u00c3O DIGITAL:<br \/>\nDocker.<br \/>\n\u2022 Computador com pelo menos 4GB de RAM.<br \/>\n\u2022 Sistema operacional Linux ou Windows com Docker instalado.<br \/>\n\u2022 Navegador de internet atualizado.<br \/>\nPROCEDIMENTOS PR\u00c1TICOS E APLICA\u00c7\u00d5ES<br \/>\nProcedimento\/Atividade n\u00ba 1<br \/>\nMONITORANDO COM GRAFANA<br \/>\nAtividade proposta: O estudante ir\u00e1 realizar uma configura\u00e7\u00e3o b\u00e1sica de monitoramento<br \/>\nusando Prometheus para coletar m\u00e9tricas de um servi\u00e7o simples e Grafana para visualiz\u00e1-las<br \/>\nem tempo real. Al\u00e9m disso, ir\u00e1 configurar um alerta simples para notifica\u00e7\u00e3o quando uma<br \/>\nm\u00e9trica ultrapassar determinado limite.<br \/>\nProcedimentos para a realiza\u00e7\u00e3o da atividade:<br \/>\n1- Prepara\u00e7\u00e3o do ambiente<br \/>\n<img decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/25aa.svg\" alt=\"\u25aa\" \/>\u00a0Baixe e instale o Docker (https:\/\/docs.docker.com\/get-docker\/).<br \/>\n<img decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/25aa.svg\" alt=\"\u25aa\" \/>\u00a0Verifique a instala\u00e7\u00e3o com o comando:<br \/>\nP\u00fablico3<br \/>\ndocker \u2013version<br \/>\n2 \u2013 Configura\u00e7\u00e3o do Prometheus<br \/>\n<img decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/25aa.svg\" alt=\"\u25aa\" \/>\u00a0Crie uma pasta no seu computador chamada monitoramento;<br \/>\n<img decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/25aa.svg\" alt=\"\u25aa\" \/>\u00a0Dentro desta pasta, crie um arquivo de texto chamado prometheus.yml, contendo:<br \/>\no Defini\u00e7\u00e3o do intervalo padr\u00e3o de coleta de m\u00e9tricas (\u201cscrape\u201d) para todos os jobs.<br \/>\nAqui, o Prometheus ir\u00e1 buscar novos dados a cada 15 segundos.<br \/>\no Defini\u00e7\u00e3o da lista de \u201cjobs\u201d que o Prometheus vai monitorar. Cada job agrupa um<br \/>\nou mais alvos (\u201ctargets\u201d) de onde ele buscar\u00e1 m\u00e9tricas.<br \/>\n<img decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/25aa.svg\" alt=\"\u25aa\" \/>\u00a0Salve o arquivo.<br \/>\n<img decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/25aa.svg\" alt=\"\u25aa\" \/>\u00a0Abra um terminal (powershell) dentro da pasta que voc\u00ea criou (monitoramento).<br \/>\n<img decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/25aa.svg\" alt=\"\u25aa\" \/>\u00a0Execute o comando abaixo para iniciar o Prometheus:<br \/>\ndocker run -d -p 9090:9090 -v<br \/>\n${PWD}prometheus.yml:\/etc\/prometheus\/prometheus.yml prom\/prometheus<br \/>\n<img decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/25aa.svg\" alt=\"\u25aa\" \/>\u00a0Abra o navegador e acesse: http:\/\/localhost:9090. Verifique se est\u00e1 funcionando.<br \/>\n3 \u2013 Ainda no terminal, dentro da mesma pasta, digite o comando:<br \/>\nP\u00fablico4<br \/>\ndocker run -d -p 3000:3000 grafana\/Grafana<br \/>\n<img decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/25aa.svg\" alt=\"\u25aa\" \/>\u00a0Abra o navegador e acesse: http:\/\/localhost:3000.<br \/>\n<img decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/25aa.svg\" alt=\"\u25aa\" \/>\u00a0Use as credenciais padr\u00e3o para login:<br \/>\no Usu\u00e1rio: admin<br \/>\no Senha: admin<br \/>\n4 \u2013 Adicionando o Prometheus como Data Source no Grafana<br \/>\n<img decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/25aa.svg\" alt=\"\u25aa\" \/>\u00a0No Grafana, v\u00e1 ao menu lateral esquerdo e clique em Connections &gt; Data sources.<br \/>\n<img decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/25aa.svg\" alt=\"\u25aa\" \/>\u00a0Clique em \u201cAdd data source\u201d.<br \/>\n<img decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/25aa.svg\" alt=\"\u25aa\" \/>\u00a0Selecione Prometheus.<br \/>\n<img decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/25aa.svg\" alt=\"\u25aa\" \/>\u00a0No campo URL digite: http:\/\/host.docker.internal:9090 (ou http:\/\/localhost:9090 se estiver<br \/>\nno Linux).<br \/>\n<img decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/25aa.svg\" alt=\"\u25aa\" \/>\u00a0Clique em \u201cSave &amp; Test\u201d para verificar se o Grafana conectou ao Prometheus<br \/>\ncorretamente.<br \/>\nP\u00fablico5<br \/>\n5 \u2013 Cria\u00e7\u00e3o do Dashboard no Grafana<br \/>\n<img decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/25aa.svg\" alt=\"\u25aa\" \/>\u00a0Clique em \u201d Dashboard \u201d (menu lateral esquerdo).<br \/>\n<img decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/25aa.svg\" alt=\"\u25aa\" \/>\u00a0Clique em \u201cAdd new panel\u201d.<br \/>\n<img decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/25aa.svg\" alt=\"\u25aa\" \/>\u00a0Seleciona o Prometheus.<br \/>\n<img decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/25aa.svg\" alt=\"\u25aa\" \/>\u00a0No campo Metrics browser selecione alguma m\u00e9trica como exemplo:<br \/>\n100 \u2013 (avg by (instance)(irate(node_cpu_seconds_total{mode=\u201didle\u201d}[5m])) * 100)<br \/>\n<img decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/25aa.svg\" alt=\"\u25aa\" \/>\u00a0Clique em Save Dashboard (no topo ao lado direito) para adicionar o painel.<br \/>\n6 \u2013 Configura\u00e7\u00e3o de Alertas<br \/>\n<img decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/25aa.svg\" alt=\"\u25aa\" \/>\u00a0Ainda no painel criado, clique em Edit.<br \/>\n<img decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/25aa.svg\" alt=\"\u25aa\" \/>\u00a0V\u00e1 at\u00e9 a aba Alert.<br \/>\nP\u00fablico6<br \/>\n<img decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/25aa.svg\" alt=\"\u25aa\" \/>\u00a0Clique em New alert rule.<br \/>\n<img decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/25aa.svg\" alt=\"\u25aa\" \/>\u00a0Configure um alerta simples, por exemplo:<br \/>\no Condi\u00e7\u00e3o: Quando a m\u00e9trica exceder um valor definido (ex.: 80% de uso de<br \/>\nCPU).<br \/>\n<img decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/25aa.svg\" alt=\"\u25aa\" \/>\u00a0Crie e configure as etapas obrigat\u00f3rias.<br \/>\n<img decoding=\"async\" class=\"emoji\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/25aa.svg\" alt=\"\u25aa\" \/>\u00a0Salve e aplique o alerta.<br \/>\nAvaliando os resultados:<br \/>\nDurante esta pr\u00e1tica, voc\u00ea executou o processo de configura\u00e7\u00e3o b\u00e1sica para monitoramento<br \/>\nusando Prometheus e Grafana para visualiza\u00e7\u00e3o em dashboards.<br \/>\nAgora, sua atividade \u00e9:<br \/>\n1. Explique, em suas pr\u00f3prias palavras, qual \u00e9 o papel do Prometheus e qual \u00e9 o papel do<br \/>\nGrafana no processo de monitoramento realizado nesta atividade pr\u00e1tica. Em seguida,<br \/>\ndescreva brevemente como voc\u00ea configurou e testou o alerta no Grafana.<br \/>\n2 \u2013 Utilizar esta tabela para organizar os passos realizados e adicionar capturas de tela<br \/>\n(contendo data e hor\u00e1rio do rel\u00f3gio do computador na captura de tela):<br \/>\nPasso a Passo Realizado Print Correspondente<br \/>\nPrometheus executando corretamente. [Insira o Print]<br \/>\nGrafana executando corretamente. [Insira o Print]<br \/>\nData source criado com uma m\u00e9trica b\u00e1sica. [Insira o Print]<br \/>\nAlerta configurado. [Insira o Print]<br \/>\nP\u00fablico7<br \/>\nChecklist:<br \/>\n\u2713 Docker instalado e verificado;<br \/>\n\u2713 Arquivo prometheus.yml criado na pasta correta;<br \/>\n\u2713 Prometheus executando corretamente;<br \/>\n\u2713 Grafana executando corretamente;<br \/>\n\u2713 Data source configurado e testado no Grafana;<br \/>\n\u2713 Dashboard criado com uma m\u00e9trica b\u00e1sica;<br \/>\n\u2713 Alerta configurado e funcional.<br \/>\n\u2713 Breve relat\u00f3rio contendo reflex\u00e3o entregue corretamente.<br \/>\nRESULTADOS<br \/>\nResultados do experimento:<br \/>\nO aluno dever\u00e1 submeter um relat\u00f3rio t\u00e9cnico conciso EM PDF contendo:<br \/>\n1. Capturas de tela (prints) para cada item do Checklist de Execu\u00e7\u00e3o, evidenciando a<br \/>\nexecu\u00e7\u00e3o bem-sucedida dos comandos e o acesso \u00e0s aplica\u00e7\u00f5es.<br \/>\n2. Um relat\u00f3rio breve (com ascapturas de tela das etapas realizadas \u2013 dashboard<br \/>\nfuncionando, configura\u00e7\u00e3o de alerta), e a resposta da quest\u00e3o de reflex\u00e3o proposta.<br \/>\nResultados de Aprendizagem:<br \/>\nAp\u00f3s concluir esta atividade, voc\u00ea ter\u00e1 aprendido:<br \/>\n\u2022 A configurar ambientes b\u00e1sicos de monitoramento.<br \/>\n\u2022 A criar e interpretar dashboards.<br \/>\n\u2022 A configura\u00e7\u00e3o de alertas simples<\/p>\n<p>Aula Pr\u00e1tica Infraestrutura como C\u00f3digo (3 Atividades)<\/p>\n<div class=\"elementor-toggle-item\">\n<p id=\"elementor-tab-title-1941\" class=\"elementor-tab-title elementor-active\" tabindex=\"0\" role=\"tab\" data-tab=\"1\" aria-controls=\"elementor-tab-content-1941\" aria-expanded=\"true\" aria-selected=\"true\"><strong>Como funciona?<\/strong><\/p>\n<p>Elaboramos os portf\u00f3lios, j\u00e1 deixamos prontos, nas normas da ABNT e conforme os requisitos da universidade. F\u00e1cil assim! O MELHOR \u00c9 QUE VOC\u00ca COMPRA E J\u00c1 BAIXA NA HORA O SEU ARQUIVO EM WORD! Sabemos que conciliar trabalho, fam\u00edlia, vida profissional e estudos \u00e9 dif\u00edcil hoje em dia, por isso, estamos aqui para ajudar voc\u00ea. Conte com nossa qualidade, experi\u00eancia e profissionalismo adquirindo seu portf\u00f3lio conosco. GARANTIMOS SEU CONCEITO!<\/p>\n<p><strong>Como se realizam os envios?<\/strong><\/p>\n<\/div>\n<p id=\"elementor-tab-content-1942\" class=\"elementor-tab-content elementor-clearfix elementor-active\" role=\"tabpanel\" data-tab=\"2\" aria-labelledby=\"elementor-tab-title-1942\">O seu trabalho \u00e9 disponibilizado pronto, respondido e nas normas j\u00e1 na mesma hora aqui em nosso site na sua \u00e1rea de downloads e tamb\u00e9m no seu e-mail.<\/p>\n<p><strong>Em quanto tempo recebo o portf\u00f3lio?<\/strong><\/p>\n<p>Os envios s\u00e3o imediatos. Ap\u00f3s sua compra, o trabalho j\u00e1 \u00e9 disponibilizado instantaneamente aqui em nosso site e no seu e-mail.<\/p>\n<p><strong>E se o portf\u00f3lio que comprei precisar de corre\u00e7\u00e3o?<\/strong><\/p>\n<p>Caso haja alguma solicita\u00e7\u00e3o de corre\u00e7\u00e3o\/altera\u00e7\u00e3o por parte do tutor, basta entrar em contato conosco pelo\u00a0WhatsApp\u00a0que provid\u00eanciaremos sem custo algum.<\/p>\n<p><strong>Qual o formato do arquivo?<\/strong><\/p>\n<p>Os arquivos s\u00e3o enviados em formato Word e s\u00e3o edit\u00e1veis.<\/p>\n<p><strong>Caso eu tiver alguma d\u00favida, terei suporte no p\u00f3s venda?<\/strong><\/p>\n<p>Sim, com certeza. Basta clicar no \u00edcone do WhatsApp no cantinho da tela. Ser\u00e1 um prazer atend\u00ea-lo(a).<\/p>\n<div id=\"elementor-tab-content-1948\" class=\"elementor-tab-content elementor-clearfix elementor-active\" role=\"tabpanel\" data-tab=\"8\" aria-labelledby=\"elementor-tab-title-1948\">\n<p><strong>Quais os seus canais de contato?<\/strong><\/p>\n<\/div>\n<div id=\"elementor-tab-content-1949\" class=\"elementor-tab-content elementor-clearfix elementor-active\" role=\"tabpanel\" data-tab=\"9\" aria-labelledby=\"elementor-tab-title-1949\">\n<p>Whatsapp: 53 984751621 \u2013 Clicar no canto da tela ou ESCANEIE O QRCODE ABAIXO<\/p>\n<h4><img decoding=\"async\" class=\"alignnone wp-image-13699 jetpack-lazy-image jetpack-lazy-image--handled\" src=\"https:\/\/i0.wp.com\/portifolioos-prontos.com\/wp-content\/uploads\/2023\/02\/whatsapp-business-projeto-de-extensao-300x300.jpeg?resize=144%2C144\" sizes=\"(max-width: 144px) 100vw, 144px\" srcset=\"https:\/\/i0.wp.com\/portifolioos-prontos.com\/wp-content\/uploads\/2023\/02\/whatsapp-business-projeto-de-extensao.jpeg?resize=300%2C301&amp;ssl=1 300w, https:\/\/i0.wp.com\/portifolioos-prontos.com\/wp-content\/uploads\/2023\/02\/whatsapp-business-projeto-de-extensao.jpeg?resize=150%2C150&amp;ssl=1 150w, https:\/\/i0.wp.com\/portifolioos-prontos.com\/wp-content\/uploads\/2023\/02\/whatsapp-business-projeto-de-extensao.jpeg?resize=370%2C372&amp;ssl=1 370w, https:\/\/i0.wp.com\/portifolioos-prontos.com\/wp-content\/uploads\/2023\/02\/whatsapp-business-projeto-de-extensao.jpeg?resize=100%2C100&amp;ssl=1 100w, https:\/\/i0.wp.com\/portifolioos-prontos.com\/wp-content\/uploads\/2023\/02\/whatsapp-business-projeto-de-extensao.jpeg?w=470&amp;ssl=1 470w\" alt=\"projeto de extens\u00e3o unopar\" width=\"144\" height=\"144\" data-lazy-loaded=\"1\" \/><\/h4>\n<\/div>\n<div class=\"elementor-toggle-item\">\n<div id=\"elementor-tab-content-1949\" class=\"elementor-tab-content elementor-clearfix elementor-active\" role=\"tabpanel\" data-tab=\"9\" aria-labelledby=\"elementor-tab-title-1949\">\n<p>E-mail:portifoliosp@gmail.com<\/p>\n<div id=\"attachment_143\" class=\"wp-caption alignnone\">\n<div id=\"attachment_143\" class=\"wp-caption alignnone\">\n<p id=\"caption-attachment-143\" class=\"wp-caption-text\"><a href=\"http:\/\/portfolio-pronto.com\/\">Portf\u00f3lio<\/a>\u00a0em Word, respondido, completo e j\u00e1 nas normas<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Aula Pr\u00e1tica Infraestrutura como C\u00f3digo (3 Atividades) ROTEIRO DE AULA PR\u00c1TICA NOME DA DISCIPLINA: INFRAESTRUTURA COMO CODIGO Unidade: U2_FERRAMENTAS INFRAESTRUTURA COMO C\u00d3DIGO Aula: A5_Utiliza\u00e7\u00e3o da computa\u00e7\u00e3o em nuvem e container OBJETIVOS Defini\u00e7\u00e3o dos objetivos da aula pr\u00e1tica: O objetivo desta aula pr\u00e1tica \u00e9 compreender os conceitos de containers, identificando suas diferen\u00e7as em rela\u00e7\u00e3o \u00e0s m\u00e1quinas&hellip;<\/p>\n","protected":false},"featured_media":50343,"template":"","meta":{"_seopress_robots_primary_cat":"none","_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":""},"product_cat":[15],"product_tag":[],"class_list":{"0":"post-50340","1":"product","2":"type-product","3":"status-publish","4":"has-post-thumbnail","6":"product_cat-uncategorized","8":"first","9":"instock","10":"shipping-taxable","11":"purchasable","12":"product-type-simple","13":"col-xs-6 col-sm-4","14":"col-mf-5","15":"un-5-cols"},"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/portifolioos-prontos.com\/index.php\/wp-json\/wp\/v2\/product\/50340","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/portifolioos-prontos.com\/index.php\/wp-json\/wp\/v2\/product"}],"about":[{"href":"https:\/\/portifolioos-prontos.com\/index.php\/wp-json\/wp\/v2\/types\/product"}],"version-history":[{"count":1,"href":"https:\/\/portifolioos-prontos.com\/index.php\/wp-json\/wp\/v2\/product\/50340\/revisions"}],"predecessor-version":[{"id":50344,"href":"https:\/\/portifolioos-prontos.com\/index.php\/wp-json\/wp\/v2\/product\/50340\/revisions\/50344"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/portifolioos-prontos.com\/index.php\/wp-json\/wp\/v2\/media\/50343"}],"wp:attachment":[{"href":"https:\/\/portifolioos-prontos.com\/index.php\/wp-json\/wp\/v2\/media?parent=50340"}],"wp:term":[{"taxonomy":"product_cat","embeddable":true,"href":"https:\/\/portifolioos-prontos.com\/index.php\/wp-json\/wp\/v2\/product_cat?post=50340"},{"taxonomy":"product_tag","embeddable":true,"href":"https:\/\/portifolioos-prontos.com\/index.php\/wp-json\/wp\/v2\/product_tag?post=50340"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}