O que exatamente os comandos do Vagrant fazem?

96

Surpreendentemente, não há documentação sobre o que os comandos do Vagrant fazem, além das referências ao longo do tutorial de "introdução".

O que descobri até agora:

  • box- gerenciar " caixas "
  • destroy - desligue a VM e exclua sua imagem armazenada?
  • gem
  • halt - desligue a VM
  • init - prepara um diretório com um novo Vagrantfile
  • package- desligue a VM e converta-a em um 'pacote' que pode ser transformado em uma caixa? (Ou alguma coisa)
  • provision - execute apenas o estágio de provisionamento (por exemplo, Chef, Puppet ...)
  • reload - modificar a configuração da VM (por exemplo, reaplicar o Vagrantfile), reiniciar a VM, reprovisionar
  • resume - cancelar a suspensão (ou seja, desibernar)
  • ssh - abre uma conexão de shell SSH para a VM
  • ssh-config
  • status
  • suspend - hibernar a VM
  • up - alguns ou todos: copie uma imagem de VM para criar uma nova VM, aplique a configuração a ela, inicialize-a

Eu entendi isso certo? Quais são os outros? Ainda não estou certo sobre a diferença exata entre reloade destroy/ up.

Steve Bennett
fonte
A documentação atual é muito melhor agora - vagrantup.com/v1/docs/index.html
JavaRocky
2
@JavaRocky, não me parece. vagrantup.com/v1/docs/commands.html ainda não possui literalmente nenhuma informação por subcomando. Eu esperaria mais informações sobre cada comando em um guia como este (em comparação com -h), não menos.
Matthew Flaschen
2
@JavaRocky - Se assim for, não consigo imaginar como eram antes. Nem um pouco útil.
DougW de
Interessante, parece que eles realmente removeram a lista de comandos, tornando o site ainda menos informativo do que antes.
Steve Bennett de
Pelos documentos atuais, parece que "retomar" é redundante com "vagrant up", por exemplo, o último retomará uma máquina se for suspensa e provisionará novamente se for interrompida. Isso é correto? docs.vagrantup.com/v2/getting-started/teardown.html
cboettig

Respostas:

48

Eu concordo com você que a documentação do vagrantup está no lado mais curto.

Algumas informações podem ser obtidas no sistema de ajuda do comando.

  1. Por exemplo: gemcomando.

    Basta digitar o comando sem argumentos: vagrant gem -he ele produzirá as informações de que você pode precisar.

    vagrant gemé usado para instalar plug-ins Vagrant por meio do sistema RubyGems. Na verdade, vagrant gemé apenas um frontend para a gem interface real , com a diferença de que o Vagrant configura um diretório personalizado onde as gems são instaladas para que sejam isoladas das gems do seu sistema.

  2. Vagrant ssh-config:

    Sob o capô, quando você executa o vagrant sshssh na VM. Ele está utilizando sua chave ssh bem conhecida. As informações nesta chave são fornecidas por vagrant ssh-config. Isso é útil caso você queira alterar a chave bem conhecida para sua própria chave privada e preparar caixas para usá-la.

    Além disso, algumas vezes, você pode querer usar a automação baseada em ssh com suas VMs. Nesse caso, saber qual chave está sendo usada é útil. Você poderia usar o comando ssh normal -ssh -i keyfile ..

  3. vagrant status <vmname>

    Este comando é um wrapper que fornece informações sobre o status de vm. Ele pode estar funcionando, salvo e desligado.

  4. vagrant reload

    Se você fizer alguma alteração na configuração do vagrantfile, ela precisa ter efeito. Você pode querer recarregar a VM. Ele executa novamente o provisionamento definido no vagrantfile, a menos que você também não peça.

    Ele não destrói a VM que você criou a partir de uma caixa base. Isso significa que todas as alterações feitas em sua VM, como, por exemplo, criar uma pasta em seu diretório de usuário estarão lá após a recarga.

    É como reiniciar, quando desliga sua VM e, em seguida, aplica certas alterações de configuração que podem ser aplicadas apenas quando a VM foi desligada. e, em seguida, ligue-o. Exemplo: como anexar outro disco virtual SATA.

  5. vagrant up

    Isso lê seu arquivo de configuração - vagrantfilee então cria uma VM da caixa base. A Base Box é como um Template. Você pode criar muitas VMs a partir dele.

    Da mesma forma, vagrant destroydestrói sua VM. Neste caso, todas as alterações feitas dentro dele serão perdidas. Mas essa é a ideia legal de que você pode começar de um estado predefinido básico ao criar uma nova VM.

Eu realmente gosto de usar e tenho um blog sobre isso .

Em resumo, é um bom wrapper para APIs e comandos do VirtualBox . Você pode dar uma olhada nos comandos do VirtualBox para entender melhor alguns dos recursos.

pyfunc
fonte
1
De qual versão do vagrant você obtém toda essa saída? Estou usando 1.0.5 e não recebo nada disso. vagrant gem -hfornece a saída que você mostrou, mas todos os outros não dizem nada útil.
DougW de
2
O Vagrant 1.2 parece ter retrocedido. por exemplo, vagrant init -hapenas fornece isto: Uso: vagrant init [box-name] [box-url] -h, --help Imprimir esta ajuda
Steve Bennett
34

Não tenho certeza de quando mudou, mas a versão atual (1.6.3) tem uma lista adequada de comandos, e a execução vagrant list-commandsfornece uma lista ainda mais completa:

box             manages boxes: installation, removal, etc.
connect         connect to a remotely shared Vagrant environment
destroy         stops and deletes all traces of the vagrant machine
docker-logs     outputs the logs from the Docker container
docker-run      run a one-off command in the context of a container
global-status   outputs status Vagrant environments for this user
halt            stops the vagrant machine
help            shows the help for a subcommand
init            initializes a new Vagrant environment by creating a Vagrantfile
list-commands   outputs all available Vagrant subcommands, even non-primary ones
login           log in to Vagrant Cloud
package         packages a running vagrant environment into a box
plugin          manages plugins: install, uninstall, update, etc.
provision       provisions the vagrant machine
rdp             connects to machine via RDP
reload          restarts vagrant machine, loads new Vagrantfile configuration
resume          resume a suspended vagrant machine
rsync           syncs rsync synced folders to remote machine
rsync-auto      syncs rsync synced folders automatically when files change
share           share your Vagrant environment with anyone in the world
ssh             connects to machine via SSH
ssh-config      outputs OpenSSH valid configuration to connect to the machine
status          outputs status of the vagrant machine
suspend         suspends the machine
up              starts and provisions the vagrant environment
version         prints current and latest Vagrant version

Os únicos comandos deixados de fora da lista completa quando executados vagrantsozinhos são o docker e o rsync. Em meu sistema, de qualquer maneira.

Essa parece ser a resposta definitiva, agora.

Steve Bennett
fonte
8

É realmente uma pena que, embora os documentos atuais para v1.1 pareçam melhores, são muito menos completos do que v1. O credo 'menos é mais' simplesmente não funciona na área de documentação ...

Eu descobri que quando se trata de Vagrantfiles, a visão geral mais completa está nos comentários de um Vagrantfile recém-criado, após inicializar um projeto vagrant. Ele menciona parâmetros que não estão atualmente na documentação.

David Spreekmeester
fonte