Cada vez que um novo colega entra em um trabalho, ele tem que configurar um monte de ambientes em seu computador , e leva um monte de esforços; cada vez que um teste de desenvolvimento tem de reconfigurar o ambiente de desenvolvimento, construção manual, os passos são muito complicado e fácil cometer erros .
Quando o Grande Deus está presente, o Grande Deus constrói, e o Grande Deus não está lá , então ele se senta e suspira com as mãos . Por isso nasceu o VVVV Vagrant ! ! !
Ferramenta de orquestração de máquina virtual Vagrant
Ele , baseado em máquinas virtuais , pode criar um isolamento físico perfeito !
Ele constrói -o uma vez , utiliza -lo em todos os lugares , a cópia de um espelho pode fazer novos funcionários imediatamente colocadas em desenvolvimento , é o patrão 's favorito !
Ele só precisa de um texto e algumas linhas para controlar a configuração da rede e construir clusters !
O bom suporte de terceiros também o torna um peixe na água, suporta scripts de shell , suporta implantação automática de ansible e assim por diante. Ele é nosso protagonista Vagrant .
Desta vez, tomaremos a construção de um ambiente de desenvolvimento Python como exemplo para aproveitar a conveniência que o vagrant nos traz.
instalação
Comando de duas linhas do ambiente Mac
brew cask install virtualbox
brew cask install vagrant
Baixe dois pacotes de instalação em outros ambientes para obter o
pacote vagrant https://www.vagrantup.com/downloads.html
virtualbox https://www.virtualbox.org/wiki/Downloads
Verifique se a instalação foi bem sucedida
$ vagrant version
Installed Version: 2.2.5
Latest Version: 2.2.5
You're running an up-to-date version of Vagrant!
Inicialize o ambiente
O primeiro método para baixar o espelho
vagrant box add --provider virtualbox centos/7
O que --provider virtualbox
representa para verificar se é o
segundo método de download oficialmente fornecido pela virtualbox
vagrant box add --name centos/7 --provider virtualbox /Users/pzqu/Documents/code/test/vbox/centos_virtualbox.box
Aqui /Users/pzqu/Documents/code/test/vbox
está meu diretório de download selecionado
Uma série de documentos de comando de operação para box pode ser encontrada aqui https://www.vagrantup.com/docs/cli/box.html.
inicialização
cd /Users/pzqu/Documents/code/test/vbox
vagrant init centos/7
Neste momento, um Vagrantfile
arquivo será gerado no diretório , este arquivo é a chave para a configuração automática
https://www.vagrantup.com/docs/vagrantfile/
Dê uma olhada nos comentários dentro e provavelmente você saberá como escrevê-lo. É principalmente a sintaxe do ruby. Você pode montar um diretório local em uma máquina virtual, configurar a rede (acesso à rede pública, apenas acesso à máquina virtual ), etc.
Além de configurar algumas máquinas virtuais, você também pode instalar software automaticamente e ajustar a configuração por meio de vários Provisioners.
Consulte https://www.vagrantup.com/docs/provisioning/ para obter detalhes
Minha configuração é relativamente simples, usando o sistema centos / 7, basta montar o /data/code
diretório do projeto do código nativo no diretório.
Após iniciar a máquina virtual, instale o ambiente de desenvolvimento diretamente na máquina virtual e, finalmente, marque-o como um espelho.
A configuração é a seguinte
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
config.vm.synced_folder "/Users/pzqu/Documents/code/gerrit", "/data/code"
end
Um erro é relatado ao montar o diretório de arquivos
Instale este plugin
vagrant plugin install vagrant-vbguest
Crie um ambiente de desenvolvimento
No Vagrantfile
diretório, use para vagrant up
iniciar a máquina virtual e, em
seguida, use para vagrant ssh
fazer login na máquina virtual
Em seguida, execute o seguinte comando para instalar automaticamente o ambiente Python que queremos, observe requirements.txt
que o python
projeto é gerado automaticamente
pip install -r requirements.txt
Suplemento: requirements
Método de geração automática de arquivos
pip freeze > requirements.txt
Configurar o pycharm
Abra a configuração, adicione o plugin
Vagrant
Ambiente de configuração
Especifique o caminho do Python na máquina virtual, a primeira etapa é selecionar mostrar todos
Escolha Vagrant
selecionar o diretório espelho e o python
caminho na máquina virtual
Configure o método de inicialização. Aqui eu gero swagger, principalmente o Python interpreter
caminho python e o caminho do Working direftory
projeto (observe que o caminho é mapeado na máquina virtual, que configurei aqui na seção anterior /data/code
. Iremos modificá-lo automaticamente quando desenvolvermos localmente)
corre
Exportar arquivo de imagem de caixa para outros usarem
1. Execute o comando vboxmanage list vms, você pode ver a lista de máquinas virtuais em nosso vagrant (minha máquina virtual tem apenas uma caixa, "vbox_default_1563884434349_3918".)
$ vboxmanage list vms
"vbox_default_1563884434349_3918" {59864f0b-9731-4839-baa2-95d9a6aab731}
Para exportar a imagem da caixa
, desligue e exporte. pacote vagrant é o comando de embalagem para exportar caixa
vagrant package --base vbox_default_1563884434349_3918 --output centos7_hanah_environment.box
--base
Em nome do local vbox_default_1563884434349_3918
é o nome da caixa que deseja exportar --output
Em nome da exportação , o nome da centos7_hanah_environment.box
caixa exportada é centos7_hanah_environment.box
salvo no diretório atual
Em seguida, você verá o seguinte, ou seja, a exportação foi bem-sucedida
$ vagrant package --base vbox_default_1563884434349_3918 --output centos7_hanah_environment.box
==> vbox_default_1563884434349_3918: Exporting VM...
==> vbox_default_1563884434349_3918: Compressing package to: /Users/pzqu/Documents/code/test/vbox/centos7_hanah_environment.box
O trabalho de beber uma mamadeira de leite está completo. Depende do tamanho da sua caixa. Minha caixa tem cerca de 900M.
Envie-o diretamente para o seu amigo e você obterá um ambiente de desenvolvimento / teste idêntico ao seu com um comando.
$ vagrant box add centos7_hanah_environment ./centos7_hanah_environment.box
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'centos7_hanah_environment' (v0) for provider:
box: Unpacking necessary files from: file:///Users/pzqu/Documents/code/test/vbox/centos7_hanah_environment.box
==> box: Successfully added box 'centos7_hanah_environment' (v0) for 'virtualbox'!
vagrant box add alias box name
Outras ideias
Parece que o vagrant se sobrepõe muito ao docker, por que não usar o docker para fazer isso diretamente? Não só pode iniciar um ambiente mais adequado em um segundo, mas também é leve e puro.
Pesando os prós e os contras, o vagrant em si não é uma tecnologia de virtualização. Para executá-lo, você deve instalar uma plataforma de virtualização como o virtualbox. É mais como um programa de plug-in e uma ferramenta de orquestração para máquinas virtuais; é voltado para o gerenciamento de máquinas virtuais em lote, que geralmente é usado Crie um ambiente de desenvolvimento instantaneamente.
E o docker em si é uma tecnologia de virtualização, que é construída rapidamente e não ocupa recursos, é voltada para a orquestração de aplicativos e é freqüentemente usada para unificar o ambiente de desenvolvimento e o ambiente de produção.
Afinal, não é tanto vagrant e docker, é a diferença entre plataforma de virtualização e container.
O Docker ainda depende do kernel do sistema. Se o kernel for diferente, ele precisa ser reconstruído.
Quando tivermos tempo, vamos falar sobre o ambiente de desenvolvimento criado pelo docker e conversaremos novamente quando tivermos a oportunidadeDocker Machine