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.