我正在使用vagrant驱动程序和virtualbox提供程序来测试serverspec。 我需要在执行kitchen converge之前执行一些与应用程序相关的脚本。
我尝试过使用vagrant配置,但我试图将应用程序配置与vagrant配置分开。
有什么办法可以将一些命令传递给厨房里的.kitchen.yml文件吗?在融合烹饪书之前执行一些命令。
答案 0 :(得分:1)
如果您尝试在主机系统上运行该命令,则pre_create_command
。如果您的意思是在客人身上运行某些内容,则表示不支持。您最好制作一个测试夹具配方或食谱,并将其添加到访客节点的运行列表中。
答案 1 :(得分:0)
@ coderanger的建议可能是最好的方法。
或者,您可以尝试以下方法之一:
自定义Vagrant框
如果应用程序脚本始终相同,则可以考虑在脚本已执行的情况下创建自己的自定义Vagrant框。
滥用chef_omnibus_url
<强> .kitchen.yml:
强>
driver:
name: vagrant
provisioner:
name: chef_zero
chef_omnibus_url: "uri_to_your_script/script.sh"
...
<强> script.sh:
强>
#!/bin/sh
# Your script goes here
curl https://www.chef.io/chef/install.sh | sh
(https://www.chef.io/chef/install.sh
是chef_omnibus_url
)
的默认值
答案 2 :(得分:0)
我都喜欢这两个答案,但是它们都不适合我和你的情况: * 1st已弃用 *第二个不是您需要的东西,但是非常好
但是,我的解决方案可能会为您提供帮助。
这是-我现在猜想-仅用于测试,然后建议您创建一个新的食谱(例如test_kitchen_support),在运行列表中运行第一个。您可以在那里安装所有需要的内容。
这样,我发现它非常简洁,并且只是测试,因此生产将仅使用食谱。
我的问题是我厌倦了创建自己的流浪者盒子,发现大部分都不适合我(例如,它们有一些硬编码,或者它们是非常小的OS版本,缺少一些默认软件包)
我希望这对某人有帮助。