Pacote para mãos: uma introdução prática para criar imagens em máquina na AWS | David Cohen | Skillshare

Velocidade de reprodução


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Pacote para mãos: uma introdução prática para criar imagens em máquina na AWS

teacher avatar David Cohen, Linux, Programming, DevOps, etc.

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Aulas neste curso

    • 1.

      INTRODUÇÃO DO CURSO

      1:20

    • 2.

      Por que Packer? Por que infraestrutura como código (IaC)?

      6:29

    • 3.

      Visão geral do projeto Packerfile

      4:54

    • 4.

      Primitivas de pacotes e terminologia

      7:05

    • 5.

      Blocos de modelos de embalagens

      3:35

    • 6.

      Tour em código de projeto

      5:38

    • 7.

      Tour de código de projeto

      5:28

    • 8.

      Como instalar o Packer

      1:32

    • 9.

      Como criar uma chave SSH no AWS EC2

      4:01

    • 10.

      Como criar um usuário do AWS IAM para Packer

      3:57

    • 11.

      Construir o pacote

      6:18

    • 12.

      Como usar o AMI para hospedar um site WordPress

      6:53

    • 13.

      Documentação de empacotador e fluxo de trabalho

      3:19

    • 14.

      Plugins úteis para pacotes

      6:39

    • 15.

      Instruções de projeto

      5:52

    • 16.

      Conclusão

      2:09

  • --
  • Nível iniciante
  • Nível intermediário
  • Nível avançado
  • Todos os níveis

Gerado pela comunidade

O nível é determinado pela opinião da maioria dos estudantes que avaliaram este curso. Mostramos a recomendação do professor até que sejam coletadas as respostas de pelo menos 5 estudantes.

49

Estudantes

--

Projeto

Sobre este curso

Neste curso, você vai aprender como transformar scripts de configuração de servidor em um projeto de compilação de Packer que cria uma imagem de máquina totalmente configurada que você pode usar na nuvem da Amazon. É um projeto simples e real, que mostra como o Packer é REALMENTE usado no mundo de infraestrutura e DevOps.

Quando terminar, você vai automatizar uma criação de imagem para um servidor que hospeda um site WordPress.

Você vai aprender:

  • Como instalar o Packer
  • Como criar e estruturar um modelo de pacote simples para criar uma imagem de máquina na AWS
  • Como pensar como transformar comandos / procedimentos existentes em scripts e como usar esses scripts em seu fluxo de trabalho do Packer.
  • Como criar VMs (instâncias da AWS) a partir da imagem de máquina criada com o Packer.

Quem é você?

  • Você é um Linux, DevOps, Infraestrutura em Nuvem ou Engenheiro de Software que quer automatizar compilações de imagens de servidor.
  • Você tem algumas habilidades básicas de linha de comando (Linux, Windows ou OS X).
  • Você sabe como clonar um projeto do GitHub e editar código em um editor de texto.
  • Você quer aprender mais habilidades práticas em DevOps.
  • Você quer automatizar compilações de imagem como primeiro passo para criar configuração de infraestrutura parte de um pipeline CI/CD.
  • Você está curioso sobre como um projeto de Packer pequeno, mas real.

Quem sou eu?

  • Eu faço Linux, infraestrutura em nuvem, desenvolvimento de software e DevOps/SRE há quase 15 anos.
  • Ensinei centenas de milhares de habilidades tecnológicas no meu canal do YouTube.
  • Quero ensinar habilidades importantes de uma forma útil e sem BS que ofereça habilidades práticas que você pode aplicar imediatamente a projetos do mundo real, em entrevistas de trabalho ou para ser promovido.

Dê uma olhada! Estou animado para te ver lá dentro.

Conheça seu professor

Teacher Profile Image

David Cohen

Linux, Programming, DevOps, etc.

Professor

I love helping people who are early in their tech careers, and I've had the pleasure of teaching hundreds of thousands of you on YouTube (tutorialinux) over the last 10 years.

I'm currently an engineer at Hashicorp -- I've been there a while and have bounced around between between Site Reliability Engineering, Reference Architecture, and Software Development.

I've been in tech for about 15 years and I'm still loving it. I hope my courses help you get where you're trying to go!

Visualizar o perfil completo

Habilidades relacionadas

Desenvolvimento Desenvolvimento web
Level: Intermediate

Nota do curso

As expectativas foram atingidas?
    Superou!
  • 0%
  • Sim
  • 0%
  • Um pouco
  • 0%
  • Não
  • 0%

Por que fazer parte da Skillshare?

Faça cursos premiados Skillshare Original

Cada curso possui aulas curtas e projetos práticos

Sua assinatura apoia os professores da Skillshare

Aprenda em qualquer lugar

Faça cursos em qualquer lugar com o aplicativo da Skillshare. Assista no avião, no metrô ou em qualquer lugar que funcione melhor para você, por streaming ou download.

Transcrições

1. INTRODUÇÃO DO CURSO: Meu nome é Dave Cowen. Estou no mundo da infraestrutura e do desenvolvimento de software e DevOps por algo que se aproxima de 15 anos. E trabalhei para todos os tipos de pacotes de empresas interessantes ou algo em que realmente acredito tanto que trabalhei para a empresa que o faz. Por sinal, não trabalho no empacotador. Acho que é pequeno e fácil de aprender. Minha promessa para você o que este curso é que eu não vou gostar exaustivamente de slides de leitura que o levam lentamente por cada parte do leia-me como os documentos oficiais. Você pode ler os documentos oficiais você mesmo para preencher as coisas. Minha promessa para você é que eu vou te dar um projeto absolutamente realista que mostra o uso do mundo real, tipo o que você precisa estar pensando. E você poderá sentir intuitivamente as vantagens que isso lhe dá. E eu prometi fazer isso em um pequeno período de tempo. Quero manter este curso curto, doce, prático. Então, novamente, se você está procurando como o curso exaustivo que lhe dará tudo e você provavelmente nunca acabará assistindo. Não é isso. Se você quiser, tipo, apenas me dê a coisa que eu preciso para começar com isso em um projeto realista que eu possa clonar, copiar, reutilizar. Este é o curso para você. Então, se isso falar com você, espero vê-lo lá dentro e sim, vamos começar. 2. Por que Packer? Por que infraestrutura como código (IaC)?: Então, para aqueles de vocês que realmente não sabem por que querem o Packer, deixe-me dar uma proposta de valor muito rápida, talvez não apenas para o Packer porque você já pesquisou no Google e está aqui. Mas para infraestrutura como código em geral, que é o começo do que o Packer oferece a você. Então, antes de empacotar ou ter algo que se transforma como configuração manual em uma imagem de máquina. Vamos pensar em como resolveríamos, digamos, um problema da vida real. Digamos que haja alguma vulnerabilidade de segurança estranha. Você ouve sobre isso em uma segunda-feira e percebe, Ah não, nosso servidor de hospedagem WordPress precisa de uma alteração na configuração do servidor web para proibir uma versão específica do TLS para que não fiquemos vulneráveis, tudo bem. Então você entraria em sua documentação, certo? Porque isso é como sua documentação manual. Você faz tudo manualmente. Tudo está ruim. Você chora até dormir todos os dias depois de voltar para casa deste trabalho. No seu trabalho, você teria que basicamente descobrir onde está esse arquivo, onde nas instruções, ok, está no arquivo de configuração principal do NGINX. Não se preocupe se você não sabe sobre essas coisas. Não é muito importante para este curso. Apenas se preocupe com a parte do empacotador. Mas você teria que entrar aqui manualmente. Quero dizer, você está entrando em um servidor de produção. Agora você está brincando com a configuração. Digamos que seja como um protocolo SSL que você precise comentar. Digamos que 1.2 esteja fora, então você coloca o comentário daqui até aqui. E depois agora o que? Você precisa reiniciar o NGINX. Eu acho que você tem que esperar que este seja seu único servidor de produção. Se você tem dez servidores de produção, sim, meio ferrado. Ninguém está feliz. Isso é ruim. Essa é uma maneira ruim de fazer as coisas. Não há uma boa maneira de testar isso em dois meses quando você faz login no seu servidor de produção, não há registro do motivo pelo qual a configuração do NGINX é assim. Talvez você tenha esquecido de alterar a documentação real que você usou. Portanto, novos servidores ainda estão sendo configurados incorretamente. Não fazemos as coisas manualmente. Não é isso que fazemos. Somos profissionais. Então, o empacotador é o jeito que você deixa de ser totalmente manual para automatizado. E, claro, sim, vou mostrar todos os detalhes deste curso. Você verá isso passo a passo. Mas o importante agora é que o processo geral muda do mundo triste e triste, onde você está entrando na produção e mudando as coisas para este mundo muito mais feliz onde em entrar no seu projeto Packer para seus servidores WordPress, você entra na configuração. Você vê que há um engine X conf aqui, parece que a configuração principal do Engine X parece legal para mim. Aqui você encontra sua linha de protocolos SSL, você faz a alteração aqui. E então, em vez de fazer login na produção, você simplesmente constrói uma nova compilação de empacotador essencialmente você compromete isso. Presumivelmente, você é um tipo de sistema de automação de CI que pega essa mudança e faz reprises do Packer para criar uma nova imagem. E então bam, você tem uma nova imagem para referenciar no restante da sua infraestrutura. E então você pode fazer qualquer processo que você fizer para transferir seus servidores em produção para esses novos servidores que têm apenas essa coisa alterada. E você pode pensar consigo mesmo, bem, isso parece um monte de etapas extras para realmente uma mudança de uma linha em um arquivo. Mas assim que você atinge a realidade de como são as operações de produção e talvez tenha mais de um servidor, como centenas. Essa se torna a única maneira sensata de gerenciar a mudança. Em vez de ter uma mudança manual onde as pessoas precisam se lembrar de coisas, siga instruções específicas. As coisas podem ser esquecidas, as coisas podem meio que desaparecer. Você não se lembra de quem mudou alguma coisa ou que algo foi mudado. Neste mundo. Cada mudança tem um git commit anexado a ela, certo? Então você altera esse arquivo, você tem que confirmá-lo. Você coloca o nome do ticket ou o motivo pelo qual você o alterou ou o que quer que seja nesse commit, que dá início a uma nova compilação. E esse é um ID de compilação totalmente novo, embora seja quase a mesma máquina. E se alguém está tipo, Oh, por que há algo errado com esta máquina? Eles poderão ver todas as mudanças de configuração que ocorreram nele. Voltando até o início da nossa primeira execução, esse script de pacote que criou uma imagem para nós. Portanto, espero que isso explique algumas das razões do Packer e especificamente, que isso lhe dê uma ideia de como o fluxo de trabalho que isso permite é muito, muito, muito melhor e muito mais profissional. Então, o fluxo de trabalho com o qual a maioria das pessoas e até mesmo as empresas começam , o que é certo, é como instruções. Você pesquisa no Google uma coisa que é como fazer login e faz isso manualmente. É como não, não, não, não, não. Não é isso que fazemos. Não é isso que os profissionais fazem. Eles não entraram. Eles podem testar algo manualmente como você pode fazer isso localmente para verificar se funciona. Mas então você pega tudo isso, coloca-o em um script ou pegajoso, automatizado de alguma forma, e depois automatiza em torno disso novamente com infraestrutura como código, certificando-se de que cada mudanças estão acontecendo no get, certificando-se de que você pode olhar para uma imagem e saber exatamente o que está lá sem fazer login nela. Isso faz sentido. OK. Então, para aqueles de vocês que não tinham certeza por que acompanha o uso do empacotador, É isso. Eu diria que essa é a principal diferença. Também permite todas essas outras coisas sobre as quais falaremos ao longo do curso. O que é, na verdade, uma vez que você envolve algo assim na automação e passa de um processo manual para um automatizado, agora você pode integrá-lo automação existente para todos os tipos de outros material. Então, agora, você sabe, se seu departamento de segurança, sua empresa cresce, seu departamento de segurança vem até você e diz Assim como precisamos automatizar a TI, testes de segurança para tudo que entra em produção. Bem, você pode dizer, sim, bem, não entramos na produção para fazer coisas como durante a compilação. Assim que o like packer terminar uma compilação em seu sistema de CI, depois de fazer um commit, você pode simplesmente executar sua ferramenta de segurança de perna e garantir que essa imagem esteja pronta para segurança . E então você pode marcá-lo com um título aprovado ou qualquer outra coisa. E então sabemos que não há problema em usar na produção. Portanto, é basicamente como nenhum trabalho extra para você como pessoa de operações ou infraestrutura. De qualquer forma. Então, é tudo sobre automação e é para lá que estamos indo e é por isso que fazemos essas coisas. 3. Visão geral do Project Packerfile: Vamos falar sobre a primeira coisa que você faz depois clonar um projeto de empacotador ou iniciar um. A primeira coisa que você sempre vai fazer é colocar o Packer nele. E então esse diretório, supondo que você esteja no diretório que tem um arquivo empacotador nele. Agora, como eu já executei isso antes, não há nenhuma mudança necessária e isso não fará nada. Mas na primeira vez que você executar isso, ele certamente instalará algumas coisas, ou seja, os plug-ins que você exigiu para sua base de código. Então, sem mais delongas, vamos ver como isso funciona. Vou te dar um pequeno tour por isso. Essa fonte é a imagem de origem que vamos usar. Ou seja, o tipo de imagem será uma imagem do Amazon EBS. Já estive em. E a maneira como vamos encontrar nossas imagens de origem com esse filtro, onde procuramos algo que tenha esse padrão de nome. Então você pode ver que estamos usando 2204 atualmente a versão LTS mais recente ou suporte de longo prazo do Ubuntu. E essa estrela é um curinga se você estiver familiarizado com expressões regulares , estrela significa tudo. E especificamente o mais recente que combina com essa estrela de tudo. Isso substituirá uma data. Então, isso será como a imagem de abril, como abril 2022 em junho, haverá uma imagem de junho em não. Isso significa que não precisamos alterar nosso código toda vez que a imagem for atualizada, sempre usaremos a versão mais recente do 2204. Sempre que você executa esse código. O filtro de proprietários, ou seja, o usuário canônico. Você tem a garantia de obter uma imagem oficial, não alguns como hackers malvados, como imagens pré-enraizadas. O nome de usuário SSH basicamente diz, ok, quando estamos configurando isso, lidar com essa imagem do B12 é o nome de usuário padrão que vamos usar para conectar com SSH. E o par de chaves temporárias que eu quero que o Packer crie. Uma das coisas que o Packer faz é criar um par de chaves apenas para minha execução de empacotador. Vai usar essa curva. Se você estava usando SSH dash key gen, essa ferramenta para criar uma nova chave SSH. Isso é literalmente o que isso está fazendo. Então isso é basicamente o que está preenchendo, a parte T do traço. Então, isso é basicamente como executar SSH key gin type dd to 19. Isso faz sentido. Ok, então vamos ver as instruções de construção reais aqui. A propósito, eu não vou, esta não é uma explicação completa do Packer. Isso não é absolutamente como nas trincheiras. Packer prático de luta de rua. Há, há mais no Packer do que isso. Estou apenas mostrando o mínimo que você precisa saber para obter uma imagem funcional da Amazon aqui. Então, o que vamos fazer quando construirmos essa imagem? Bem, vamos dizer ao Packer que vamos dar um nome a essa coisa. Vamos provisioná-lo com uma série de fornecedores. Você pode pensar nisso quase como as etapas da nossa compilação. Vamos alimentá-lo com este primeiro script, que ele seja carregado para que ele seja carregado na máquina e executado nele. Em seguida, vamos adicionar alguns arquivos de configuração aqui. Portanto, essas são essencialmente operações de cópia de arquivos. Tudo isso está acontecendo no SSH, onde ele vai procurar algo começando nesta configuração de onde ele vai procurar algo diretório, você pode ver que está aqui, configuração do WordPress NGINX. Bem, esse é esse arquivo que será copiado para a máquina no BUN para os usuários. Porque lembre-se, estamos usando o nome de usuário SSH ubuntu. Isso é o que vamos fazer login aqui. O primeiro passo é depositar tudo isso no diretório inicial de dois usuários urbanos, porque é aí que podemos ter acesso correto. Sem tornar isso feio e complicado. Fazemos isso em duas etapas. Transfira todos os arquivos até lá para um monte de usuários. E no final, nós movemos todos aqueles para onde eles vão estar com o sudo. Então, agora que temos o arquivo escrito em seu diretório inicial, vamos realmente gravá-lo em seu destino final, que é o Engine X e Gen X.com e assim por diante. A última coisa que vamos fazer, muito parecido com o curso. É como se editássemos todos esses arquivos de configuração, instalássemos todos esses serviços, fizéssemos todas essas outras coisas com o script de configuração base. Finalmente, eu separei isso em scripts separados só porque é uma maneira mais agradável de fazer isso. Podemos confiar que temos toda essa plataforma configurada. E assim como a última seção sete, seção sete do curso, esse script reflete que na verdade estavam apenas configurando o aplicativo WordPress, os arquivos de configuração específicos do WordPress, etc. Então esse é o final desta seção. Na próxima seção, mostrarei rapidamente o que realmente está em tudo isso. Na verdade, vamos dar uma olhada no código. 4. Primícias e terminologia de pacotes: Vamos falar sobre as primitivas e terminologia essenciais do Packer que você realmente precisa saber para usá-lo. Portanto, essas primitivas são os blocos de construção que compõem o Packer, são aqueles que você precisa entender para saber como o Packer funciona e realmente como ele quer você pense sobre a construção de imagens. Estou cobrindo isso na ordem oposta à da documentação, porque acho que é realmente mais fácil entender dessa maneira. Vamos do mais geral para o mais específico. A página de terminologia nos documentos é a que estamos falando aqui. Então, quando você olha para um arquivo de modelo do Packer e essa é a primeira parte da terminologia aqui. Isso meio que descreve todo o processo. Então, este é o único lugar onde tudo se junta com todas essas diferentes palavras-chave, provisões ou fontes. Você pode ver a criação da fonte de dados ou do pós-processador. Você meio que quer saber o que é isso. Então, vou explicar tudo em um parágrafo maluco e depois vamos explicar tudo em um parágrafo maluco que descreve isso. E depois passaremos por cada período, peça por peça. Então, quando executamos esse comando R, diz ao Packer para ler e executar as instruções que ele encontra em um modelo do Packer que tem aquele arquivo que acabamos de ver. Esse modelo contém um ou mais construtores que sabem como criar uma imagem em alguma plataforma como a AWS. Packer encontra a construção que definimos lá, que é uma tarefa que cria uma imagem. Essa compilação é realmente apenas um nome legal envolto em um monte de provisioners que fazem o trabalho árduo de configurar sua imagem. Se tudo isso der certo, você acaba com um artefato que geralmente é como uma imagem de máquina de algum tipo, como uma AMI na Amazon. Esse é o processo principal. Há uma parte opcional em cada extremidade desse processo principal, que é se você quiser mudar as coisas no início, como se você quiser trazer dados externos preexistentes para qualquer parte desse processo. Como uma imagem de máquina existente que você já criou ou segredos que você armazenou na sua Cloud Secret Store. Você pode fazer isso e usar fontes de dados para realizar essa tarefa. Se você quiser modificar coisas no final, quando já tiver construído um artefato, use o que é chamado de pós-processadores para fazer isso. Então, vamos definir cada uma dessas primitivas em profundidade. Os modelos são essencialmente arquivos de configuração do Packer em HCl ou Jason, que define uma ou mais compilações unindo todas as outras primitivas do Packer. É o lugar central para a configuração do Packer acontecer. E você pode ver isso em nosso modelo, as compilações, aquelas chaves que começam na linha 27, onde definimos a compilação. Eles embrulham tudo, fazem com que englobem totalmente tudo o mais que estamos fazendo. Todas essas outras primitivas aqui, elas estão todas dentro de um comando build é um subcomando para packer, que diz a ele para fazer coisas como Packer nele. Por exemplo, faça o download todas as minhas dependências e plug-ins externos. Packer, funct FMT formato correto meu código, Packer, inspecionar Packer, validar console do Packer. E o favorito de todos, o que vamos usar, que é o Packer Build, que é apenas, por favor, crie uma imagem com base neste modelo. Um construtor é um componente empacotador, embutido ou plug-in. Na maioria das vezes, será um plugin que sabe como criar imagens em uma plataforma específica. Assim como uma imagem do Google Cloud e imagem do Azure na imagem Digital Ocean, Amazon, que estamos usando. Um construtor é o que envolve todo esse tipo de complexidade e código de chamada de API complexidade e código de chamada que é específico para cada plataforma. Por exemplo, você faz chamadas de API muito diferentes para o Google Cloud do que para a Amazon, mesmo que esteja fazendo a mesma coisa. Portanto, os construtores são os módulos ou plugins que envolvem toda essa complexidade. Então, tudo o que você precisa se preocupar é com o nome do construtor que eu preciso? E quais parâmetros são necessários? Uma fonte de dados é uma coisa opcional que busca dados que você pode precisar. Essa é uma das coisas que você executaria na definição no início. Essa pode ser uma AMI de base alternativa, que você deseja usar a imagem de máquina que deseja usar. Um segredo que está armazenado em suas nuvens Secret Manager, se esse tipo de coisa. E então chegamos à construção. E essa é a única tarefa que produz um artefato. E como você viu antes, ele envolve tudo. Tipo de consequência aqui que é como fazer coisas processuais e modificar coisas e construir estão na configuração de nossa imagem. Um fato interessante é que você pode ter mais de um desses rodando em paralelo. Então, isso é uma coisa que você pode fazer. Se você estiver produzindo imagens para várias nuvens, talvez. Então você poderia ter uma tarefa de compilação para cada um, uma provisão ou é o que você viu dentro dessa compilação. É o primitivo que você realmente usa para fazer alterações de configuração em suas imagens. As compilações precisam de algum tipo de fonte. Eles aplicam provisioners a essa fonte para modificá-la. São coisas como copiar arquivos, instalar pacotes, transformar o estado em outra coisa. E então Packer cria um artefato a partir disso. A imagem que eu continuo dizendo imagem ou artefato de forma intercambiável. O artefato é exatamente o que sua construção produz. E isso é simplesmente, no nosso caso, uma AMI. Pode ser uma imagem de contêiner do Docker, pode ser uma imagem do VMware. Pode ser muitas coisas diferentes. E examinaremos todos os construtores que produzem diferentes tipos de artefatos. Bem, não vamos passar por todos eles. Eu vou te mostrar, eu vou te mostrar os que eu mais uso. Você pode assumir a partir daí. O pós-processador ou outra coisa sobre a qual falamos, que são coisas com as quais você pode fazer coisas depois que um artefato for criado. Normalmente, não uso muitos desses na vida real, mas eles realmente facilitam a adaptação a qualquer processo que você ou sua empresa tenham. Como compactar, criar uma versão compactada de sua imagem ou criar um arquivo manifesto que rastreia cada compilação basicamente no momento de cada compilação ou qualquer outra coisa, também pode ser coisas como enviar sua imagem para algum lugar que você precise dela. Então, para revisar este vídeo, vou ler aquela frase maluca que li antes de novo. E agora você saberá exatamente o que tudo significa. Novamente, você executa o Packer com um comando, que diz ao Packer, no caso do comando build, para ler e executar as instruções em um modelo do Packer. Esse modelo contém um ou mais construtores que sabem como criar uma imagem em alguma plataforma como a AWS. Vamos mudar para o código para um efeito emocional ainda maior em você. Aqui, o Packer encontra as compilações que definimos nessa imagem de modelo, que é uma tarefa que cria uma imagem que a compilação é realmente apenas um bom nome envolto em um monte de provedores como você vê aqui, que faz o trabalho árduo de configurar sua imagem. Se tudo isso der certo, você acaba com um artefato. Esse é o processo principal. 5. Blocos de modelos de pacotes: Vamos falar sobre as coisas neste arquivo de configuração que não são cobertas pelas primitivas que acabei de explicar. O primeiro é esse bloco Packer, segundo é o bloco fonte, e depois o terceiro é o bloco de construção, ao qual eu já meio que aludiu porque ele se relaciona com o primitivo de construção. Você vai me notar falando sobre blocos. Essa é uma das maneiras pelas quais o empacotador funciona. Ele consome esse arquivo de modelo procurando esses blocos que definimos em HCl ou json. O bloco empacotador contém configurações do Packer , incluindo um número de versão e os plug-ins necessários. Você quase sempre vai gostar, esses quase sempre serão os construtores que você está usando. No nosso caso, é o plugin da Amazon. E definimos uma versão específica e tipo de onde isso está, caso esteja fora, devo dizer, do local hospedado pela HashiCorp. Então, se for uma coisa de código aberto no GitHub, é aí que vai ser. O bloco de origem tem essa sintaxe interessante que você pode se lembrar do Terraform se você já o usou antes. Mas é basicamente a palavra-chave que é uma fonte. Em seguida, ele tem o tipo de construtor, no nosso caso amazon EBS, e um nome para ele, que será local para este modelo do Packer. Então, isso é, ele sabe o que procurar aqui e a que forma isso vai se adaptar mais ou menos. Isso é o que vamos fazer referência a ele nesta compilação. Cada construtor que você pode pensar em uma função na programação como construtores diferentes, requer parâmetros diferentes. Essencialmente, o Packer os chama de atributos de configuração, isso é tudo isso dentro. Assim como a Amazon, o EBS exige algumas dessas coisas e outras são opcionais. Vai ser diferente se for um construtor de GCP ou um construtor de oceanos digital ou um construtor de contêineres Docker. Portanto, os atributos de configuração ou apenas as coisas que são opcionais necessárias, as informações que você pode passar para obter a fonte exata, a imagem de origem ou o que você quiser trabalhar com durante sua construção. Então, finalmente, tudo isso é passado para o bloco de notas. Mas a parte específica disso que eu quero que você se concentre é essa. Você pode ver esses laços religiosos juntos, a convenção de nomenclatura acima com pontos. Então, estamos dizendo, ok, bem, agora queremos fazer uma compilação. Vamos dar a isso um pequeno nome legal. E as fontes, vamos aplicar essas contas à nossa fonte, Amazon EBS, uma benção para e se mudarmos o nome disso aqui e chamarmos essa perna de um para um porque temos 27 diferentes uma vantagem de gostar, não sei, das versões LTS às quais estamos aplicando isso. Tudo bem. Teremos que mudar isso aqui também. Ok, então agora você realmente, em um alto nível, entende cada bloco de uma perspectiva de configuração que está neste arquivo de configuração. E você também entende os primitivos. Então, apenas com base nisso, você deve ser capaz de ler quase qualquer arquivo de modelo do Packer que encontrar. Agora, ocasionalmente, as pessoas fazem algumas coisas bem esquisitas e são arquivos de modelo do Packer, mas é como se esses fossem os primitivos que o packer conhece. E então tudo vai voltar a esses. 6. Tour de código de projeto WordPress: Neste vídeo, vou fazer um tour muito rápido do estado inicial dos projetos. Então, isso é mais ou menos como o que eu estou dando a você para começar para este projeto. Você encontrará aqui. É de código aberto, é de um curso anterior meu. E o que eu já disse, vou dizer de novo, é que você não precisa entender cada parte disso. Isso não é como um curso de Linux, não é um curso de WordPress, não é um curso de hospedagem na web em sistemas Unix. Mas eu só quero que você veja o tipo bruto de material manual que você vai automatizar neste curso comigo. Então eu vou te guiar por isso em um alto nível. Só estou te dizendo o que tudo está fazendo. Se você está curioso e quer saber mais, é claro que se aprofunde. Mas eu vou te dar como aqui, eu vou te dizer, tudo bem, estamos atualizando o repositório de pacotes que temos no B12. E vamos instalar alguns pacotes, todas as coisas que precisamos para WordPress, banco de dados, MySQL, neste caso, é na verdade MariaDB, mas não importa. Um Web Server Engine X, um tipo de linguagem de VM Runtime, PHP que estamos usando e um pacote extra que ajuda a integrar com o banco de dados. Uma pequena ferramenta de monitoramento, não é importante. Então eu mostro um pouco de material manual sobre serviços. Não é tão importante que os iniciemos necessariamente, mas vamos habilitá-los mas vamos habilitá-los porque, quando a máquina for ativada, queremos que ela esteja pronta para hospedar um site sem outras etapas manuais. Portanto, alguns serviços precisam ser habilitados. Isso é legal. Ele precisa de configuração. Então, há uma parte desse outro curso em que criamos um arquivo de configuração. E essa é a configuração principal do servidor web. Apenas armazenado como um arquivo é muito tradicional para Linux aqui, apenas arquivos de texto simples. Fazemos exatamente a mesma coisa para o PHP, então para o tempo de execução da linguagem, e você pode ver isso aqui, um pouco mais de coisas. Todos esses comandos são, na verdade, como mover arquivos, editar arquivos. A última coisa que estamos fazendo é criar um usuário do site que o site será executado, pois isso permite que meus alunos do outro curso realmente executem vários sites em um único servidor, que era a maneira normal de fazer isso. É como criar um usuário, criar uma senha aleatória, configurar as coisas com segurança. Então, a essência desse projeto realmente estará neste arquivo aqui. E esse é o processo real de configuração do aplicativo WordPress agora que esse tipo de plataforma de hospedagem foi configurado. Então esse é meio que o aplicativo que está sendo executado em cima de tudo o que você acabou de ver. Você pode ver onde eu escrevi documentos para isso. Você pode ler isso em profundidade, se quiser. Mas vamos criar um usuário do sistema, que tipo de conectar tudo, criar um diretório para este site entrar. Estamos criando um arquivo de configuração de servidor web específico apenas para este site que vai além da configuração básica. E então fazemos algumas coisas mais assistidas e parecidas. Mova um arquivo, exclua uma coisa, adicione algo, crie uma string aleatória. Para obter uma senha. Defina, execute alguns comandos em um shell SQL. Baixar algo como excluir outra coisa ou, você sabe, descompactar e desarquivar algo, reiniciar e mexer em alguns serviços, alterar um arquivo, esse tipo de coisa. Essas são todas as coisas que o packer pode fazer por você automaticamente ou que você pode fazer com um script de shell ou qualquer outra coisa. Não há nada aqui que não seja como automatizável. Então essa é a visão de alto nível, caso você esteja curioso para saber o que esse projeto que você está pasteurizando está realmente fazendo embaixo das cobertas. Agora, novamente, pela 20ª vez, eu só queria ter certeza absoluta de que, você sabe, isso. Não se sinta estranho se você não entender completamente tudo o que acabei de te mostrar, você não precisa. Uma das coisas maravilhosas e surpreendentes sobre o Packer, na verdade, sobre a automação que estamos fazendo neste curso é que esse é um dos benefícios. É que, uma vez que algo está envolvido em uma camada de automação, nem todo mundo que usa essa automação ou meio que consome o que estamos encerrando precisa entender completamente o que está envolvendo. Nesse caso, todo esse material manual e todos esses arquivos de configuração e cada diretiva e cada arquivo, você não precisa entender isso. Tudo o que você precisa entender é que é um arquivo e vai para algum lugar. E se ele for para algum lugar, e então tudo estiver configurado corretamente, isso vai funcionar. Isso é tudo que você precisa saber sobre isso. Claro, se você está curioso e quer se aprofundar, isso é maravilhoso. Mas eu acho que essa é uma das grandes vantagens do que você está fazendo neste curso é ver que você não precisa entender completamente os detalhes de cada coisa porque você está apenas construindo um camada de automação, que é uma espécie de camada de abstração em torno disso. Está bem? Então você está muito, muito bem, eu posso entender a coisa do empacotador que estamos fazendo com isso, mas você não precisa entender isso perfeitamente. Ok, então espero que isso tenha colocado seus medos e feito você se sentir melhor por não entender totalmente cada comando aqui. E se você fizer isso, ótimo, não é uma configuração particularmente complicada que temos aqui, mas é muito comum. Você verá que isso é, esse é o tipo de coisa que está executando a produção em todo o mundo na vida real. Portanto, é muito parecido o que você verá se estiver usando o Packer. 7. Tour de código de projeto: Então, vamos pular para o código. Se formos até a seção de construção aqui, vamos passar por isso. A primeira coisa que acontece é há uma provisão de shell ou que executa o script de configuração da AMI do diretório de scripts. Ok, vamos para o diretório de scripts, scripts de configuração da AMI. Vamos dar uma olhada nisso. Você deve se lembrar de algumas dessas coisas da seção de scripts do Bash. Mas, basicamente, acabei pegar as partes principais da configuração da plataforma de hospedagem, como faço no curso em que estou orientando você e meio que explicando o Linux neste momento. Bem, agora você já sabe como o Linux funciona e podemos fazer tudo isso em um script. Então, eu realmente acabei de transpor todos esses comandos para um script. Este é um script bash e você pode ver install my, my SQL Server Engine X PHP, MySQL, PHP, npm, iniciar e habilitar esses serviços para que eles comecem na inicialização. Na verdade, eu não acho que realmente preciso iniciá-los porque eu sou apenas, eu vou imaginar esta máquina, mas isso realmente não importa. Então eu instalo um monte de extensões PHP. Estes são os que você precisa para o 2204. Essas são algumas extensões que eu meio que tenho penduradas, aguardando mais pesquisas. Mas as coisas funcionam sem eles. Está tudo bem. Eles não existem em 2204 ou foram incluídos. Outros nomes de pacotes, fazemos algumas configurações do NGINX, como algumas das coisas das quais nossa configuração do NGINX depende, como criar esse diretório, etc. algumas configurações do NGINX, como algumas das coisas das quais nossa configuração do NGINX depende, como criar esse diretório, etc. que é executado PHP F P, M. Eu posso fazer um commit para mudar isso. Você não precisa se preocupar muito com isso. Legal. Então esse é o final do roteiro. Assim, você pode ver que isso nos leva ao fim do gerenciamento de serviços. Então, começaríamos a instalar, iniciar e ativar os serviços de que precisaremos. Vamos ver o que os próximos fornecedores fazem. Então você pode ver agora que estamos movendo arquivos. Este é o arquivo de configuração principal do engine x, com o qual você certamente já está familiarizado. Nós vamos, isso é como o arquivo de configuração do site WordPress, que vai direcionar o tráfego para o seu servidor de aplicativos, seu servidor PHP. A configuração do PHP FEM para o seu site vem aqui. Vamos dar uma olhada rápida neles. Então essa é a configuração principal do engine x. Você está muito familiarizado com isso. Isso é o que faz o seu P, é por isso que fazemos isso. Crie esse diretório de cache. O arquivo de configuração do site para o Engine X aqui, você está totalmente, deve estar totalmente acostumado com isso no curso. Agora, nas instruções que eu tenho, eu tenho isso como uma variável de shell e você pode mudar isso à medida que você trabalha com essas coisas. Obviamente, se você estiver configurando isso para si mesmo, você simplesmente clonaria isso e resolveria o tutorial Linux para qualquer domínio em que você vai configurar o site, qualquer usuário que você vai usar , etc. Então, se você literalmente apenas encontrar e substituir no tutorial do diretório de pacotes Linux por qualquer que seja o nome do seu site ou nome de domínio, então você deve ficar muito feliz. Não é preciso muito. O mesmo acontece com o PHP SPM. Na verdade, isso não se importa com o domínio. Apenas o diretório inicial do seu usuário, esse tipo de coisa. Nós os colocamos no lugar, praticamente autoexplicativos. E então nossa provisão final ou realmente instala o WordPress. E você verá a configuração do site WordPress. É como todo esse processo que estamos fazendo aqui nas instruções originais do GitHub que eu mostro no vídeo do curso. Lovely também é um monte de arquivos de configuração em linha. Agora vamos fazer, esses são alguns dos arquivos de configuração que acabamos de escrever sobre os quais estávamos falando. Agora vamos fazer tudo isso simplesmente em um roteiro. E esse script é o script de configuração do site WordPress. E essa é uma espécie de versão adaptada do que estou fazendo nesse arquivo markdown. Há alguns tipos de problemas que eu tive que resolver, que é, como podemos definir que você está no meu SQL Pass é uma coisa interativa. Então, eu simplesmente ecoo isso para que você veja durante o processo de construção. Você pode copiá-lo durante o processo de compilação. Isso não é perfeito. Por exemplo, se você estivesse fazendo isso profissionalmente, provavelmente não iria querer isso nos logs do sistema de compilação ou o que quer que seja. Mas, como neste curso, está tudo bem. Se você está fazendo isso por si mesmo. Para uma pequena empresa, você não vai manter esses registros para sempre. Eles vão literalmente ecoar em uma concha. Algo assim, onde você verá que um script de configuração do empacotador está registrando algo que você era meu passo SQL é isso, você sabe, não, não é um grande problema. Você não é como salvar isso para sempre. Então você coloca isso no seu gerenciador de senhas e está pronto para começar. Então, fora isso, isso realmente segue as instruções muito, muito, muito de perto. Simplesmente baixando o aplicativo WordPress ao compactá-lo, arquivá-lo, descompactá-lo e configurações e permissões nesse diretório inicial e sair. E nesse ponto, praticamente tudo deveria ser configurado. O que o Packer faz é quando chega à última coisa na última etapa de construção, é tipo, ok, legal. Se essa coisa ainda estiver responsiva, vou assumir que foi bem-sucedida. E eu vou imaginar essa máquina. E o que ele fará é criar uma AMI, uma imagem de máquina da Amazon. Onde quer que esteja o estado desta máquina. 8. Instalar Packer: Então, vamos falar sobre a instalação do Packer. Você pode descrever um binário se quiser. E eu acho que está tudo bem. E isso é da página de downloads. Basta pegar a versão mais recente para qualquer plataforma em que você estiver. E a propósito, posso dizer que adorei que esses caras estão aqui, só me faz feliz. Se você estiver no OSX, poderá usar o Homebrew com esses dois comandos. No Windows, você tem binários aqui. No Linux, você pode adicionar as versões da HashiCorp, repo e, em seguida , instalar todas as ferramentas hace de lá. Eu só queria mostrar que a opção de chocolate no Windows é provavelmente a mais legal. Se você usa o gerenciador de pacotes chocolatey porque deseja fazer parte do mundo legal de gerenciamento de pacotes de recursos que vem acontecendo em todos os outros lugares por um bom tempo. Chocolate é provavelmente o que você quer. E como você pode ver, você pode. Ele é mantido por terceiros, mas ainda é possível instalar dessa forma. Então, para mim, eu já instalei Packer e você pode ver que em qualquer ambiente semelhante ao Unix, você provavelmente será capaz de executar qual, qual Packer. E isso mostrará onde ele está instalado. E você pode ver que eu instalei isso via Homebrew. Se você estiver baixando o binário em um sistema semelhante ao Unix, provavelmente desejará colocá-lo no local do usuário. E isso vai precisar de um pseudo. Mas isso é praticamente tudo que você precisa fazer. E então você tem o Packer instalado e podemos ir a partir daí. Vejo você no próximo vídeo. 9. Criar uma chave de SSH no AWS EC2: Tudo bem, vamos falar rapidamente sobre como criar um par de chaves. Se você ainda não tem um, novamente, se você tem um que você pode usar um par de chaves SSH para o EC2, então você pode pular este vídeo. Mas para aqueles que não o fazem, você pode no painel principal clicar pares de chaves aqui são realmente de qualquer lugar no EC2, você pode rolar para baixo até rede e segurança à esquerda, clicar em pares de chaves e, em seguida, criar um novo par de chaves. Vou chamar o meu 2022, Cohen. Vamos fazer isso na chave EDA para 5519 no formato PEM e criar esse par de chaves. E você pode ver isso apenas faz o download automático do arquivo. Vamos fazer uma longa lista do nosso diretório de Downloads com nossa chave 2022 d Cohen. Você notará uma coisa que confunde muitos novos usuários, que é que essas permissões 644, permitem que isso seja legível mundialmente, que na verdade o SSH verificará n, não assim em tudo. E simplesmente não permite que você se conecte. Muitos novatos ficam presos aqui e tudo bem. É uma coisa estranha. Eles são criados assim. Mas tudo o que vamos fazer é basicamente aqui nosso diretório SSH com nosso material SSH apenas um par de chaves. Então, vamos definir as permissões corretamente e, em seguida, simplesmente movê-las para o diretório SSH. Vamos dizer CH, meu, dê 600. Downloads. 2022, traço d Cohen. Agora você pode ver que removemos todas essas permissões de grupo e outras em três. Desculpe, não estou destacando isso corretamente. Então isso é outra pessoa no sistema, isso é grupo. Portanto, o grupo do proprietário não pode ler e qualquer outra pessoa no sistema também não pode ler. É apenas o proprietário que leu e escreveu, e o proprietário é Dave. Agora podemos realmente mover esse arquivo. Quero dizer, você poderia tê-lo movido antes também, mas em nosso diretório SSH listará o diretório SSH com uma lista longa e isso apenas mostrará que tudo isso é bom e limpo. Eles têm as mesmas permissões. Agora, a última coisa que vou mostrar com as chaves e acho que esse é apenas um recurso de conveniência maravilhoso. anúncio SSH é o seu agente SSH, como se fosse um demônio que corre. E o que você pode fazer é basicamente quando você se conecta às suas instâncias do EC2 ou qualquer outra coisa, especialmente se você tiver muitas chaves em seu diretório SSH, ele tentará apenas as três primeiras que encontrar. E então você pode estar sem tentativas. Então as pessoas começam a fazer como SSH, dash, eu gosto de alguma chave, e depois faço à distância ou o que quer que seja. Isso é uma coisa muito comum de se ver. Uma maneira de evitar isso é simplesmente adicionar o que você deseja usar ao seu agente SSH. E a maneira como você faz isso é com o SSH 2022 d. Cohen. Se houver uma senha nele, ele solicitará essa senha uma vez e a manterá descriptografada na memória. E o que é realmente bom nisso é que, então, se você estiver usando isso em todas as suas instâncias de IP públicas, agora você pode se conectar a todas elas sem ser solicitado novamente para o seu senha de cada vez ou como para cada comando ou coisas assim, mostre que você adiciona novamente, SSH listado lá. E se você quiser limpá-lo, você pode excluí-lo. Legal. Então esse é o tipo de ciclo de vida. Quando você reinicializar sua máquina, o SSH add ficará vazio novamente quando você reiniciá-lo. Então, isso é como uma coisa a se fazer uma vez por inicialização. É bem vermelho. Lá vai você. Isso é o que você precisa saber sobre chaves com a Amazon. E te vejo na próxima. 10. Criar um usuário do AWS IAM para Packer: Tudo bem, neste vídeo, vamos dar uma olhada na criação acesso programático para o Packer na Amazon. A maneira como fazemos isso é usando algo chamado IAM. É um painel e serviço totalmente separados na Amazon. Gerenciamento de identidade e acesso. O que vamos fazer lá é criar um usuário que tenha acesso à API, acesso programático, eles chamam isso. E o que esse tipo de cuspe para você é realmente apenas uma chave e um segredo. Esse é o tipo de login automatizado os empacotadores usarão para identificar como, ei, estou autorizado a fazer isso no Dave ou na sua conta da AWS. E então os empacotadores vão usá-los para ativar sua instância, criar um security group que ele possa se conectar a essa instância, criar uma chave SSH para que ele possa fazer login nessa instância. Ele precisa de permissão para criar uma AMI para criar uma AMI a partir de uma instância em execução. Todas essas permissões, porque este é um curso empacotador e não um curso da AWS. Uma execução completa da AWS e os custos de produção seriam como 600 horas. Eu exigiria que você fizesse um estágio de três meses comigo. Antes de eu chamá-lo de feito. Este é principalmente um curso de empacotador, então vamos fazer isso de forma simplificada. O que isso significa é que vamos dar a esse administrador de conta acesso, o que é muito para fins de produção. Não precisa de tudo isso. Na vida real, você reduziria isso para algo que é exatamente o que o empacotador precisa. Tudo bem, dito isso, vamos pular e fazer um pequeno login. Em serviços. Vamos para o IAM. Vamos analisar os usuários e adicionar um usuário. Agora, o que realmente queremos é o acesso à API. Então vamos chamar isso de d Cohen May, e queremos acesso programático. Então, isso vai ser acesso à API. Não precisamos que isso seja um novo usuário de console que possa fazer login e usar essa GUI que estamos usando. Não é para isso que serve. Dê um nome a ela e certifique-se de que seja uma chave de acesso para acesso programático. Vamos fazer isso de uma forma talvez, talvez a mais escapadela que tenha apenas acesso de administrador de tags. Isso não é algo que você queira fazer na produção. Na produção, você deseja, por exemplo, para o Packer, criar uma função de empacotador que simplesmente tenha apenas as permissões necessárias. Então, como EC2 dot star se você quiser ser bem bruto, mas mais como criar instância, como criar AMI, criar chave, criar uma chave EC2, excluir chave EC2. Viu o que estou dizendo? É como se eu estivesse mostrando o esboço geral de como isso funciona. Então, vamos usar o acesso de administrador, o que dá tudo a você. Mas, novamente, não é uma boa ideia para qualquer produção. Este é o CH mod 777 da AWS. Agora você só verá a chave de acesso secreta uma vez. Você vai querer copiar isso e salvá-lo em algum lugar, estou salvando isso em um buffer e meu editor, o ID da chave de acesso. Mostre isso. Não há problema em você ver isso, porque vou excluir essa chave antes mesmo de pensar em enviar esses vídeos. Mas, novamente, isso acontece imediatamente em um gerenciador de senhas se você for usá-lo por qualquer período de tempo. OK. Então, agora temos todo o acesso que precisamos configurar. Posso apenas dizer que isso é um erro bizarro de ortografia, gramática, gramática para ter o nome de usuário criado. É tão estranho. Deveria ser quem está, quem está escrevendo essas coisas? Amazon, vocês não ganham $70 trilhões por ano? Você não pode verificar a ortografia. 11. A construção de pacotes: Ok, então você instalou o packer, criou uma chave SSH em seu console da AWS que você pode usar com isso, você criou uma conta do IAM para que você realmente tenha acesso programático para o Packer na AWS. E agora você só quer correr isso e ver o que acontece. Acho que é uma ótima maneira de aprender. Vamos analisar isso e ver o que acontece. Aqui estão os passos que você precisa seguir para chegar lá. Você fez o primeiro passo. E você pode usar o projeto de demonstração aqui sem escrever nada, apenas para ver como é o processo antes de embarcar em seu próprio projeto, onde talvez converta algo que deseja. trabalhar em um projeto de empacotador. Então você tem acesso à API. Essas são apenas as etapas manuais que vimos nesse vídeo. Aqui está o momento da verdade. Agora você precisa exportar isso em seu shell. Então, eu tenho essas chaves aqui. Você pode tentar usá-los, mas eles não funcionarão porque estou desativando-os logo após a criação deste vídeo. Vou copiá-los e exportá-los em um shell. Agora, se você não está muito familiarizado com o Linux, tudo bem. Eu estou basicamente no meu pacote ou diretório aqui, o diretório do projeto. E eu vou literalmente colar essas duas linhas. E o que isso significa é que no meu ambiente shell, essas variáveis de ambiente serão definidas iguais à minha chave de acesso real, ID e segredo. E o que isso significa é que, quando o Packer é executado, ele vai olhar automaticamente no meu ambiente de shells para ver se essas coisas estão configuradas para algo que não está vazio. Isso é só para ver se eles existem. E então ele tentará usá-los para fazer login na Amazon e fazer toda a mágica do empacotador que ele faz. Então, agora que isso está feito, podemos executar um dos comandos do packer, que é o init, que fará o download de todos os plug-ins necessários para os construtores necessários, como o construtor do Amazon EBS. E basta inicializar o Packer. E então continuaremos a partir daí. O Packer terminou de inicializar e isso é só porque eu já desenvolvi nesta máquina. Então, assim, essas coisas já estão instaladas. Mas na sua tela você pode ver como aveia fazendo o download do construtor Amazon, esse tipo de coisa. Vou fazer um vídeo sobre isso um pouco mais tarde, mas deixei algumas pequenas mudanças que o formato do empacotador faria. Nada funcional ou grande. Mas esses comandos são legais de executar, então podemos tentar validar o Packer. Eu vou te mostrar a diversão para mais tarde. Mas você pode ver que, basicamente, o Packer superou apenas procura problemas de formatação que são como convenções. Vá colocar isso. As convenções de Hcl e a validação do Packer realmente parecem ver se você tem todas as peças que o empacotador procurará em seu modelo. Então, agora podemos ir em frente e construir isso. E a maneira como fazemos isso está no diretório em que esse arquivo está. Obviamente, podemos dar ao Packer o comando build e presumir novamente que exportamos essas variáveis do shell como se você tivesse um conjunto de chaves de acesso válido, essencialmente login aqui, da Amazon. Então isso vai funcionar. Agora, se você estiver fazendo seu próprio projeto depois disso e estiver fazendo isso no Azure, digamos que tudo bem. É só que você vai precisar o Construtor do Azure exija um conjunto diferente de credenciais lá e seu ambiente de shell que ele procurará. Alguns provedores exigem um arquivo de configuração que esteja por perto ou que você diga onde ele está. Estamos falando apenas sobre a AWS aqui. Então, vamos executar o packer, criar o WordPress, AWS Ubuntu e ver o que acontece. Está passando por todo o processo. Você pode ver que está criando um par de chaves temporário lá. E isso é, na verdade, um par de chaves separado, não o que criamos. Portanto, isso é apenas para o Packer fazer login e executar provisioners com o par de chaves que você criou antes de ser usado. Essa instância será marcada com esse par de chaves. Ele será carregado e você poderá usá-lo para um login SSH então isso vai demorar um pouco. E você pode ver que , enquanto isso, podemos ver uma instância que foi criada. Agora está sendo executado. Parece que ainda está no estado de inicialização, mas na verdade já está conectado porque você pode ver que estamos executando um pacote até uma atualização. Então isso é como apt-get update e apt-get upgrade de nossos scripts. E está parecendo com o que esperamos ver. Apenas se você estiver curioso, Packer cria todos os tipos de outros recursos apenas como parte do construtor do Amazon EBS. Então, é definitivamente como acessar a API da Amazon. Ele está criando uma instância. Ele está criando um grupo de segurança único personalizado apenas para essa compilação de empacotador. E isso tudo vai dar certo e eu vou deixar aqui. Eu posso acelerar isso porque vai demorar um pouco. Você só vai assistir esse Build ir. Você pode ver aqui algumas etapas certas, fazendo o upload dos arquivos do mecanismo X. Portanto, essa é outra provisão ou upload desse arquivo de configuração NGINX, e isso é apenas para o diretório inicial do B12. Por enquanto. Ele executa o script de configuração do empacotador. Tudo isso aconteceu. Ele exibe um My Sequel, uma senha MYSQL gerada aleatoriamente. Nós podemos ficar com isso. Tem que jogar isso nas chaves. E agora estamos simplesmente criando uma AMI. O que isso significa é que podemos analisar as AMIs e podemos ver que essa é uma AMI pendente. Está sendo cozido agora mesmo fora da nossa instância ou a instância é interrompida. Ele cria uma AMI a partir dele. Quando essa AMI estiver realmente concluída, nossa instância será encerrada. Tudo bem, e você pode ver que terminamos e tudo o que é feito assim que perceber que a AMI não está mais pendente, mas pronta. Ele sabe que pode limpar tudo o que criou para essa execução, incluindo o grupo de segurança que vimos antes, o par de chaves que você procurou criado logo no início. E a maior parte desse tempo realmente é. Quero dizer, você viu que era apenas criação da AMI. Então, agora, se eu atualizar isso, o status deve estar disponível. A instância foi limpa. 12. Usando o AMI para hospedar um site do WordPress: Agora que criamos nossa imagem, você pode ver que terminamos aqui. Essa coisa ecoou a senha do MYSQL. Ele está criando uma AMI aqui em ecoa o nome que lhe foi dado. Depois que a imagem é concluída, ela encerra a instância de origem. Portanto, a instância original em temporariamente girada para configurar ou executar scripts sem sorte contra. Isso foi quebrado novamente. O security group usado para permitir que ele próprio acesse a instância com o par de chaves temporárias que ele criou. Todas essas coisas ganharam dois. Portanto, esse é um bom processo de limpeza. E você pode ver que tudo o que resta é com eles essa imagem. Agora, você poderia, se estivesse usando o Terraform ou algo assim, agora você pode referenciar essa imagem não necessariamente por um MID, mas pela fonte em que é como esse formato basicamente como ID da conta, nome. Se você dissesse ao Packer para nomear isso como data do traço, é uma boa maneira de organizá-los, mas assim como vimos neste pacote ou configuração faria a mesma coisa e terraform usando uma fonte de dados onde Você acabou de dizer , ok, o dono serei eu, minha conta. O nome vai ser o que eu chamei de mais recente será verdade. Essa é outra maneira de obter basicamente a compilação mais recente ou a compilação de produção. Se você estava usando algo como o Terraform, está um pouco além do escopo deste curso, mas apenas dizendo, como é o processo se lançarmos uma instância a partir disso? Bem, já que isso é, vamos chamar esse tutorial de Linux web. E você pode ver que ele está usando essa AMI. Você pode acessar isso no menu da nova instância para selecionar a AMI aqui. Escolha o que quiser dizer que vou hospedar. Eu não sei. Vou hospedar um site de médio porte. Alguns, eu não sei, alguns 100 usuários. Talvez seja uma loja, precisa de algumas lembranças. Talvez eu diga dois ou quatro vCPUs e talvez oito GB de memória para um site WordPress maior, você selecionaria apenas um par de teclas de teclado que você tem. Https, HTP, vai ser um servidor web. Permita, você sabe, talvez apenas do seu IP ou apenas da sua rede privada, da VPC, seja o que for. E eu realmente iria para o GPT-3. E talvez, eu não sei, chame isso para um site WordPress maior. Você pode ter muitas imagens como dados enviados pelo usuário, seja qual for o espaço em disco barato. Então 5000 shows, essas coisas são como, você sabe, isso não é realmente o que você está pagando por isso. Então, sim, isso parece legal. Iniciaremos essa instância e mostrarei quando fizermos login nela. Então, isso agora está sendo executado. Provavelmente ainda está inicializando, mas vou para a rede e copiarei o endereço IP público. Eu vou para o SSH para adicionar este endereço. Estou assumindo. Sim. OK. Meu agente SSH já tinha as chaves. É como se você basicamente estivesse usando sua chave SSH padrão nesta máquina, e esse fosse o seu par de chaves SSH que esta máquina está criando com essa instância, então isso funcionará. Caso contrário, você pode ter que fazer algo assim. Você pode ver que essa é apenas uma chave de amostra que eu criei. É uma chave PIM que eu criei na AWS e baixei. Se você está confuso sobre como as chaves e as regras e tudo mais, como tudo isso funciona. Então você vai querer assistir ao meu vídeo anterior da Amazon como fazer isso na Amazon em geral, porque se você ainda não pode fazer isso manualmente na Amazon, vai ser difícil fazer isso de forma automatizada para que tudo pareça mágica. De qualquer forma. Você pode ver que agora estamos sentados neste host, IP privado. Sim, você pode fazer algo como se um machado estivesse correndo. Eu sei que é porque o criminoso ainda faz isso parte do nome do serviço. Acho que sim. Você pode ver. Então, assim como isso inicializa, você pode ver o pool PHP f Pm chamado tutorial Linux está configurado. Então, isso está basicamente funcionando. Podemos ver o site WordPress se editarmos o ETC. Hosts para gostar, na verdade, eu não acho que vai funcionar porque o tutorial Linux.com usa hs ts, então ele vai insistir em HTTPS de qualquer maneira, resumindo a história. Isso agora seria literalmente apenas uma nova instalação do WordPress executando todas as coisas que configuramos, meio que prontas para configurar e começar. Então, este é realmente o, o, todos os comandos manuais estão sendo executados ao longo do curso quando você está aprendendo. Com uma bela e doce instância do WordPress, pronta para você configurar seu site enquanto ele estiver executando um servidor WordPress, mas para você realmente configurar o site WordPress. E sim, é uma boa maneira de empacotar isso na vertical. E sempre que você quiser, eu não sei, você não quer mais lidar com isso. Você acabou de encerrar a instância e tudo desaparece. Obviamente, uma vez que você tenha sites configurados nisso, você quer ser como capturar a instância e não apenas encerrá-la, certo? Porque esses são os seus sites rodando nele. Mas sim, é um bom tipo de fluxo de trabalho de desenvolvimento. E o fato de que você pode usar rapidamente o Packer assim dentro algumas 100 linhas para incluir todos os scripts de configuração, para ter uma pequena imagem legal que está sempre disponível para você. Eu mantenho isso por aí apenas para testes. Eu o mantenho por perto para verificar se alguém gosta relata que há um bug. Normalmente não é um bug e é como se eles ficassem confusos sobre algumas das instruções. Então, basicamente, vou usar a imagem mais recente ou qualquer outra coisa. Vou apenas mudar a imagem de origem para ser o que eles estão usando. Veja se é apenas um, apenas um problema de imagem ou geralmente é como um grande problema. Então, espero que seja divertido. E espero que isso lhe dê uma ideia de uma das maneiras pelas quais você pode estender isso, torná-lo maior, torná-lo mais profissional, automatizado? Sim. Se você conhece coisas como Terraform ou CloudFormation ou tem algum fluxo de trabalho de DevOps em ação. Espero que isso ajude você a ver como você sai de um manual. Tipo, Oh, eu estou apenas escrevendo isso enquanto eu estou descobrindo e trabalhando nele comando por comando. Como você vai disso para uma compilação repetível, como por meio do Packer, para uma parte de um pipeline maior, onde tudo o que você precisa fazer referência é um ID de AMI, é realmente a imagem mais recente que recebeu o nome de uma determinada coisa. Se for isso, é uma boa maneira de abstrair tudo isso. Espero que seja útil e nos veremos na próxima peça. 13. Fluxo de trabalho de documentação e desenvolvimento de pacotes: Vamos falar sobre como navegar nos sites dos empacotadores, especificamente na documentação, para que você possa aprender a pescar depois deste curso. Agora eu mostrei a você um tipo muito específico de introdução e é especificamente sobre a AWS. É muito específico para bem, não tão específico, mas é específico para o projeto que fizemos, que é essa coisa de hospedagem WordPress , o que você precisa para eles. Há muitas outras coisas que você pode fazer com o Packer. A forma geral, sempre será assim. E isso é o que eu realmente gosto ferramentas HashiCorp é que elas são ferramentas afiadas da mesma forma que muitas Linux e Unix são ferramentas afiadas. Eles fazem uma coisa, eles fazem isso muito bem. Eles são flexíveis para que você possa passar um tempo junto com outras ferramentas da maneira que precisar. E eu acho que no site HashiCorp Lauren, É um bom lugar para ver um pouco mais de uso na vida real do Packer. Por isso, cobrimos muitas coisas na trilha da AWS. Mas se você quiser criar imagens do Docker como o Packer, pode fazer isso. Se você quiser criar em uma nuvem diferente, GCP, Azure, esse tipo de coisa. Você pode querer fazer isso usando o Packer com outras ferramentas, etc. Mas você pode navegar por isso sozinho. O que vou mostrar a vocês é o Packard io slash docs. Acho que este é o lugar onde passo o tempo quando estou apenas construindo um projeto de empacotador. Tudo o que você vai precisar está aqui. Esses documentos são fantásticos. como você deseja se conectar à sua máquina? Fontes de dados? Você vai passar muito tempo em fornecedores. Eu só quero que você saiba que essas coisas estão aqui. E como quando você está perdido, digamos, Oh, você esqueceu como transferir arquivos. Algo que fazemos neste curso algumas vezes. Bem, basta acessar o arquivo de provisioners e você obterá alguns exemplos. Agora estamos usando o HCL só porque é muito mais limpo. Mas Jason, você pode querer isso para compatibilidade com outra coisa, alguma outra parte do seu pipeline ou o que quer que seja. Isso fornece um exemplo do uso real e dos documentos necessários. Um parâmetro opcional, explica tudo em detalhes, fornece muitos exemplos de coisas específicas de casos de uso. Eu só quero que você saiba. Estou dando explicações muito sucintas para que você entenda como uma coisa funciona no contexto desse projeto que estamos fazendo aqui. Mas obviamente há mais coisas nas docas e você não está gastando seu tempo para me ouvir ler os documentos para você. Eu só quero que você saiba que eles estão aqui e que você deveria usar isso. É completamente normal que seu fluxo de trabalho enquanto você estiver criando seu próprio projeto do Packer, abra isso em uma guia e, em seguida, abra o projeto do Packer em outra guia. E é assim que você está trabalhando nisso. Você está tipo, tudo bem, então eu pesquisei a coisa do arquivo. Bem, agora eu posso escrever minha provisão de arquivo ou aqui, e lá está você. Com base em, com base no que você aprendeu com os documentos. Isso é algo que usaremos muito além do material deste curso. E espero que isso ajude você a começar usar o futuro que você terá quando eu não estiver aqui para segurar sua mão em um projeto. 14. Plugins de pacotes úteis: Vamos falar sobre os plugins do Packer. Até agora, você usou plug-ins do Packer neste projeto que são construtores, mas existem outros tipos de plug-ins como fontes de dados e comumente pós-processadores. E a ideia é que um plugin é realmente uma forma de encapsular um mini aplicativo separado que sabe como fazer uma coisa. Normalmente, comunicar-se com uma plataforma para criar uma imagem é fazer a coisa. Portanto, no caso do projeto de exemplo da Amazon, no caso do plug-in e construtor da Amazon. Então, o que você vê nisso, esse bloqueio de origem em nosso código que usa o construtor do Amazon EBS e que é fornecido a você pelo plug-in da Amazon. E por que não olhamos para isso? E então também veremos alguns outros que eu acho interessantes ou comuns, populares e que você quer usar, e eles vão te dar uma ideia de como isso funciona. Então, eu estou no tipo de plugins, eu não conheço o site do diretório docs no Packer.io. E se olharmos apenas para a visão geral dos construtores no plug-in do Amazon EC2, você pode ver que esse é o que estamos usando, certo? Então, a partir deste plugin, este é o que estamos usando, mas temos outras coisas disponíveis para nós, como poderíamos ter, como um armazenamento de instâncias, AMI, esse uso, cada um deles, mostrarei o formato apenas quer, que é como, ele vai te dar um exemplo de como usá-lo. Ele descreve as coisas e depois entra nos tipos de argumentos que isso espera obter, variáveis de ambiente que ele procura, esse tipo de coisa. Então, para a Amazon, acho que as coisas interessantes a serem observadas, obviamente, o construtor EBS, que estamos usando. A importação da Amazon para um pós-processador é outra coisa. Você meio que ganha de graça com isso. Se você estiver usando uma construção diferente ou para produzir algo que produza um OVA. Você pode trazer isso para a Amazon fazendo com que esse pós-processador o converta em uma AMI definitivamente seja útil às vezes. Gerente de Segredos, acho daquelas coisas que acontece quando você sai do nosso exemplo, nosso projeto de exemplo simples para este curso. E então você adapta isso ao mundo real. Uma das primeiras coisas que muda são os tipos de fontes de dados externas de que você precisa. O fato de que você não pode, você não pode simplesmente embaralhar um monte de textos simples, como material chave ao redor e como submetê-lo a repositórios. É assim que as coisas ruins acontecem, e é também assim que sua equipe de segurança torna sua vida uma vida ****. Então, você vai querer basicamente ter uma maneira de obter segredos em seu modelo do Packer. Essencialmente, seu Packer cria, e esse é um mecanismo na Amazon. Obviamente, existem outros análogos no Google Cloud, acho que até a Digital Ocean tem algo secreto agora. Obviamente, Azure, etc. Todos eles terão um mecanismo como esse. E é claro que todos serão um pouco diferentes, mas muito parecidos. E é assim que você os usaria. Acho interessante olhar para outros provedores de nuvem, essencialmente criadores de AMI ou criadores de imagens. Então, eu sempre começava com o conceito de alto nível na visão geral, meio que descobrir o que você está fazendo. E então, como queremos que o Azure Resource Manager crie e capture uma imagem. Agora que você sabe o que quer, você cava aqui, olha, ok, como essa coisa se autentica? O que eu preciso? Como nós, como você gosta de gerenciamento de identidade e gerenciamento de acesso fora do gerenciamento. De que material ele precisa? Parâmetros ou atributos obrigatórios e opcionais. Sandwich ECP novamente, você vê que é como se um tipo muito semelhante de invocação permanecesse um pouco mais alto no próximo é que eu não quero que isso demore muito, mas eu gosto do Digital Ocean, Então eu vou dar um grito para eles aqui. Outra coisa que eu vejo aqui que é interessante é mais sombria. Eu acho que este é um que você vai usar muito , porque eu acho que isso mostra o quão flexível esses plug-ins tornam Packer, porque todas as coisas do empacotador que você aprendeu ainda são boas. Então, se um dia suas empresas gostarem, tudo bem, sem mais VMs como nós estamos lotando, eu não sei, Kubernetes nômades, tudo vai ser uma imagem de contêiner agora. Tudo bem. Você pode reutilizar muitas das suas coisas e fazer com que a saída seja uma imagem do Docker. Quero dizer, você obviamente vai querer emagrecer essa imagem. Ninguém gosta de 600 meg, como uma imagem base B12. Mas mesmo que você vá para o alpino ou algo mais fino, é como se você ainda pudesse usar o mesmo processo e o mesmo fluxo de trabalho e ele se encaixa da mesma maneira. E é como se você não fosse, não é um projeto Greenfield gigante que ainda tem 100 bugs que você é suficiente para superar antes que funcione. Será apenas construtor um pouco diferente que espera entradas ligeiramente diferentes, tem saídas ligeiramente diferentes para aqueles que usam o Chef ansible Config Management, meio software mais tradicional. Existem plugins para isso. Então, se você já escreveu uma tonelada de ansible, você pode reutilizar tudo isso. Ansible. Como se você não precisasse converter nada, basta usar seus playbooks existentes. Traga-os e envolva isso nesse fluxo de trabalho. Novamente, é como se seu fluxo de trabalho fosse preservado, seu fluxo de trabalho fosse consistente. E então você pode fazer com que o Packer chame diferentes ferramentas que estão realmente gerando o tipo de não precisa ser tudo scripts bash como no nosso exemplo aqui. Faça tudo isso com o Ansible e converta-o, envolva-o no Packer e, em seguida, aproveite o poder que Packer oferece para fornecer um monte de saídas diferentes que são artefatos disso. Mais uma coisa que eu acho legal é obter como fonte de dados. A fonte de dados permite que você basicamente busque um repositório e seguida, tenha alguma granularidade com forma como você navega para o que precisar. Espero que seja uma introdução rápida e útil aos plugins do Packer. Espero que você entenda que tudo isso é que o plugin é realmente embrulhado para você e abstrato para que você não precise lidar com isso. Aqui dentro. Nesses plugins. É como chamadas brutas de API contra esses provedores de nuvem, faça isso e faça outra coisa. Ok, se isso falhar, lide com o erro de alguma forma. É como milhões de linhas de código aqui que você não precisa escrever. Realmente trate este menu à esquerda aqui, bem como um menu. Você vai olhar para baixo, ver o que parece gostoso, o que você precisa fazer, o que quer que esteja tentando fazer, e use-os para montar o tipo de construção ou artefato que você precisa. 15. Instruções de projetos de cursos: Pessoal, uma palavra rápida sobre projetos. Eu acho que obviamente eu o orientei em um projeto, mas acho que o próximo passo agora que você tem o básico do Packer é criar um projeto próprio do zero, não acompanhando o tutorial, não olhar para o código de outra pessoa. Isso é bom para aprender o básico de algo, mas você já fez isso agora. Então, para onde você vai a partir daqui? Eu sugiro que você faça um projeto da vida real para realmente parecer cimentar essa habilidade e esse conhecimento em sua mente e para torná-lo pronto para uso em entrevistas na vida real para criar sua própria vida. mais fácil, seu trabalho. Vou dividir isso em duas categorias. Basicamente, se você é um iniciante em geral, você é mais engenheiro júnior em geral. E se você for um engenheiro geral mais avançado. E esse Packer de aprendizado era como a cereja no topo de um bolo. Isso já é muito bom. Acabei de comparar o ensino de engenharia a um bolo, acho que estou com fome. Então, se você é um iniciante, uma das primeiras coisas que eu sugiro que você faça é se você não se sentir super confiante de que poderia fazer o que eu mostrei a você neste curso do zero. Então eu sugeriria seguir adiante, desculpe, em vez de seguir adiante, eu sugiro que você basicamente exclua o diretório do empacotador e tente recriar esse projeto empacotador de scratch, dado o conteúdo do restante desse repositório, que é do curso prático de Linux, se isso fizer sentido. Então, exclua o diretório do empacotador, basicamente faça um novo, e então comece a portar tudo , meio que peça por peça. Olhe para cada um, todos os comandos executados manualmente, transforme-os em scripts. Pegue esses scripts e use-os em seu projeto Packer. Descubra como armazená-los, descobrir como empacotá-los e enviá-los para sua VM e , em seguida, ir a partir daí. Então, meio que recrie esse projeto de memória. E então você tem o conteúdo bem na sua frente, mas o transforma novamente em um projeto empacotador. Isso é o que eu recomendaria para iniciantes absolutos. Eu acho que você vai aprender muito porque muitas vezes depois de passar pelo tutorial, você fica tipo, Oh, eu entendo totalmente. Mas então se alguém estiver tipo, ótimo, me mostre com não sem olhar o tutorial e as pessoas não conseguirão. É como se você muitas vezes apenas entendesse algo no momento não fosse o mesmo que realmente conhecê-lo profundamente e ser capaz de aplicá-lo na prática. Então vá lá como um iniciante. Depois de fazer isso ou se você já está começando de um local de engenharia mais avançado. E o que fizemos, tipo, adicionou uma nova habilidade, mas esse novo empacotador de habilidades é como 1% do que você sabe sobre tecnologia. Ótimo. Eu acho que você ainda precisa um projeto solo prático que você não está fazendo a partir de um modelo ou do trabalho de outra pessoa que você está descobrindo sozinho, solucionando problemas para você. Se você for mais avançado, eu recomendaria algumas coisas. Se você mora em um mundo baseado em VM e deseja continuar o que fizemos neste curso, como imagens de máquina, bem, fizemos a Amazon, mas você poderia fazer o Azure, o Google. Você sabe, o processo é mais ou menos o mesmo. Crie você mesmo uma imagem de máquina a partir de outro projeto de código aberto que você goste. Neste curso, estamos falando sobre o WordPress como o tipo de projeto de código aberto com o qual estamos empacotando e fazendo coisas. Mas há um milhão de projetos de código aberto que são interessantes, fazem todos os tipos de coisas diferentes. Os aplicativos da Web tendem a ter a complexidade de muitas coisas serem configuradas em uma imagem. Mas você poderia fazer outras coisas também. Você pode fazer coisas como murmurar se quiser ter um tipo reutilizável de imagem do Team Chat Server, existem alguns. Basta escolher se você for razoavelmente avançado, suponho que você tenha alguma ideia de quais ferramentas e projetos de código aberto estão por aí. O que pode ser divertido apenas hospedar e depois criar uma imagem de máquina em torno disso. Se você já vive em um mundo de olhos mais escuros, encontre algo que não seja olhos mais escuros em seu trabalho ou mesmo em um projeto de código aberto e transforme isso em uma imagem do Docker, certo? Então, coloque-o em contêineres. Sim, você pode criar sua própria coisa e torná-la um arquivo Docker escuro em seu próprio projeto e, em seguida, executar as ferramentas de compilação do Docker e tudo mais. Mas como o Packer pode fazer tudo isso e muito mais. O bom do empacotador é que torna essa ponte muito fácil, certo? Se você tem, se você já tem tipo de automação ou documentação em etapas manuais e blá, blá, blá. Você pode simplesmente reutilizar todas essas coisas, colocá-las no Packer e dizer ao Packer que sua saída deve ser uma imagem do Docker. Isso é o que eu recomendaria para pessoas mais avançadas, encontrar novamente, algo de código aberto ou em seu trabalho e usar alguns desses outros recursos. Pode ser mais escuro, pode ser outra coisa, mas apenas explore o que o Packer pode fazer que seja prático para você. Isso é realmente interessante para você. E faça isso em um aplicativo no qual você esteja levemente interessado ou precise trabalhar de qualquer maneira. Sim, espero que isso lhe dê algumas ideias para projetos que você possa fazer. Eu entendo isso. Isso significa que você pode não ser capaz mostrar se você está trabalhando em suas próprias empresas como uma coisa de código fechado e você cria um projeto de pacote para isso. Não faça o upload e me mostre por favor, respeite as coisas de confidencialidade. Mas se você fizer isso para um projeto de código aberto, basta criar um projeto, carregá-lo em sua própria conta do GitHub e ficar à vontade para compartilhá-lo. Acho que todo mundo ficaria muito animado em ver isso. Só para ver mais exemplos de Packer sendo usado de mais maneiras. E você pode até conseguir um feedback positivo e construtivo das pessoas sobre como melhorá-lo ainda mais. É isso para todos lá fora. Se você vê os projetos de outras pessoas, seja legal, seja construtivo. Você não precisa comentar, não precisa dar conselhos. Ainda estamos aprendendo, então seja legal. Tudo bem, isso conclui para b, o que eu acho que você deve fazer como um projeto prático, deixar isso penetrar, deixar isso afundar em seu cérebro e começar a navegar em projetos de código aberto e ver Se alguma dessas cócegas, sua fantasia. 16. Conclusão: Parabéns. Agora você viu como são os projetos do Packer na vida real . E eu o guiei através do processo que adotei para decompor um problema do mundo real em um projeto de empacotador, especificamente um modelo do Packer e meio que como você deixa de ter um monte de manuais ou tipo de componentes de automação, como scripts. Pegue-os e coloque-os no mundo dos empacotadores e na maneira de pensar sobre as coisas. Espero que você pegue imediatamente esse novo entendimento e conhecimento e o coloque para trabalhar em seu próprio projeto, um projeto que eu não apresentei para você. Eu acho que essa é a maneira de cimentar esse conhecimento e meio que levá-lo para o próximo nível e realmente tê-lo de forma realmente duradoura em seu cérebro para que, você sabe, para quando um problema surgir ou quando uma entrevista de emprego acontece, essas coisas estão no topo da mente e você só tem esse conhecimento intuitivo do processo e como você passa por isso, e como você analisa o problema e o decompõe e os artefatos técnicos que são um projeto empacotador, este curso tem sido divertido. Por favor. Se você gostou, deixe um comentário. Se você não fez isso, basta me enviar uma mensagem ou deixar um comentário sobre o controle de qualidade solicitando as melhorias que você gostaria de fazer. Definitivamente, estou planejando trabalhar neste curso um pouco mais se você puder receber uma recepção e se você sentir que algo estava faltando ou se gostaria de adicionar uma seção ou algo esclarecido, por favor, apenas me diga. Estou feliz em substituir os vídeos mais claros para você e talvez adicionar alguns novos também. Se você está curioso sobre algo que eu não aprofundei. Novamente, foi um prazer fazer isso. Espero que você consiga algo com isso. E espero ver você nos canais do YouTube, tutorial Linux. E eu faço coisas assim, mas de graça, ou suponho que na Udemy e em meu outro curso, Linux prático, onde eu passo pelo seu projeto de hospedagem WordPress para ensinar o básico do Linux, especificamente na administração de sistemas Linux, divirta-se em sua jornada. Vejo você lá fora, peça.