include_recipe 使之前的所有内容都被跳过

include_recipe makes everything before to be skipped

我想使用 postgresql community cookbook,但我想要来自不同 repo 的包。这就是为什么我在包装器食谱中使用 yum_repository 资源添加它。这是我的包装食谱:

yum_repository 'PostgresBDR' do
  description 'Postgres BDR repo'
  baseurl 'http://packages.2ndquadrant.com/postgresql-bdr94-2ndquadrant/yum/redhat-$releasever-$basearch'
  gpgkey 'http://packages.2ndquadrant.com/postgresql-bdr94-2ndquadrant/RPM-GPG-KEY-2NDQ-BDR-94'
  action :create
end

node.default['postgresql']['version'] = '9.4'
node.default['postgresql']['server']['service_name'] = 'postgresql-9.4'
node.default['postgresql']['server']['packages'] = %w(postgresql-bdr94-server postgresql-bdr94-bdr)
node.default['postgresql']['client']['packages'] = %w(postgresql-bdr94 postgresql-bdr94-devel)
node.default['postgresql']['setup_script'] = 'postgresql94-setup'

include_recipe 'postgresql::ruby'
include_recipe 'postgresql::server'

问题是直到我用 include_recipe 评论两个最新的字符串后,BDR 存储库才被添加。 所以我可以分两部分完成安装。

  1. include_recipe 评论最近的两行并应用食谱
  2. 取消注释并再次应用食谱

为什么它没有像我预期的那样工作?尝试将 yum_repository 移动到一个单独的配方中,并且 include_recipe 也移动它但没有任何改变。

postgresql::ruby 配方在编译时进行安装,而不是通常的收敛时间,因为它的预期用途。您也必须在编译时设置存储库。

yum_repository 'PostgresBDR' do
  description 'Postgres BDR repo'
  baseurl 'http://packages.2ndquadrant.com/postgresql-bdr94-2ndquadrant/yum/redhat-$releasever-$basearch'
  gpgkey 'http://packages.2ndquadrant.com/postgresql-bdr94-2ndquadrant/RPM-GPG-KEY-2NDQ-BDR-94'
  action :nothing
end.run_action(:create)

您可以在 https://coderanger.net/two-pass/ 找到有关这两个阶段的更多详细信息。