【发布时间】:2018-04-15 22:40:25
【问题描述】:
在测试厨房中,有没有办法更新创建的实例,而不是每次都销毁和重新创建实例?假设我在 kitchen.yml 中进行了更改并希望看到该更改,运行整个销毁/创建可能需要一段时间。
【问题讨论】:
在测试厨房中,有没有办法更新创建的实例,而不是每次都销毁和重新创建实例?假设我在 kitchen.yml 中进行了更改并希望看到该更改,运行整个销毁/创建可能需要一段时间。
【问题讨论】:
取决于您使用的提供商 - 是的。
首先,有几个生命周期步骤:
kitchen create - 这将创建实例。相当于vagrant up --no-provision。kitchen converge - 这将收敛(提供)实例。相当于vagrant provision。kitchen verify - 这将运行任何集成后测试(如 ServerSpec 或 bats)。 vagrant 中没有等价物。kitchen test - 将上述三个命令封装在一个序列中。Test Kitchen 没有vagrant reload 的概念,这似乎是您的示例所描述的。但是,您可以通过执行以下操作来完成重新加载:
cd .kitchen/suite_name && vagrant reload
从命令行。
【讨论】:
如果您使用 Vagrant,请尝试使用命令 vagrant global-status 获取机器 ID,然后使用它重新加载。
像这样的:
$ vagrant global-status
42c66e1c default virtualbox poweroff /path/to/your/machine/kitchen-vagrant/webserver-ubuntu-1404
1c135a2e default virtualbox running /path/to/other/machine/.kitchen/kitchen-vagrant/kitchen-machines-webserver-ubuntu-1404
$ vagrant reload 1c135ae --provision
【讨论】:
正如 sethvargo 所指出的,即使您的实例已经融合并且 Vagrantfile 将通过对您的 .kitchen.yml 文件所做的更改重新创建,您也可以使用 kitchen create。
然后你可以:
cd .kitchen/suite_name && vagrant reload
您的 vagrant 实例将反映这些更改。
但请注意,在某些情况下,当您重新加载实例时,ssh 端口号可能会发生变化。在这种情况下,您可以使用 vagrant port 查看更改并使用这些更改修复您的 .kitchen/name-of-your-instance.yml 文件,这样您就可以毫无问题地使用kitchen login。
【讨论】: