class Chef class Recipe def postgresql_primary postgresql_primary = search(:node, "role:postgresql_primary AND chef_environment:#{node.chef_environment}").first unless postgresql_primary.nil? primary_ip = ip_for(postgresql_primary) { hostname: postgresql_primary[:hostname], ipaddress: primary_ip } end end def postgresql_replicas postgresql_replicas = [] search(:node, "role:postgresql_replica AND chef_environment:#{node.chef_environment}").each do |replica| replica_ip = ip_for(replica) postgresql_replicas << { hostname: replica[:hostname], ipaddress: replica_ip } end postgresql_replicas end def ip_for(server_node) if node.chef_environment == "development" server_node['network']['interfaces']['eth1']['routes'].first['src'] else server_node['ipaddress'] end end def postgresql_service_name postgresql_version = "12" "postgresql@#{postgresql_version}-main" end end end