Vagrant命令的确切作用是什么?


96

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

到目前为止,我得出的结论是:

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

我有这些权利吗?还有什么?对于reloaddestroy/ 之间的确切区别,我仍然不清楚up


当前的文档现在要好得多-vagrantup.com/v1/docs/index.html
JavaRocky 2012年

2
@JavaRocky,对我来说似乎不喜欢。 vagrantup.com/v1/docs/commands.html实际上仍然没有每个子命令的信息。我希望像这样的指南中有更多关于每个命令的信息(与相比-h),而不是更少。
马修·弗拉申

2
@JavaRocky-如果更好,我无法想象他们以前的样子。完全没有用。
DougW

有趣的是,看起来他们实际上已经删除了命令列表,从而使该网站的信息内容比以前更少。
史蒂夫·贝内特

从当前文档看来,“恢复”与“无用启动”是多余的,例如,如果挂起,则后者将恢复一台机器,如果停止则重新提供机器。准确吗? docs.vagrantup.com/v2/getting-started/teardown.html
cboettig 2014年

Answers:


48

我同意您在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中的配置进行任何更改,则该更改必须生效。您可能需要重新加载VM。除非您不太要求,否则它将重新运行vagrantfile中定义的配置。

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

    就像重新启动一样,先关闭虚拟机电源,然后应用某些配置更改,该更改仅在关闭虚拟机电源后才能应用。然后打开电源。例如:就像附加另一个SATA虚拟磁盘。

  5. vagrant up

    这将读取您的配置文件- vagrantfile然后从基础框中创建VM。基本框就像模板。您可以从中创建许多VM。

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

我真的很喜欢使用它,并且已经在博客上写了

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


1
您从什么版本的vagrant获得所有这些输出?我正在使用1.0.5,却一无所获。 vagrant gem -h给出您所显示的输出,但是其他所有都说没什么用。
DougW

2
流浪者1.2似乎倒退了。例如,vagrant init -h只需给出以下信息:用法:vagrant init [box-name] [box-url] -h,
Steve Bennett 2013年

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。无论如何,在我的系统上。

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


8

即使当前的v1.1文档看起来更好,但它的完整性也比v1差很多,这实在是太糟糕了。“少即是多”的信条在文档领域是行不通的...

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.