Vagrant命令究竟做了什么?

时间:2012-07-11 02:24:16

标签: virtualbox vagrant

令人惊讶的是,除了“入门”教程中的参考文献外,没有关于Vagrant命令的文档。

到目前为止我已经解决了什么:

  • box - 管理“boxes
  • destroy - 关闭VM然后删除其存储的图像?
  • gem
  • halt - 关闭虚拟机
  • init - 使用新的Vagrantfile准备目录
  • package - 关闭虚拟机,然后将其转换为可以变成盒子的“包”? (或者其他什么)
  • provision - 只运行配置(例如,Chef,Puppet ......)阶段
  • reload - 修改VM配置(例如,重新应用Vagrantfile),重新启动VM,重新配置
  • resume - 取消暂停(即unhibernate)
  • ssh - 打开与VM的SSH shell连接
  • ssh-config
  • status
  • suspend - 暂停VM
  • up - 部分或全部:复制VM映像以创建新VM,对其应用配置,启动它

我有这些权利吗?还有什么?关于reloaddestroy / up之间的确切差异,我仍然有点不清楚。

3 个答案:

答案 0 :(得分:47)

我同意你的观点,vagrantup的文件不够短。

可以从命令帮助系统收集一些信息。

  1. 例如:gem命令。

    只需键入不带参数的命令:vagrant gem -h,它就会生成您可能需要的信息。

      

    vagrant gem用于通过RubyGems安装Vagrant插件   系统。事实上,vagrant gem只是实际gem的前端   界面,不同的是Vagrant设置自定义   安装宝石的目录,以便它们与您的宝石隔离   系统宝石。

  2. Vagrant ssh-config

    当您执行vagrant ssh到ssh进入VM时。它正在利用它众所周知的ssh密钥。有关此密钥的信息由vagrant ssh-config提供。如果您想要将熟知的密钥更改为您自己的私钥并准备使用该密钥框,这将非常有用。

    有时,您可能希望在VM上使用基于ssh的自动化。在这种情况下,知道正在使用哪个密钥是有用的。你可以使用普通的ssh命令 - ssh -i keyfile ..

  3. vagrant status <vmname>

    此命令是一个包装器,它提供有关vm状态的信息。它可以运行,保存和关闭。

  4. vagrant reload

    如果对vagrantfile中的配置进行了任何更改,需要生效。您可能想要重新加载VM。它会重新运行vagrantfile中定义的配置,除非您不这样做。

    它不会破坏您从基本框创建的VM。这意味着您对VM所做的所有更改,例如在重新加载后在用户目录中创建了一个文件夹。

    就像重启一样,它会关闭VM,然后应用某些配置更改,只有在关闭VM后才能应用。然后打开电源。示例:喜欢附加另一个SATA虚拟磁盘。

  5. vagrant up

    这会读取您的配置文件 - vagrantfile,然后从基本框创建一个VM。 Base Box就像一个模板。您可以从中创建许多VM。

    同样,vagrant destroy会破坏您的VM。在这种情况下,您在其中进行的所有更改都将丢失。但是,这是一个很酷的想法,即您可以在创建新VM时从基本预定义状态开始。

  6. 我非常喜欢使用它并拥有blogged about it

    总之,它是VirtualBox API和命令的良好包装。您可以查看VirtualBox commands以更好地了解某些功能。

答案 1 :(得分:34)

我不确定它何时更改,但当前版本(1.6.3)有一个正确的命令列表,并且运行vagrant list-commands会提供更完整的列表:

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

在运行vagrant时,从完整列表中遗漏的唯一命令是docker和rsync。无论如何,在我的系统上。

现在这似乎是确定的答案。

答案 2 :(得分:8)

即使v1.1的当前文档看起来更好,但它确实比v1更不完整,这真的太糟糕了。信条“少即是多”只是在文件领域不起作用......

我发现在谈到Vagrantfiles时,最完整的概述是在初始化一个流浪者项目之后,在一个新创建的Vagrantfile的注释中。它提到了目前文档中没有的参数。