如何从默认食谱中调用自定义食谱?如果我尝试
recipe 'my-base-server'
我收到错误 1 参数为 0
我想要实现的是将我的配方逻辑划分为基础、Web 服务器和应用服务器。我将按照下面的答案所述设置每个配方,但我想将这些配方包含在我的默认配方中。我无法弄清楚的可能非常简单,就是如何从默认配方中调用我编写的 Web 服务器配方。Web 服务器配方将依次调用 nginx 配方,如下所述。我正在使用 Berkshelf。我不想使用角色和节点。我找不到有关如何仅使用包装器配方执行此操作的文档。
本质上,我想知道的都是非常基本的东西,如何在配方中定义运行列表。我找不到任何不从角色或节点执行此操作的参考。
答案1
您可以像这样使用包装器食谱(在本例中,部署 Tomcat 应用程序):
node.set['java']['install_flavor'] = 'oracle'
node.set['java']['oracle']['accept_oracle_download_terms'] = true
node.set['java']['jdk_version'] = 7
node.set['tomcat']['base_version'] = 7
node.set['tomcat']['loglevel'] = 'WARN' # default is 'INFO'
tempdir = node['appname']['temp_dir']
configdir = node['appname']['config_dir']
loggingconf = node['appname']['logging_conf']
grailsenv = node['appname']['grails_env']
appdir = node['appname']['app_dir']
if Chef::Config[:solo]
node.set["tomcat"]["keystore_password"] = 'throwawaypassword'
node.set["tomcat"]["truststore_password"] = 'throwawaypassword'
end
include_recipe "java"
include_recipe "tomcat"
答案2
我只需要像这样命名配方
include_recipe 'my-rails-server::web-server'
菜谱名称是
recipes/web-server.rb
我的问题是,我曾经手动创建过一本食谱,但没用。在我使用
berks cookbook my-rails-server
它工作得很好。