我想使用 Vagrants Chef 单独配置程序安装多个任意 APT 软件包。
chef.json 似乎允许您执行 Chef 命令,但我不清楚如何执行此操作。像这样的东西:
chef.json = {
apt: {
package: {'libssl-dev': {action: 'install'}}
}
?
最佳答案
Chef 使用recipes定义resources在 nodes 上执行通过 Chef 客户。
json
您正在设置 chef-solo
定义attributes这就像您的 Chef 可以用来决定做什么的变量。
因此,您有一个供 Chef 使用的属性 哈希值,但您需要一个配方,根据该哈希值配置资源在您的节点上执行
根据您的情况,您需要配置 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
然后将各个 Recipe 打包到cookbooks中这是类似 Recipe 的逻辑分组。一般来说, Recipe 是针对一个软件的,比如 httpd
或mysql
.
正如 Tensibia 提到的,请通读 Vagrant Chef-Solo docco用于放置您的 Recipe/Recipe 并从那里运行。
关于vagrant - 在 Vagrant alone-provisioner 上使用 Chef.json 安装 apt 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25670400/