小编Ter*_*ang的帖子

Chef Solo - Ruby DSL或JSON中的角色数据?

我和Roles一起玩Solo(11.4.4和11.6.0).有点困惑.

对于Chef Solo运行,角色应该用Ruby还是JSON编写?

根据官方文档:关于角色,角色可以存储为特定于域的Ruby(DSL)文件或JSON数据.

注意:chef-client使用Ruby for Roles,当这些文件上载到Chef Server时,它们将转换为JSON.每当刷新chef-repo时,所有特定于域的Ruby文件的内容都会重新编译为JSON并重新上载到服务器.

我的问题是,如果要求是在没有服务器且需要角色的情况下以独奏模式运行Chef,那么角色应该用Ruby还是JSON编写(我们没有服务器将Ruby转换为JSON)?

我的猜测是后者.有谁知道正确的答案?

BTW:我见过人们在角色文件中混合使用Ruby和JSON ......

下面的rbenv.rb的Ruby DSL等价物是什么?

例如,运行rbenv+ ruby-buildcookbook在Ubuntu上安装rbenv.

rbenv.json

{
  "run_list": ["role[rbenv]"]
}
Run Code Online (Sandbox Code Playgroud)

角色/ rbenv.rb

name "rbenv"
description "rbenv + ruby-build"
run_list(
  "recipe[rbenv]",
  "recipe[ruby_build]"
)
override_attributes(
  :rbenv => {
    :git_repository => "https://github.com/sstephenson/rbenv.git"
  },
  :ruby_build => {
    :git_repository => "https://github.com/sstephenson/ruby-build.git"
  }
)
Run Code Online (Sandbox Code Playgroud)

Chef Solo run chef-solo -c solo.rb -j rbenv.json -l debug按预期工作.这是通过HTTPS实现克隆,因为它更容易在防火墙后面.

但是,使用Ruby DSL版本的角色rbenv.rb如下所示

name "rbenv"
description "rbenv + ruby-build"
run_list "recipe[rbenv]", "recipe[ruby_build]"
# default_attributes …
Run Code Online (Sandbox Code Playgroud)

ruby chef-infra chef-recipe chef-solo

1
推荐指数
1
解决办法
2852
查看次数

标签 统计

chef-infra ×1

chef-recipe ×1

chef-solo ×1

ruby ×1