vagrant - 在 Vagrant alone-provisioner 上使用 Chef.json 安装 apt 包

标签 vagrant chef-infra

我想使用 Vagrants Chef 单独配置程序安装多个任意 APT 软件包。

chef.json 似乎允许您执行 Chef 命令,但我不清楚如何执行此操作。像这样的东西:

chef.json = {
  apt: {
    package: {'libssl-dev': {action: 'install'}}
  }

最佳答案

Chef 使用recipes定义resourcesnodes 上执行通过 Chef 客户。

  • 菜谱基本上是对要做什么的定义(脚本)
  • 资源是您正在配置的特定元素( fileservicepackage 等)
  • 节点是运行 Chef-client 的机器

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 是针对一个软件的,比如 httpdmysql .

正如 Tensibia 提到的,请通读 Vagrant Chef-Solo docco用于放置您的 Recipe/Recipe 并从那里运行。

关于vagrant - 在 Vagrant alone-provisioner 上使用 Chef.json 安装 apt 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25670400/

相关文章:

vagrant - 找到 Vagrantfile 文件夹

https - Fiddler 根证书位置

github - 通过 Vagrant 为 Jenkins 和 GIthub 自动配置 SSH key

java - 使用 chef 安装 java

linux - 从不同域访问多个网站

vagrant 找不到现有的盒子

chef-infra - 使用 chef (solo) 如何设置 root 用户的密码?

chef-infra - Chef 和 easy_install_package——如何添加 -U 选项

ubuntu - 使用 Chef 和 Knife 引导一个 ubuntu ec2 实例

npm - 使用 Chef 加载 NPM 包