我想使用Vagrants Chef solo provisioner安装几个任意的APT包。
chef.json似乎允许你执行厨师命令,但我不清楚如何做到这一点。类似的东西:
chef.json = {
apt: {
package: {'libssl-dev': {action: 'install'}}
}
答案 0 :(得分:3)
Chef使用recipes定义resources通过主厨客户在nodes上执行的内容。
您为json
设置的chef-solo
定义了attributes,它们就像您的厨师可以用来决定做什么的变量。
所以你有一个属性的哈希值供Chef使用,但是你需要一个 recipe 来配置基于该哈希的资源在节点上执行
在您的情况下,您需要配置package
resource
package "name" do
some_attribute "value"
action :action
end
包资源支持许多不同的包后端,包括apt
,因此您不必担心差异(包名称除外)。
要从哈希中安装包,您可以创建如下配方:
node[:apt][:package].each do |pkg,pkg_data|
package pkg do
action pkg_data[:action].to_sym
end
end
然后将个别食谱打包成cookbooks,这是类似食谱的逻辑分组。通常,食谱会用于一个软件,比如httpd
或mysql
。
正如Tensibia所提到的那样,请阅读Vagrant Chef-Solo docco,了解您的食谱/食谱从哪里开始运行。
答案 1 :(得分:1)