{"id":87467,"date":"2020-07-08T13:42:11","date_gmt":"2020-07-08T11:42:11","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn"},"modified":"2020-07-08T13:42:11","modified_gmt":"2020-07-08T11:42:11","slug":"rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn","title":{"rendered":"Guia para iniciantes: como criar um pipeline DevOps","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Se voc\u00ea \u00e9 novo em DevOps, consulte este guia para criar seu primeiro pipeline em cinco etapas.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Guia para iniciantes: como criar um pipeline DevOps\" src=\"\/wp-content\/uploads\/2020\/07\/605ed7d81323d0b5e094f7f912f8c669.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>DevOps tornou-se a solu\u00e7\u00e3o padr\u00e3o para corrigir processos de desenvolvimento de software lentos, fragmentados ou n\u00e3o funcionais. O problema \u00e9 que, se voc\u00ea \u00e9 novo em DevOps e n\u00e3o sabe por onde come\u00e7ar, pode faltar compreens\u00e3o sobre esses m\u00e9todos. Este artigo abordar\u00e1 a defini\u00e7\u00e3o de um pipeline DevOps e fornecer\u00e1 um guia para sua cria\u00e7\u00e3o em cinco etapas. Embora este tutorial n\u00e3o seja abrangente, ele deve fornecer uma base para que voc\u00ea comece sua jornada e expanda seu conhecimento no futuro. Mas vamos come\u00e7ar com uma hist\u00f3ria.<\/p>\n<h3>Minha jornada em DevOps<\/h3>\n<p>\nAntes, eu trabalhava na equipe de nuvem da Citi Group, desenvolvendo um aplicativo web Infrastructure-as-a-Service (IaaS) para gerenciar a infraestrutura em nuvem da Citi, mas sempre me interessei em como tornar o processo de desenvolvimento mais eficiente e trazer mudan\u00e7as culturais positivas para a equipe de desenvolvedores. A resposta eu encontrei em um livro recomendado por Greg Lavender, diretor t\u00e9cnico de arquitetura em nuvem e infraestrutura da Citi. O livro se chamava \"Projeto F\u00eanix\" (<noindex><a rel=\"nofollow\" href=\"https:\/\/www.amazon.com\/dp\/B078Y98RG8\/\">The Phoenix Project<\/a><\/noindex>), e nele s\u00e3o explicados os princ\u00edpios do DevOps, sendo lido como um romance.<\/p>\n<p>A tabela no verso do livro mostra com que frequ\u00eancia diferentes empresas implantam seus sistemas em ambientes para o lan\u00e7amento de vers\u00f5es:<\/p>\n<p>Amazon: 23.000 por dia<br \/>\nGoogle: 5.500 por dia<br \/>\nNetflix: 500 por dia<br \/>\nFacebook: Uma vez por dia<br \/>\nTwitter: 3 vezes por semana<br \/>\nUma empresa t\u00edpica: Uma vez a cada 9 meses<\/p>\n<p>Como s\u00e3o poss\u00edveis as frequ\u00eancias da Amazon, Google e Netflix? Tudo porque essas empresas descobriram como implementar um pipeline DevOps quase perfeito.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nEst\u00e1vamos longe disso at\u00e9 implementarmos o DevOps no Citi. Naquela \u00e9poca, minha equipe tinha diferentes ambientes, mas a implanta\u00e7\u00e3o no servidor de desenvolvimento era completamente manual. Todos os desenvolvedores tinham acesso apenas a um servidor de desenvolvimento baseado no IBM WebSphere Application Server Community Edition. O problema era que o servidor desligava sempre que v\u00e1rios usu\u00e1rios tentavam implantar ao mesmo tempo, ent\u00e3o os desenvolvedores precisavam se comunicar sobre suas inten\u00e7\u00f5es, o que era bastante doloroso. Al\u00e9m disso, havia problemas com a cobertura de testes de baixo n\u00edvel do c\u00f3digo, processos manuais de implanta\u00e7\u00e3o complicados e a falta de um sistema para rastrear a implanta\u00e7\u00e3o de c\u00f3digo relacionada a uma determinada tarefa ou hist\u00f3ria de usu\u00e1rio.<\/p>\n<p>Percebi que era necess\u00e1rio fazer algo e encontrei um colega com mentalidade semelhante. Decidimos colaborar na cria\u00e7\u00e3o do pipeline DevOps inicial \u2013 ele configurou uma m\u00e1quina virtual e um servidor de aplicativos Tomcat, enquanto eu trabalhava no Jenkins, integrando o Atlassian Jira e o BitBucket, al\u00e9m de melhorar a cobertura de testes de c\u00f3digo. Este projeto paralelo foi muito bem-sucedido: conseguimos quase automatizar muitos processos, alcan\u00e7amos praticamente 100% de disponibilidade do nosso servidor de desenvolvimento, garantimos rastreamento e melhoramos a cobertura de testes de c\u00f3digo, al\u00e9m de adicionar a capacidade de vincular branches no Git a tarefas no Jira ou implanta\u00e7\u00f5es. A maioria das ferramentas que usamos para construir nosso pipeline DevOps tinha c\u00f3digo aberto.<\/p>\n<p>Agora eu entendo o qu\u00e3o simples era nosso pipeline DevOps: n\u00e3o us\u00e1vamos extens\u00f5es como arquivos Jenkins ou Ansible. No entanto, esse pipeline simples funcionava bem, possivelmente devido ao princ\u00edpio de Pareto (tamb\u00e9m conhecido como regra 80\/20).<\/p>\n<h3>Uma breve introdu\u00e7\u00e3o ao DevOps e ao pipeline CI\/CD<\/h3>\n<p>\nSe voc\u00ea perguntar a v\u00e1rias pessoas: \"O que \u00e9 DevOps?\", provavelmente receber\u00e1 diferentes respostas. DevOps, assim como Agile, evoluiu para abranger v\u00e1rias disciplinas diferentes, mas a maioria das pessoas concorda em alguns pontos: DevOps \u00e9 uma pr\u00e1tica de desenvolvimento de software ou ciclo de vida de desenvolvimento de software (SDLC), cujo princ\u00edpio central \u00e9 a mudan\u00e7a na cultura em que desenvolvedores e n\u00e3o desenvolvedores coexistem em um ambiente onde:<\/p>\n<p>As opera\u00e7\u00f5es que antes eram manuais s\u00e3o automatizadas; <br \/>\nCada um faz o que sabe fazer melhor;<br \/>\nO n\u00famero de implanta\u00e7\u00f5es em um determinado per\u00edodo de tempo aumenta; A capacidade de entrega aumenta; <br \/>\nA flexibilidade do desenvolvimento \u00e9 aprimorada.<\/p>\n<p>Embora ter as ferramentas de software certas n\u00e3o seja a \u00fanica coisa necess\u00e1ria para criar um ambiente DevOps, algumas ferramentas s\u00e3o essenciais. Uma ferramenta chave \u00e9 integra\u00e7\u00e3o cont\u00ednua e entrega cont\u00ednua (CI\/CD). Nesse pipeline, os ambientes t\u00eam v\u00e1rias etapas (por exemplo, DEV, INT, TST, QA, UAT, STG, PROD), muitas opera\u00e7\u00f5es s\u00e3o automatizadas, e os desenvolvedores podem escrever c\u00f3digo de alta qualidade, alcan\u00e7ar flexibilidade no desenvolvimento e alta frequ\u00eancia de implanta\u00e7\u00f5es.<\/p>\n<p>Este artigo descreve uma abordagem em cinco etapas para criar um pipeline DevOps, semelhante ao mostrado no pr\u00f3ximo diagrama, usando ferramentas de c\u00f3digo aberto.<\/p>\n<h3>Passo 1: M\u00e9todos CI\/CD<\/h3>\n<p>\nA primeira coisa que voc\u00ea precisa \u00e9 de uma ferramenta para CI\/CD. O Jenkins, uma ferramenta de c\u00f3digo aberto baseada em Java e licenciada sob a MIT, \u00e9 o meio que popularizou a abordagem DevOps e se tornou o padr\u00e3o de fato.<\/p>\n<p>Ent\u00e3o, o que \u00e9 Jenkins? Considere-o como um controle remoto m\u00e1gico que pode se comunicar com v\u00e1rios servi\u00e7os e ferramentas e organiz\u00e1-los. Por si s\u00f3, uma ferramenta CI\/CD como o Jenkins \u00e9 in\u00fatil, mas se torna mais poderosa \u00e0 medida que se conecta a diferentes ferramentas e servi\u00e7os.<\/p>\n<p>O Jenkins \u00e9 apenas uma das muitas ferramentas de c\u00f3digo aberto para CI\/CD que voc\u00ea pode usar para construir um pipeline DevOps.<\/p>\n<p>Jenkins: Creative Commons e MIT<br \/>\nTravis CI: MIT<br \/>\nCruiseControl: BSD<br \/>\nBuildbot: GPL<br \/>\nApache Gump: Apache 2.0<br \/>\nCabie: GNU<\/p>\n<p>Veja como os processos DevOps aparecem com uma ferramenta CI\/CD:<\/p>\n<p><img decoding=\"async\" alt=\"Guia para iniciantes: como criar um pipeline DevOps\" src=\"\/wp-content\/uploads\/2020\/07\/e937f3da170b24c53cb5d67a67a365bb.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Voc\u00ea tem uma ferramenta CI\/CD funcionando em seu localhost, mas no momento voc\u00ea pode fazer pouco com isso. Vamos avan\u00e7ar para a pr\u00f3xima etapa da jornada no mundo DevOps.<\/p>\n<h3>Passo 2: Gerenciamento de sistemas de controle de vers\u00e3o<\/h3>\n<p>\nA melhor (e talvez a mais simples) maneira de testar se sua ferramenta CI\/CD pode fazer m\u00e1gica \u00e9 integrando-a a uma ferramenta de controle de c\u00f3digo-fonte (SCM). Por que voc\u00ea precisa de controle de c\u00f3digo-fonte? Suponhamos que voc\u00ea esteja desenvolvendo um aplicativo. Sempre que voc\u00ea cria um aplicativo, voc\u00ea programa, e n\u00e3o importa se voc\u00ea est\u00e1 usando Java, Python, C++, Go, Ruby, JavaScript ou qualquer uma das in\u00fameras linguagens de programa\u00e7\u00e3o. O c\u00f3digo que voc\u00ea escreve \u00e9 chamado de c\u00f3digo-fonte. No in\u00edcio, especialmente quando voc\u00ea est\u00e1 trabalhando sozinho, pode ser que voc\u00ea consiga colocar tudo em um diret\u00f3rio local. Mas quando o projeto cresce e voc\u00ea convida outras pessoas para colaborar, voc\u00ea precisa de um m\u00e9todo para evitar conflitos ao compartilhar modifica\u00e7\u00f5es de forma eficaz. Voc\u00ea tamb\u00e9m precisa de uma maneira de restaurar vers\u00f5es anteriores, porque fazer backups e copiar\/colar neles j\u00e1 est\u00e1 obsoleto. Voc\u00ea (e seus colegas de equipe) precisam de algo melhor.<\/p>\n<p>\u00c9 aqui que a ferramenta de controle de c\u00f3digo-fonte se torna praticamente uma necessidade. Essa ferramenta armazena seu c\u00f3digo em reposit\u00f3rios, controla vers\u00f5es e coordena o trabalho dos participantes do projeto.<\/p>\n<p>Embora existam v\u00e1rias ferramentas de controle de c\u00f3digo-fonte, o Git \u00e9 o padr\u00e3o, e isso \u00e9 verdade. Eu recomendo fortemente o uso do Git, embora existam outras op\u00e7\u00f5es de c\u00f3digo aberto, se preferir.<\/p>\n<p>Git: GPLv2 e LGPL v2.1<br \/>\nSubversion: Apache 2.0<br \/>\nConcurrent Versions System (CVS): GNU<br \/>\nVesta: LGPL<br \/>\nMercurial: GNU GPL v2+<\/p>\n<p>Assim \u00e9 um pipeline DevOps com a adi\u00e7\u00e3o de ferramentas de controle de c\u00f3digo-fonte.<\/p>\n<p><img decoding=\"async\" alt=\"Guia para iniciantes: como criar um pipeline DevOps\" src=\"\/wp-content\/uploads\/2020\/07\/47793d73d3b496aa38e027ff116f729d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Uma ferramenta CI\/CD pode automatizar os processos de verifica\u00e7\u00e3o, obten\u00e7\u00e3o de c\u00f3digo-fonte e colabora\u00e7\u00e3o entre os membros. N\u00e3o \u00e9 ruim? Mas como transformar isso em um aplicativo funcional que bilh\u00f5es de pessoas possam usar e avaliar?<\/p>\n<h3>Passo 3: Criando uma ferramenta de automa\u00e7\u00e3o de builds<\/h3>\n<p>\n\u00d3timo! Voc\u00ea pode verificar o c\u00f3digo e fazer altera\u00e7\u00f5es no sistema de controle de vers\u00e3o, al\u00e9m de convidar seus amigos para colaborar no desenvolvimento. Mas voc\u00ea ainda n\u00e3o criou um aplicativo. Para fazer um aplicativo da web, voc\u00ea precisa compil\u00e1-lo e empacot\u00e1-lo em um formato de pacote implant\u00e1vel ou execut\u00e1-lo como um arquivo execut\u00e1vel. (Observe que linguagens de programa\u00e7\u00e3o interpretadas, como JavaScript ou PHP, n\u00e3o precisam de compila\u00e7\u00e3o).<\/p>\n<p>Use uma ferramenta de automa\u00e7\u00e3o de builds. Independentemente da ferramenta de automa\u00e7\u00e3o de builds que voc\u00ea escolher, todas elas t\u00eam o mesmo objetivo: compilar o c\u00f3digo-fonte em um formato desejado e automatizar a tarefa de limpeza, compila\u00e7\u00e3o, teste e implanta\u00e7\u00e3o em um ambiente espec\u00edfico. As ferramentas de build variar\u00e3o dependendo da sua linguagem de programa\u00e7\u00e3o, mas aqui est\u00e3o algumas op\u00e7\u00f5es comuns de c\u00f3digo aberto.<\/p>\n<p>Nome<br \/>\nLicen\u00e7a<br \/>\nLinguagem de programa\u00e7\u00e3o<\/p>\n<p>Maven<br \/>\nApache 2.0<br \/>\n Java<\/p>\n<p>Ant<br \/>\nApache 2.0<br \/>\nJava<\/p>\n<p>Gradle<br \/>\nApache 2.0<br \/>\nJava<\/p>\n<p>Bazel<br \/>\nApache 2.0<br \/>\nJava<\/p>\n<p>Make<br \/>\nGNU<br \/>\nN\/A<\/p>\n<p>Grunt<br \/>\nMIT<br \/>\nJavaScript<\/p>\n<p>Gulp<br \/>\nMIT<br \/>\nJavaScript<\/p>\n<p>Buildr<br \/>\nApache<br \/>\nRuby<\/p>\n<p>Rake<br \/>\nMIT<br \/>\nRuby<\/p>\n<p>A-A-P<br \/>\nGNU<br \/>\nPython<\/p>\n<p>SCons<br \/>\nMIT<br \/>\nPython<\/p>\n<p>BitBake<br \/>\nGPLv2<br \/>\nPython<\/p>\n<p>Cake<br \/>\nMIT<br \/>\nC#<\/p>\n<p>ASDF<br \/>\nExpat (MIT)<br \/>\nLISP<\/p>\n<p>Cabal<br \/>\nBSD<br \/>\nHaskell<\/p>\n<p>Legal! Voc\u00ea pode colocar arquivos de configura\u00e7\u00e3o da ferramenta de automa\u00e7\u00e3o de builds no sistema de controle de vers\u00e3o e permitir que sua ferramenta CI\/CD una tudo.<\/p>\n<p><img decoding=\"async\" alt=\"Guia para iniciantes: como criar um pipeline DevOps\" src=\"\/wp-content\/uploads\/2020\/07\/573d613914d278e738a0fc7f05644b62.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Tudo bem, n\u00e3o \u00e9? Mas onde voc\u00ea vai implantar seu aplicativo?<\/p>\n<h3>Passo 4: Servidor para aplicativos da web<\/h3>\n<p>\nPor enquanto, voc\u00ea tem um arquivo empacotado que pode ser tanto execut\u00e1vel quanto instal\u00e1vel. Para que qualquer aplicativo seja realmente \u00fatil, ele deve fornecer algum servi\u00e7o ou interface, mas voc\u00ea precisa de um cont\u00eainer para hospedar seu aplicativo.<\/p>\n<p>Um servidor para aplicativos da web \u00e9 exatamente esse cont\u00eainer. O servidor fornece um ambiente onde pode ser definida a l\u00f3gica do pacote implant\u00e1vel. Al\u00e9m disso, o servidor oferece uma interface e oferece servi\u00e7os da web, abrindo soquetes para o mundo externo. Voc\u00ea precisa de um servidor HTTP, bem como de um ambiente (como uma m\u00e1quina virtual) para hosped\u00e1-lo. E por enquanto, vamos supor que voc\u00ea aprender\u00e1 mais sobre isso depois (embora eu fale sobre cont\u00eaineres abaixo).<\/p>\n<p>Existem v\u00e1rios servidores de aplicativos da web de c\u00f3digo aberto.<\/p>\n<p>Nome<br \/>\nLicen\u00e7a<br \/>\nLinguagem de programa\u00e7\u00e3o<\/p>\n<p>Tomcat<br \/>\nApache 2.0<br \/>\nJava<\/p>\n<p>Jetty<br \/>\nApache 2.0<br \/>\nJava<\/p>\n<p>WildFly<br \/>\nGNU Lesser Public<br \/>\nJava<\/p>\n<p>GlassFish<br \/>\nCDDL &amp; GNU Less Public<br \/>\nJava<\/p>\n<p>Django<br \/>\n3-Clause BSD<br \/>\nPython<\/p>\n<p>Tornado<br \/>\nApache 2.0<br \/>\nPython<\/p>\n<p>Gunicorn<br \/>\nMIT<br \/>\nPython<\/p>\n<p>Python<br \/>\nMIT<br \/>\nPython<\/p>\n<p>Rails<br \/>\nMIT<br \/>\nRuby<\/p>\n<p>Node.js<br \/>\nMIT<br \/>\nJavascript<\/p>\n<p>Seu pipeline DevOps est\u00e1 quase pronto para uso. Bom trabalho!<\/p>\n<p><img decoding=\"async\" alt=\"Guia para iniciantes: como criar um pipeline DevOps\" src=\"\/wp-content\/uploads\/2020\/07\/9c314e8a42f154ded3b16ec7bdf01f99.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Embora voc\u00ea possa parar aqui e lidar com a integra\u00e7\u00e3o sozinho, a qualidade do c\u00f3digo \u00e9 uma quest\u00e3o importante para os desenvolvedores de aplicativos, e deve ser uma preocupa\u00e7\u00e3o.<\/p>\n<h3>Passo 5: Cobertura de teste de c\u00f3digo<\/h3>\n<p>\nA implementa\u00e7\u00e3o de testes pode ser mais uma exig\u00eancia pesada, mas os desenvolvedores devem capturar quaisquer erros no aplicativo desde o in\u00edcio e melhorar a qualidade do c\u00f3digo para garantir que os usu\u00e1rios finais fiquem satisfeitos. Felizmente, existem v\u00e1rias ferramentas de c\u00f3digo aberto para testar seu c\u00f3digo e gerar recomenda\u00e7\u00f5es sobre como melhorar sua qualidade. Melhor ainda, a maioria das ferramentas de CI\/CD pode se conectar a essas ferramentas e automatizar o processo.<\/p>\n<p>O teste de c\u00f3digo consiste em duas partes: frameworks de teste que ajudam a escrever e executar testes, bem como ferramentas de sugest\u00f5es que ajudam a melhorar a qualidade do c\u00f3digo.<\/p>\n<p><b>Sistemas de teste de c\u00f3digo<\/b><\/p>\n<p>Nome<br \/>\nLicen\u00e7a<br \/>\nLinguagem de programa\u00e7\u00e3o<\/p>\n<p>JUnit<br \/>\nEclipse Public License<br \/>\nJava<\/p>\n<p>EasyMock<br \/>\nApache<br \/>\nJava<\/p>\n<p>Mockito<br \/>\nMIT<br \/>\nJava<\/p>\n<p>PowerMock<br \/>\nApache 2.0<br \/>\nJava<\/p>\n<p>Pytest<br \/>\n MIT<br \/>\nPython<\/p>\n<p>Hypothesis<br \/>\nMozilla<br \/>\nPython<\/p>\n<p>Tox<br \/>\nMIT<br \/>\nPython<\/p>\n<p><b>Sistemas de recomenda\u00e7\u00f5es para melhorar o c\u00f3digo<\/b><\/p>\n<p>Nome<br \/>\nLicen\u00e7a<br \/>\nLinguagem de programa\u00e7\u00e3o<\/p>\n<p>Cobertura<br \/>\nGNU<br \/>\nJava<\/p>\n<p>CodeCover<br \/>\nEclipse Public (EPL)<br \/>\nJava<\/p>\n<p>Coverage.py<br \/>\n Apache 2.0<br \/>\nPython<\/p>\n<p>Emma<br \/>\nCommon Public License<br \/>\nJava<\/p>\n<p>JaCoCo<br \/>\n Eclipse Public License<br \/>\nJava<\/p>\n<p>Hypothesis<br \/>\n Mozilla<br \/>\nPython<\/p>\n<p>Tox<br \/>\nMIT<br \/>\nPython<\/p>\n<p>Jasmine<br \/>\nMIT<br \/>\nJavaScript<\/p>\n<p>Karma<br \/>\nMIT<br \/>\nJavaScript<\/p>\n<p>Mocha<br \/>\n MIT<br \/>\nJavaScript<\/p>\n<p>Jest<br \/>\nMIT<br \/>\nJavaScript<\/p>\n<p>Observe que a maioria das ferramentas e frameworks mencionados acima s\u00e3o escritos para Java, Python e JavaScript, j\u00e1 que C++ e C# s\u00e3o linguagens de programa\u00e7\u00e3o propriet\u00e1rias (embora o GCC tenha c\u00f3digo aberto).<\/p>\n<p>Agora que voc\u00ea implementou ferramentas de cobertura de c\u00f3digo com testes, seu pipeline DevOps deve se parecer com o diagrama mostrado no in\u00edcio deste guia.<\/p>\n<h3>Passos Adicionais<\/h3>\n<p>\n<b>Cont\u00eaineres<\/b><\/p>\n<p>Como j\u00e1 mencionei, voc\u00ea pode hospedar seu servidor em uma m\u00e1quina virtual ou servidor, mas os cont\u00eaineres s\u00e3o uma solu\u00e7\u00e3o popular.<\/p>\n<p>O que s\u00e3o cont\u00eaineres? A explica\u00e7\u00e3o breve \u00e9 que uma m\u00e1quina virtual precisa de um grande volume de mem\u00f3ria do sistema operacional, maior que o tamanho do aplicativo, enquanto um cont\u00eainer precisa apenas de algumas bibliotecas e configura\u00e7\u00f5es para executar o aplicativo. \u00c9 evidente que a m\u00e1quina virtual ainda possui \u00e1reas de aplica\u00e7\u00e3o importantes, mas o cont\u00eainer \u00e9 uma solu\u00e7\u00e3o leve para hospedagem de aplicativo, incluindo servidores de aplicativos.<\/p>\n<p>Embora existam outras op\u00e7\u00f5es de cont\u00eaineres, os mais populares s\u00e3o o Docker e o Kubernetes.<\/p>\n<p>Docker: Apache 2.0<br \/>\nKubernetes: Apache 2.0<\/p>\n<p><b>Ferramentas de automa\u00e7\u00e3o intermedi\u00e1ria<\/b><\/p>\n<p>Nosso pipeline DevOps \u00e9 principalmente voltado para a colabora\u00e7\u00e3o na cria\u00e7\u00e3o e deployment de aplicativos, mas h\u00e1 muitas outras coisas que podem ser feitas com ferramentas DevOps. Uma delas \u00e9 o uso de ferramentas de Infraestrutura como C\u00f3digo (IaC), que tamb\u00e9m s\u00e3o conhecidas como ferramentas de automa\u00e7\u00e3o intermedi\u00e1ria. Essas ferramentas ajudam a automatizar a instala\u00e7\u00e3o, gerenciamento e outras tarefas para middleware. Por exemplo, uma ferramenta de automa\u00e7\u00e3o pode extrair aplicativos como servidores de aplica\u00e7\u00e3o, banco de dados e ferramentas de monitoramento, com as configura\u00e7\u00f5es corretas e implant\u00e1-los em servidores de aplica\u00e7\u00e3o.<\/p>\n<p>Aqui est\u00e3o algumas ferramentas de automa\u00e7\u00e3o intermedi\u00e1ria de c\u00f3digo aberto:<\/p>\n<p>Ansible: GNU Public<br \/>\nSaltStack: Apache 2.0<br \/>\nChef: Apache 2.0<br \/>\nPuppet: Apache ou GPL<\/p>\n<p><img decoding=\"async\" alt=\"Guia para iniciantes: como criar um pipeline DevOps\" src=\"\/wp-content\/uploads\/2020\/07\/148ef7317ca5780b412241ddaec9dc76.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Saiba mais detalhes sobre como obter uma profiss\u00e3o em alta demanda do zero ou elevar suas habilidades e sal\u00e1rio, fazendo cursos online pagos da SkillFactory:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/skillfactory.ru\/devops?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=DEVOPS&amp;utm_term=regular&amp;utm_content=07072002\">Curso em DevOps<\/a><\/noindex> (12 meses)<\/li>\n<\/ul>\n<p><\/p>\n<p>                        <b class=\"spoiler_title\">mais cursos<\/b><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/skillfactory.ru\/ml-programma-machine-learning-online?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=ML&amp;utm_term=regular&amp;utm_content=07072002\">Curso de Machine Learning<\/a><\/noindex> (12 semanas)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/skillfactory.ru\/data-scientist?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=DST&amp;utm_term=regular&amp;utm_content=07072002\">Forma\u00e7\u00e3o para a profiss\u00e3o de Data Science desde o b\u00e1sico<\/a><\/noindex> (12 meses)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/skillfactory.ru\/analytics?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=SDA&amp;utm_term=regular&amp;utm_content=07072002\">A profiss\u00e3o de analista com qualquer n\u00edvel de entrada<\/a><\/noindex> (9 meses)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/skillfactory.ru\/python-for-web-developers?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=PWS&amp;utm_term=regular&amp;utm_content=07072002\">Curso 'Python para Desenvolvimento Web'<\/a><\/noindex> (9 meses)<\/li>\n<\/ul>\n<p><\/p>\n<h3>\u00datil<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/503196\/\">450 cursos gratuitos da Ivy League<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/508450\/\">Tend\u00eancias em Data Science 2020<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/508556\/\">Data Science morreu. Vive Business Science<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/506790\/\">Data Science em esteroides: introdu\u00e7\u00e3o \u00e0 Intelig\u00eancia de Decis\u00e3o<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/503504\/\">O projeto de Data Science mais bem-sucedido e mais pol\u00eamico: Cambridge Analytica<\/a><\/noindex><\/li>\n<\/ul>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/509964\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 DevOps, \u0432\u0437\u0433\u043b\u044f\u043d\u0438\u0442\u0435 \u043d\u0430 \u044d\u0442\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u0438\u0437 \u043f\u044f\u0442\u0438 \u044d\u0442\u0430\u043f\u043e\u0432. DevOps \u0441\u0442\u0430\u043b \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u0434\u043b\u044f \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0445, \u0440\u0430\u0437\u043e\u0431\u0449\u0435\u043d\u043d\u044b\u0445 \u0438\u043b\u0438 \u043d\u0435\u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c \u0447\u0442\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 DevOps \u0438 \u043d\u0435 \u0437\u043d\u0430\u0435\u0442\u0435, \u0441 \u0447\u0435\u0433\u043e \u043d\u0430\u0447\u0430\u0442\u044c, \u0442\u043e \u0432\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0442\u044c \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432. \u0412 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":87468,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-87467","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 DevOps, \u0432\u0437\u0433\u043b\u044f\u043d\u0438\u0442\u0435 \u043d\u0430 \u044d\u0442\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u0438\u0437 \u043f\u044f\u0442\u0438 \u044d\u0442\u0430\u043f\u043e\u0432.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445: \u0441\u043e\u0437\u0434\u0430\u0435\u043c DevOps-\u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 DevOps, \u0432\u0437\u0433\u043b\u044f\u043d\u0438\u0442\u0435 \u043d\u0430 \u044d\u0442\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u0438\u0437 \u043f\u044f\u0442\u0438 \u044d\u0442\u0430\u043f\u043e\u0432.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-07-08T11:42:11+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-07-08T11:42:11+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47 Guia para iniciantes: criando um pipeline DevOps | ProHoster","description":"Se voc\u00ea \u00e9 novo em DevOps, consulte este guia para criar seu primeiro pipeline em cinco etapas.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445: \u0441\u043e\u0437\u0434\u0430\u0435\u043c DevOps-\u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d | ProHoster","og:description":"\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 DevOps, \u0432\u0437\u0433\u043b\u044f\u043d\u0438\u0442\u0435 \u043d\u0430 \u044d\u0442\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u0438\u0437 \u043f\u044f\u0442\u0438 \u044d\u0442\u0430\u043f\u043e\u0432.","og:url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-07-08T11:42:11+00:00","article:modified_time":"2020-07-08T11:42:11+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"87467","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 13:50:31","updated":"2022-09-29 03:37:01","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/87467","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=87467"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/87467\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/87468"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=87467"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=87467"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=87467"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}