40 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
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
 |