gpt4 book ai didi

ruby - 如何按角色查找 Chef 节点ip

转载 作者:数据小太阳 更新时间:2023-10-29 08:00:41 25 4
gpt4 key购买 nike

我有一个问题。我正在尝试获取一个运行 postgresql 并且是复制主机的节点 IP。所以我可以将 IP 植入 repmgr cookbook,这样它就会自动将其设置到 SSH 配置文件中。我需要它,因为我没有在端口 22 上运行 SSH,所以我需要使该过程自动化。

这是 configure.rb 文件:

template File.join(node[:repmgr][:pg_home], '.ssh/config') do
source 'ssh_config.erb'
mode 0644
owner node[:repmgr][:system_user]
group node[:repmgr][:system_user]
variables( :hosts => Array(master_node[:ipaddress]) )
end

directory File.dirname(node[:repmgr][:config_file_path])

template node[:repmgr][:config_file_path] do
source 'repmgr.conf.erb'
mode 0644
end

主节点IP地址取自属性(default.rb):

default[:repmgr][:addressing][:master] = nil

我需要将 nil 更改为其他内容,以便我可以获得主服务器的 IP,也就是从服务器。备用服务器可以将它的 IP 添加到 SSH 配置,这样它将通过我的 SSH 端口而不是默认的 22 端口进行复制。

我希望有人能提供帮助,因为我是 Ruby 的新手,我只知道它的基础知识。

谢谢。我希望你明白我的问题。

最佳答案

如果您使用 chef-server , 然后你可以通过 search 找到其他配置的节点在 Recipe 中。您可以通过不同的属性搜索节点:例如角色、配方、环境、名称等。我希望您的 replication master 节点具有一些使其独一无二的属性,例如 postgres 配方或 run_list 中的 replication-master 角色。

nodes = search( :node, 'recipes:postgres' )

nodes = search( :node, 'role:replication-master' )

搜索返回具有相应属性的节点数组。然后:

node.default[:repmgr][:addressing][:master] = nodes.first[:ipaddress]

代码应该写在配方文件中,而不是在属性中。

关于ruby - 如何按角色查找 Chef 节点ip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14852128/

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