测试厨房更新,而不是每次创建

时间:2014-06-27 16:33:48

标签: chef test-kitchen

在测试厨房中,有没有办法更新创建的实例,而不是每次都要销毁和重新创建实例?假如我在kitchen.yml中更改并希望看到该更改,则运行整个destroy / create可能需要一段时间。

3 个答案:

答案 0 :(得分:6)

取决于您使用的提供商 - 是。

首先,有一些生命周期步骤:

  1. kitchen create - 这将创建实例。它相当于vagrant up --no-provision
  2. kitchen converge - 这将收集(提供)实例。它相当于vagrant provision
  3. kitchen verify - 这将运行任何集成后测试(如ServerSpec或bats)。流浪者中没有相应的东西。
  4. kitchen test - 将上述三个命令包装在一个序列中。
  5. Test Kitchen没有vagrant reload的概念,这就是你的例子所描述的内容。但是,您可以通过执行以下操作来完成重新加载:

    cd .kitchen/suite_name && vagrant reload
    
    从命令行

答案 1 :(得分:0)

如果您使用的是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

答案 2 :(得分:0)

正如sethvargo指出的那样,即使您的实例已经收敛,也可以使用kitchen create,并且可以通过对.kitchen.yml文件进行更改来重新创建Vagrantfile。
然后你可以:

cd .kitchen/suite_name && vagrant reload

你的流浪者实例会反映这些变化。

但请注意,在某些情况下,当您重新加载实例时,ssh端口号可能会发生变化。在这种情况下,您可以使用vagrant port查看更改并使用这些更改修复.kitchen / name-of-instance.yml文件,以便kitchen login可以没有问题。