96

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

到目前为止我已经解决的问题:

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

我有这些权利吗?其他是什么?我仍然有点不清楚reloadand destroy/之间的确切区别up

4

3 回答 3

49

我同意你的观点,vagrantup的文档较短。

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

  1. 例如:gem命令。

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

    vagrant gem用于通过 RubyGems 系统安装 Vagrant 插件。实际上,vagrant gem它只是实际gem 界面的前端,不同之处在于 Vagrant 设置了一个自定义目录,其中安装了 gem,以便它们与系统 gem 隔离。

  2. Vagrant ssh-config

    在幕后,当您执行vagrant sshssh 进入 VM 时。它正在使用它众所周知的 ssh 密钥。此密钥的信息由 提供vagrant ssh-config。如果您想将众所周知的密钥更改为您自己的私钥并准备使用它的盒子,这很有用。

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

  3. vagrant status <vmname>

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

  4. vagrant reload

    如果您对需要生效的 vagrantfile 中的配置进行任何更改。您可能需要重新加载虚拟机。它会重新运行 vagrantfile 中定义的配置,除非您也不要问它。

    它不会破坏您从基础盒创建的虚拟机。这意味着您对 VM 所做的所有更改,例如在您的用户目录中创建的文件夹,在重新加载后都将存在。

    这就像重新启动,它会关闭您的虚拟机,然后应用某些配置更改,这些更改只能在虚拟机关闭时应用。然后开机。示例:例如附加另一个 SATA 虚拟磁盘。

  5. vagrant up

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

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

我真的很喜欢使用它并在博客上写过它

总之,它是 VirtualBox APIs 和 Commands 的一个很好的包装器。您可以查看VirtualBox 命令以更好地了解一些功能。

于 2012-07-11T21:23:22.333 回答
37

我不确定它何时更改,但当前版本(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 。无论如何,在我的系统上。

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

于 2014-08-14T14:58:20.373 回答
8

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

我发现当谈到 Vagrantfiles 时,最完整的概述是在初始化 vagrant 项目后新创建的 Vagrantfile 的注释中。它提到了当前不在文档中的参数。

于 2013-08-23T16:16:29.067 回答