厨师/厨房 - 如何在本地生成模板(无需创建VM)

时间:2018-01-31 14:09:42

标签: ruby chef erb

我有一本厨师食谱。其中一个目标是从.erb模板生成配置文件。这是作为配方中的一个目标完成的,模板输入映射是从node树填充的。

template node['bbcpd-bpds-api']['api_config_path'] do
  source "opt/bpds-api/conf/api/bpds-api.yml.erb"
  mode 0644
  owner node['bbcpd-bpds-api']['user']
  group node['bbcpd-bpds-api']['group']
  variables(
      :application_protocol => node['bbcpd-bpds-api']['application_protocol'],
      :application_port => node['bbcpd-bpds-api']['application_port'],
  ...

我想生成此模板本地(即带有cookbook源的dir),而不需要准备虚拟机的所有其他操作。

基本上,我希望解析/attributes中的文件并准备node树,然后只运行ERB模板引擎,而不调用kitchen converge。或者理想情况下,完全kitchen。首选目标环境是Java / JRuby / Maven。

这可能吗?或者,我最好将配方与上面的模板目标分开,并仅使用该配方调用kitchen converge?怎么做?

请参阅Kitchen commands docs 我只能看kitchen converge PLATFORM作为选项 - 我可以添加套件。但我不知道那是什么。

还有run_lists。但我没有看到什么形式的运行列表条目运行的解释。

1 个答案:

答案 0 :(得分:0)

这是不可能的。 Chef仅在聚合节点的情况下运行。您可以编写自己的代码生成器,但在大多数情况下它与Chef无关(尽管您可以通过陪审架chef-apply来帮助,也许?)。