首页 文章

Vagrant命令究竟做了什么?

提问于
浏览
93

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

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

  • box - 管理“boxes

  • destroy - 关闭VM然后删除其存储的图像?

  • gem

  • halt - 关闭虚拟机

  • init - 使用新的Vagrantfile准备一个目录

  • package - 关闭VM,然后将其转换为'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 回答

  • 8

    我同意你的意见,vagrantup的文件是短的 .

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

    • 例如: gem 命令 .

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

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

    • 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 .

    In summary, it is a good wrapper over VirtualBox APIs and Commands . 您可以查看VirtualBox commands以更好地了解某些功能 .

  • 33

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

    现在,这似乎是明确的答案 .

  • 46

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

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

相关问题