quinta-feira, 29 de fevereiro de 2024

Um guia completo para construir uma Vagrant Box do início ao fim

Construindo uma Vagrant Box: do zero ao compartilhamento

O Vagrant agiliza a criação e o gerenciamento de máquinas virtuais, tornando-o uma ferramenta valiosa para engenheiros de TI. Este guia orienta você na construção de uma caixa Vagrant personalizada, passo a passo, desde a criação da máquina virtual até o compartilhamento com outras pessoas.

Pré-requisitos:

Etapa 1: Configurando a Máquina Virtual

  1. Crie uma nova máquina virtual: Abra o VirtualBox e clique em “Novo”. Escolha o sistema operacional desejado (por exemplo, Ubuntu) e a versão. Aloque memória (por exemplo, 2.048 MB) e espaço de armazenamento (por exemplo, 40 GB) para a máquina virtual.

  2. Configurar pasta compartilhada: clique com o botão direito na VM recém-criada e selecione “Configurações > Pastas Compartilhadas”. Adicione uma pasta compartilhada, especificando o caminho do host (por exemplo, o diretório do seu projeto) e o caminho do convidado (por exemplo, /vagrant).

Passo 2: Provisionando a Máquina Virtual com Vagrant

  1. Inicializar o Vagrant: No diretório do seu projeto (contendo a pasta compartilhada), abra um terminal e execute vagrant initpara inicializar um  Vagrantfile.

  2. Configure o Vagrantfile: Abra o Vagrantfile em um editor de texto e personalize as seguintes seções:

Ruby
# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = "2"

# Provider configuration
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "ubuntu/focal64" # Replace with the desired box name and version

  # Shared folder configuration
  config.vm.synced_folder ".", "/vagrant"

  # Update packages & install essential tools
  config.vm.provision "shell", inline: <<-SHELL
    sudo apt-get update -y
    sudo apt-get upgrade -y
    sudo apt-get install -y essential curl unzip rsync
  SHELL
end 

Explicação:

  • VAGRANTFILE_API_VERSIONespecifica a versão da API do Vagrantfile.
  • config.vm.boxdefine a imagem da caixa base a ser usada.
  • config.vm.synced_folderconfigura a pasta compartilhada entre as máquinas host e convidada.
  • config.vm.provisiondefine scripts de provisionamento para execução dentro da máquina virtual.

Etapa 3: Construindo a Caixa Vagrant

  1. Provisione a VM: execute vagrant upno terminal. Isso fará download da caixa base, configurará a máquina virtual e executará os scripts de provisionamento.

  2. Instale software adicional: dentro da máquina virtual (acessível usando vagrant ssh), instale qualquer software adicional necessário para seu caso de uso específico.

  3. Limpe a VM: Depois que a VM estiver configurada, execute sudo apt-get autoremove -ypara remover pacotes desnecessários e liberar espaço em disco.

  4. Empacote a VM: execute vagrant packagepara criar um .boxarquivo compactado contendo a máquina virtual personalizada.

Etapa 4: compartilhando o Vagrant Box (opcional)

  1. Faça upload do .boxarquivo: faça upload do .boxarquivo para uma plataforma como Vagrant Cloud https://app.vagrantup.com/ ou seu repositório privado.

  2. Share the Vagrantfile: Share the Vagrantfile along with the .box file for others to easily provision the virtual machine.

Parabéns! Você construiu e empacotou com sucesso uma caixa Vagrant personalizada, pronta para ser usada para suas necessidades de desenvolvimento ou teste. 

Seguindo essas etapas e personalizando as configurações, você pode criar caixas Vagrant adaptadas às suas necessidades específicas.



quarta-feira, 2 de janeiro de 2019

DevOps nao E Dark Arts :-)


O Que e DevOPs?


Inicialmente o termo DevOps que continua a ser algo novo para muitos que trabalhao em TI no mercado Lusofono, e um termo novo - mas na essencia, nao mais do que o processo em as Operacoes em TI e os desenvolvedores *Programadores* comecar a trabalhar em parallelo/Horizontal

Durante forma mais directa em simbiotica. DevOps é um termo para um grupo de conceitos que, embora não sejam todos novos, catalisaram em um movimento e estão se espalhando rapidamente por toda a comunidade técnica. Como qualquer termo novo e popular, as pessoas podem ter impressões confusas e às vezes contraditórias do que é. 

Aqui está minha opinião sobre como o DevOps pode ser definido de maneira útil; Eu proponho esta definição como uma estrutura padrão para discutir mais claramente as várias áreas que a DevOps cobre. Como "Qualidade" ou "Ágil", o DevOps é um conceito grande o suficiente para exigir algumas nuances para entender completamente.

[Atualização: Estamos muito felizes em anunciar um novo recurso do The Agile Admins. Reunimos um curso abrangente de Fundamentos de DevOps para lynda.com que abrange tudo, desde a história do DevOps até a ampla cobertura das áreas funcionais do DevOps. Os dois primeiros acompanhamentos sobre automação de infraestrutura e entrega contínua também estão ao vivo e há mais por vir. Nós esperamos que você goste deles.]

Aqui esta um diagrama de exemplo de um fluxo de trabalho em DevOps implementado pelo Facebook;

Como processo, existem um conjunto de varias ferramentas que sao usadas no processo de DevOps. Aqui esta representado um grupo de ferramentas usadas em DevOps.

 A combinacao destas ferramentas torna possivel a execucao do processo de DevOps ..





terça-feira, 2 de outubro de 2018

Magento 2 a correr no Amazon Lightsail


Na conferência Amazon Web Services, a AWS revelou sua mais nova oferta de produtos - Lightsail. O Lightsail é uma plataforma de Virtual Private Server (VPS) gerenciada e de baixo custo, destinada a rivalizar com as ofertas de concorrentes tradicionais de hospedagem VPS, como a Digital Ocean. Construído no mecanismo de aplicativos Bitnami (que é construído em contêineres com o Docker), você pode clicar com um clique em iniciar uma instância com aplicativos pré-instalados. Isso significa instalações de um clique de baixo custo para Magento 2, WordPress, Drupal, Gitlab e muitos outros tipos de aplicativos.


Funcionando


O AWS Lightsail torna simples o início de uma nova instância do Magento 2. Depois de fazer o login no console da AWS, você pode selecionar Lightsail no menu de serviços. Isso inicia um início rápido onde, na primeira página, você pode iniciar uma instância do App + OS.




Após o lançamento do aplicativo, você escolhe um plano de preços. As taxas são incrivelmente competitivas - você obtém a mesma quantidade de RAM e um disco rígido maior do que com as tradicionais instâncias do AWS EC2 - a menor delas no momento é um t2.nano com clock de 512MB RAM / 1vCPU e 8GB SSD por padrão. Essa instância custará US $ 4,75 sob demanda, mas você terá todo o trabalho de gerenciar e instalar seus próprios aplicativos. A Lightsail também está oferecendo os primeiros 30 dias gratuitos no plano de US $ 5 / mês



Depois de um pouco de carregamento, você obtém o endereço IP público do recém-instalado Magento 2. Carregá-lo em um navegador me levou para a home page da minha recém-instalada instância do Magento 2. É um Magento 2.1.2CE básico (por isso, está atualizado com patches de segurança).




Imediatamente, não inclui dados de amostra pré-instalados. Ele tem o ícone de início rápido do Bitnami no canto inferior direito; que leva você a uma página para obter a senha de login. É aqui que o “fácil” termina; pelo menos para o Magento 2.




As instruções do Bitnami para obter a senha do Magento 2 parecem ter sido escritas para o Magento 1. Elas também focam no fato de que você provavelmente está executando isso como uma instância do Docker no Amazon Elastic Container Service ou como um sistema operacional convidado em uma instância do EC2. Isso é motivo de frustração por uma infinidade de razões.

Primeiro, a senha é gerada automaticamente para o usuário admin do Magento 2. Para obter essa senha, você precisa ler o registro de início do sistema. Se isso estivesse no EC2, isso não seria problema - como um clique com o botão direito do mouse no console da AWS na instância tem uma opção para ler o log do sistema. Infelizmente Lightsail no momento da redação deste artigo não tem essa capacidade. Segundo, o novo e-mail do usuário administrador é padronizado como "usuario@exemplo.com", portanto, clicar na funcionalidade de senha esquecida não funcionaria. 


Isso é difícil porque o Lightsail não configura o SES (Simple Email Service) da Amazon por padrão ou abre as restrições que a Amazon impõe ao enviar e-mails de seu serviço da AWS - para que ele enfraqueça automaticamente todos os e-mails provenientes da instância.

Neste ponto, você precisa mergulhar no console administrativo do Lightsail para encontrar a chave SSH. Para fazer isso, você precisa fazer login na instância e adicionar um novo usuário do Magento na ferramenta de linha de comando:


               $  > php -f bin/magento admin:user:create



É aqui que a experiência do desenvolvedor do Magento 2 requer um conhecimento profundo. Você será recebido com um aviso de que você não forneceu todos os parâmetros certos para o método de criação de usuário da ferramenta de linha de comando. Agora temos que olhar para o Docs do desenvolvedor do Magento 2 ... e eventualmente eu encontrei todos os comandos certos - disponiveis aqui

       $ > php -f bin/magento admin:user:create –admin-firstname=Phillip –admin-lastname=Jackson –               admin-email=pjackson@somethingdigital.com –admin-user=pjackson –admin-                                     password=abcd1234

Desde que eu já estava logado no console SSH, eu removi o banner Bitnami na página inicial. Demorou algum tempo para encontrar o comando para fazer isso, mas aqui está:

       $ > sudo /opt/bitnami/apps/magento/bnconfig –disable_banner 1


Em seguida, cliquei na senha esquecida e tentei enviar um e-mail de redefinição de senha, mas o e-mail ainda não estava funcionando corretamente. O que significa que eu precisava instalar o sendmail, o postfix, o SES e mais, tudo para obter funcionalidade básica. Expandirei mais sobre esse ponto no futuro post do blog.


Conclusão


Depois que eu entrei no Magento 2, as coisas ficaram muito mais simples. Consegui ligar as minhas chaves de desenvolvedor do Magento Connect e baixar os pacotes do Magento Marketplace sem problemas. Não encontrei mais bloqueios de estrada; e não tive problemas com permissões. Para um VPS de US $ 5 / mês, o painel de administração foi rápido; claro que eu era a única pessoa a usá-lo. Não espere poder atualizar, já que você precisa de um mínimo de 768 MB de RAM disponível para o Magento 2 executar o atualizador de software. Mais sobre isso em um post futuro.


Além de instalar o Magento 2 no Lightsail, também instalei uma instância do WordPress. A experiência foi muito mais simples, embora eu tenha tido problemas semelhantes tanto com o email quanto com a senha para se conectar ao painel de administração. 

No entanto - o WordPress vem com documentos que realmente se alinham com a experiência do administrador e são fáceis de seguir. Os documentos do Magento 2 Lightsail / Bitnami não. O WordPress vem configurado com um plugin SMTP, onde você pode conectar as credenciais do SES (e os documentos orientam você sobre como fazer isso) - o Magento 2 não. Eu não fiz nenhum benchmarking (que é para outro blog) e acredito que ele provavelmente apresentaria um desempenho ruim - mas com capacidade de atualização de um clique até 8GB / 2CPU (a US $ 80 / mês) o Lightsail pode escalar com uma loja.

Para um produto voltado para o mercado de bricolagem do mercado, o Lightsail é atraente - mas a experiência do Magento 2 tem algumas armadilhas. Isso ainda precisa ser ajustado para ser útil para o antigo mercado Magento 1 CE. Dito isto, existe um enorme potencial para aqueles que querem testar o Magento 2 sem passar pelo incômodo de instalá-lo.


quarta-feira, 29 de agosto de 2018

Pare de usar palavras grandes e jargões da indústria (e o que fazer em vez disso)

Vamos dizer que você quer ensinar uma pessoa alguma coisa. Por que a pessoa não entende o que você está dizendo?


Uma das principais razões é porque gostamos de usar palavras grandes e girias da indústria. Esses girias podem significar algo para nós, mas não significam nada para as pessoas que estamos tentando ensinar.

A próxima vez que você tentar ensinar programação, atente para as palavras que você usa.

Três tipos de palavras grandes

As girias podem ser divididas em três categorias:

  1. Aquelas que podem ser explicados em poucas palavras
  2. Aquelas que não podem ser explicados com palavras simples
  3. Aquelas que podem significar coisas diferentes em contextos diferentes.

Quando você ensina, você deve sempre observar esses três tipos de palavras.

Girias que podem ser explicados em poucas palavras.

Se a giria puder ser explicado em poucas palavras, você deseja usar essas palavras em vez de giria.

A interoperabilidade é um exemplo de uma palavra desse tipo.

Parece assustador e complicado, mas pode ser explicado em poucas palavras simples.

Se você procurou o significado de interoperabilidade, você encontrará definições como estas:

Da Wikipedia: "A interoperabilidade é uma característica de um produto ou sistema, cujas interfaces são completamente compreendidas, para trabalhar com outros produtos ou sistemas, no presente ou no futuro, em implementação ou acesso, sem quaisquer restrições".

De Dictionary.com: "Interoperabilidade é a capacidade de compartilhar dados entre diferentes sistemas de computadores, especialmente em máquinas diferentes." Se colocarmos isso em termos simples, "interoperabilidade" significa a "capacidade de compartilhar dados".

Veja como isso torna a barreira da língua muito menor?

Se você pode substituir essa giria por palavras simples, por que você se atém à palavra difícil?

Girias que significam coisas diferentes em contextos diferentes

Algumas girias têm significados diferentes quando usados ​​em contextos diferentes.

Um exemplo de uma giria tal é o termo encapsulamento.

Encapsular algo significa incluir essa coisa com outra coisa. Se você enrolar uma batata com um pano, você pode dizer que o pano encapsula a batata.

Desenvolvedores amam a palavra encapsulamento. Eles usam isso o tempo todo.

A primeira maneira é envolver variáveis ​​e outro código dentro de uma função. Nesse caso, a função encapsula o código dentro:


function someFunction () { const variableName = 'I am a variable!' }

A segunda maneira é conter a individualidade de um objeto. Por exemplo, se você tem um objeto humano e cria dois humanos a partir do objeto humano, esses dois seres humanos não devem ser o mesmo.

Nesse caso, cada objeto encapsula seus próprios dados.

function Human (name) { this.name = name } const zell = new Human('Zell') const vincy = new Human('Vincy') zell.name === vincy.name // false

A terceira maneira é para esconder informação. Em JavaScript, podemos criar variáveis privadas. Essas variáveis privadas são incluídas pelo objeto.

Nesse caso, o objeto encapsula a variável privada. Você não pode acessar a variável privada. Nesse caso, o encapsulamento é usado para significar algo ligeiramente diferente do segundo caso.

function Human () { const privateVariable = 'private' this.publicVariable = 'public' }

Então, o que você entende por encapsulamento?

Você não pode ter certeza.

Não deve haver ambiguidade quando você se comunica. Se houver ambiguidade, a comunicação se rompe e os alunos não aprendem.

É melhor abandonar o jargão se o jargão significa coisas diferentes em contextos diferentes.

Girias que não podem ser explicadas com palavras simples

Algumas girias tecnicas não podem ser explicados com palavras simples. Essas girias são freqüentemente usadas ​​para falar sobre conceitos abstratos, e é por isso que palavras simples podem não ser suficientes.

Um exemplo de tal palavra é "mutação".

A mutação vem da palavra mutate. Mutar significa mudar de forma ou natureza. Em JavaScript, a mutação acontece embaixo do capô sem que você perceba.

Neste caso, a mudança não é suficiente para explicar a mutação. Falta profundidade e detalhes. Além disso, a mudança ainda é muito abstrata.

Você sente que um conceito é abstrato porque você não pode imaginá-lo. Você não pode ver, ouvir, sentir, tocar ou prová-lo. Para fazer um concreto abstrato, precisamos apelar para os cinco sentidos do ser humano.

Para explicar um conceito abstrato, você pode usar analogias. Quando você usa analogias, pode descrever um objeto ou um cenário de maneira que as pessoas possam ver, ouvir ou sentir o que você quer dizer.

Por exemplo, eu usei X-men como minha analogia quando expliquei mutação.

Pedi aos alunos que imaginassem um amigo crescendo o pêlo e ficando azul diante de seus olhos. Qualquer um pode imaginar o que significa crescer pêlo e ficar azul, mesmo que eles não saibam quem é a Fera.

Se você quiser expandir a analogia para atender mais pessoas, você pode apelar para mais sentidos. Por exemplo, para fazer as pessoas cegas imaginarem uma mutação, você também pode dizer a elas que imaginem que a amiga grunhiu como uma fera.

A chave aqui é uma mudança que não é detectada. Ninguém sabe se uma pessoa é um mutante até que mostre seus poderes. Na mesma frente, ninguém sabe que um objeto JavaScript mudou até que, bem, mudou.

Eu enfatizei este ponto para desenhar um link de volta para a mutação em JavaScript.

A mutação se torna concreta quando o elo é estabelecido. Quando digo mutação, os alunos que lêem o artigo podem imaginar o amigo ficando azul, crescendo a pele e rosnando como uma fera.

Depois de transformar um jargão abstrato em um conceito concreto, você pode usar o jargão normalmente. Os alunos entenderão o que você quer dizer.

Eu escrevi um artigo sobre como criar boas analogias se você estiver interessado em aprender essa habilidade.

Empacotando
Preste atenção às palavras que você usa quando ensina programação. Se você usar palavras difíceis que não significam nada para seu aluno, elas não conseguirão entender o que você quer dizer.

Substitua palavras difíceis por palavras mais simples e fáceis de entender, se puder.

Evite usar girias que podem significar coisas diferentes em contextos diferentes. Estas girias tornam as coisas ambíguas e confusas.

Finalmente, use analogias para transformar conceitos abstratos em conceitos concretos.

Obrigado pela leitura. Este artigo foi originalmente publicado no meu blog. Inscreva-se no meu boletim informativo se quiser mais artigos para ajudá-lo a se tornar um desenvolvedor de frontend melhor.