【问题标题】:test-kitchen update instead of create every time测试厨房更新而不是每次都创建
【发布时间】:2018-04-15 22:40:25
【问题描述】:

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

【问题讨论】:

  • 找到了一些有用的信息herehere
  • 'kitchen list' 列出您的实例,'kitchen blend ' 其中 是在“kitchen list”中找到的实例的名称。

标签: chef-infra test-kitchen


【解决方案1】:

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

首先,有几个生命周期步骤:

  1. kitchen create - 这将创建实例。相当于vagrant up --no-provision
  2. kitchen converge - 这将收敛(提供)实例。相当于vagrant provision
  3. kitchen verify - 这将运行任何集成后测试(如 ServerSpec 或 bats)。 vagrant 中没有等价物。
  4. kitchen test - 将上述三个命令封装在一个序列中。

Test Kitchen 没有vagrant reload 的概念,这似乎是您的示例所描述的。但是,您可以通过执行以下操作来完成重新加载:

cd .kitchen/suite_name && vagrant reload

从命令行。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      正如 sethvargo 所指出的,即使您的实例已经融合并且 Vagrantfile 将通过对您的 .kitchen.yml 文件所做的更改重新创建,您也可以使用 kitchen create
      然后你可以:

      cd .kitchen/suite_name && vagrant reload
      

      您的 vagrant 实例将反映这些更改。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多