gpt4 book ai didi

mysql - chef_gem 的依赖项

转载 作者:可可西里 更新时间:2023-11-01 07:37:36 24 4
gpt4 key购买 nike

我目前正在更新 community MySQL cookbook这样它就可以用来安装 Percona,Percona 是现有 MySQL 的替代品,但有一些附加功能可以轻松启用 HA 和集群。

在我希望能够在 Recipe 中使用“ruby” Recipe 之前,我所有的添加都运行良好。这使用“chef_gem”提供程序来安装“mysql”rubygem。由于这是一个 native 扩展,因此需要对其进行编译,为此,需要安装 MySQL 的开发文件。

如果我使用普通的 MySQL 二进制文件,则一切正常,因为 MySQL 已经在 Centos 存储库中。但是,为了安装 Percona 软件包,我需要确保存储库位于“/etc/yum.repos.d”中。我遇到的问题是在尝试安装 mysql gem 之前我无法让 Chef 完成这项工作。

因此,最终发生的是系统尝试在没有安装 MySQL (Percona) 的开发头文件的情况下编译 mysql gem,即使正确引用了它们,也找不到它们,因为尚未设置存储库.

我创建了一个“percona-repo”配方,它使用“yum”提供程序来完成这项工作,但它不会在“chef_gem”之前运行。我知道 chef 有两个运行阶段,我假设“chef_gem”在编译阶段收集所有 gem,无论它们在整个运行列表中的什么位置,然后安装开始时请求的所有项目。然后将运行存储库配方。

我尝试使用 Ruby 配方来做一些事情,例如:

include_recipe "mysql::percona_repo"

node['mysql']['client']['packages'].each do |mysql_pack|
package mysql_pack do
action :nothing
end.run_action(:install)
end

chef_gem "mysql" do
action :nothing
end.run_action(:install)

但这行不通。 chef_gem 总是在我的“precona_repo” Recipe 之前运行,因此包安装失败,如果安装失败,则意味着 ruby​​ gem 安装也会失败。

如果有人对我如何解决这个问题有任何好主意,请告诉我。

更新

感谢 Mark 的建议,我现在已经更新了“ruby”配方,以便调用资源将新 key 和 repo 添加到服务器:

resources(:yum_key => "RPM-GPG-KEY-percona").run_action(:add)
resources(:yum_repository => "Percona").run_action(:add)

现在我可以看到这些在 Chef 运行中被激活了。但是,当我查看文件系统时,文件不存在,因此 mysql 客户端包的安装失败。

我在 yum cookbook 中做了一些挖掘,发现 yum_key 的提供者尝试运行“remote_file”来下载 key ,正如您所期望的那样。但是这个“remote_file”没有运行。因此,我尝试像上面那样将其作为资源运行,但它的名称中有一个变量,因此我无法有效地调用它,例如:

remote_file "/etc/pki/rpm-gpg/#{new_resource.key}" do
...
end

我想我开始有点陷入困境了。我会继续努力让这件事发挥作用,但欢迎提出更多想法。我尽量不走直接在本 Recipe 的 repo 中编码的路线,因为我更喜欢重用我知道有用的东西。

最佳答案

无论您从percona_repo Recipe 中需要什么资源,只需在chef_gem 之前手动调用所需的操作即可。

例如,如果您需要的东西看起来像这样:

yum_repo "percona-repo" do
action :install
...
end

然后您可以在 chef_gem 声明之前执行此操作:

resources(:yum_repo => 'percona-repo').run_action(:install)

不幸的是,这确实在两个 Recipe 之间引入了紧密耦合,但是没有办法说“嘿,大厨,包括这个 Recipe ,但是立即而不是稍后做所有事情,好吗?”

关于mysql - chef_gem 的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13167696/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com