我正在尝试使用厨师的PostgreSQL食谱:https://supermarket.chef.io/cookbooks/postgresql readme
我得到这个错误:
Chef::Exceptions::RecipeNotFound: could not find recipe default for cookbook postgresql
我没有看到默认值。在回购:https://github.com/sous-chefs/postgresql/find/main
我已经添加了Berksfile和元数据的依赖项。在我的食谱中添加:
include_recipe 'postgresql'
我还添加了一个默认值。rb对应回购,include_recipe 'postgresql'
对应回购。仍然说没有默认配方。我遗漏了什么吗?
编辑:
根据seshadri_c的答案,这个错误现在已经消失了。我试图安装扩展。在我的default.rb:
postgresql_extension 'postgres adminpack' do
database 'postgres'
extension 'adminpack'
end
但是得到错误
FATAL: NoMethodError: postgresql_extension[postgres adminpack] (******::default line 5) had an error: NoMethodError: bash[CREATE EXTENSION postgres adminpack] (/tmp/packer-chef-solo/local-mode-cache/cache/cookbooks/postgresql/resources/extension.rb line 31) had an error: NoMethodError: undefined method `[]' for nil:NilClass[0m
在postgresql cookbook v7.0中引入了一个主要的更改。摘自超市页面:
如果你想知道在v7.0+中所有的食谱都去了哪里,或者我到底是如何使用这本新的食谱的,请参阅升级。
简而言之,所有的烹饪书功能已经从食谱转移到自定义资源。
所以,现在重用该功能的正确方法是"invoke"适当的资源,而不是"包括"菜谱。
从my_pg_client
cookbook安装PostgreSQL客户端示例:
Inmy_pg_client/metadata.rb
:
depends 'postgresql' # version pin as required
则my_pg_client/recipes/default.rb
:
# Install client software
postgresql_client_install 'My PostgreSQL Client install' do
version '9.5'
end
还有其他类似的自定义资源,如果您想安装服务器,例如:
postgresql_server_install 'My PostgreSQL Server install' do
version '9.5'
action :install
end
有许多关于如何使用自定义资源的示例:https://github.com/sous-chefs/postgresql/tree/main/test/cookbooks/test/recipes
更新:
默认情况下,postgresql_extension
资源安装作为资源名称提供的扩展名。因此,可以省略extension 'adminpack'
属性。您可以尝试这样做:
# Considering that a DB called "postgres" exists
postgresql_extension 'adminpack' do
database 'postgres'
end