令人惊讶的是,除了“入门”教程中的参考文献外,没有关于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,对其应用配置,启动它我有这些权利吗?还有什么?关于reload
和destroy
/ up
之间的确切差异,我仍然有点不清楚。
答案 0 :(得分:47)
我同意你的观点,vagrantup的文件不够短。
可以从命令帮助系统收集一些信息。
例如:gem
命令。
只需键入不带参数的命令:vagrant gem -h
,它就会生成您可能需要的信息。
vagrant gem
用于通过RubyGems安装Vagrant插件 系统。事实上,vagrant gem
只是实际gem
的前端 界面,不同的是Vagrant设置自定义 安装宝石的目录,以便它们与您的宝石隔离 系统宝石。
Vagrant ssh-config
:
当您执行vagrant ssh
到ssh进入VM时。它正在利用它众所周知的ssh密钥。有关此密钥的信息由vagrant ssh-config
提供。如果您想要将熟知的密钥更改为您自己的私钥并准备使用该密钥框,这将非常有用。
有时,您可能希望在VM上使用基于ssh的自动化。在这种情况下,知道正在使用哪个密钥是有用的。你可以使用普通的ssh命令 - ssh -i keyfile ..
vagrant status <vmname>
此命令是一个包装器,它提供有关vm状态的信息。它可以运行,保存和关闭。
vagrant reload
如果对vagrantfile中的配置进行了任何更改,需要生效。您可能想要重新加载VM。它会重新运行vagrantfile中定义的配置,除非您不这样做。
它不会破坏您从基本框创建的VM。这意味着您对VM所做的所有更改,例如在重新加载后在用户目录中创建了一个文件夹。
就像重启一样,它会关闭VM,然后应用某些配置更改,只有在关闭VM后才能应用。然后打开电源。示例:喜欢附加另一个SATA虚拟磁盘。
vagrant up
这会读取您的配置文件 - vagrantfile
,然后从基本框创建一个VM。 Base Box就像一个模板。您可以从中创建许多VM。
同样,vagrant destroy
会破坏您的VM。在这种情况下,您在其中进行的所有更改都将丢失。但是,这是一个很酷的想法,即您可以在创建新VM时从基本预定义状态开始。
我非常喜欢使用它并拥有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的注释中。它提到了目前文档中没有的参数。