46 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.3 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
 | |
|         # If the server has a private Zerotier IP, use it
 | |
|         if server_node['knife_zero'] && server_node['knife_zero']['host'] && \
 | |
|             server_node['knife_zero']['host'].start_with?("10.1.1.")
 | |
|           server_node['knife_zero']['host']
 | |
|         else
 | |
|           server_node['ipaddress']
 | |
|         end
 | |
|       end
 | |
|     end
 | |
| 
 | |
|     def postgresql_service_name
 | |
|       postgresql_version = "12"
 | |
| 
 | |
|       "postgresql@#{postgresql_version}-main"
 | |
|     end
 | |
|   end
 | |
| end
 |