73 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from bundlewrap.utils.dicts import merge_dict
 | |
| 
 | |
| 
 | |
| version = node.metadata.get('postgresql/version')
 | |
| 
 | |
| directories = {
 | |
|     '/var/lib/postgresql': {
 | |
|         'owner': 'postgres',
 | |
|         'group': 'postgres',
 | |
|         'needs': [
 | |
|             'pkg_apt:postgresql',
 | |
|             'zfs_dataset:tank/postgresql',
 | |
|         ],
 | |
|         'needed_by': [
 | |
|             'svc_systemd:postgresql.service',
 | |
|         ],
 | |
|     }
 | |
| }
 | |
| 
 | |
| files = {
 | |
|     f"/etc/postgresql/{version}/main/pg_hba.conf": {
 | |
|         'content_type': 'mako',
 | |
|         'mode': '0640',
 | |
|         'owner': 'postgres',
 | |
|         'group': 'postgres',
 | |
|         'needs': [
 | |
|             'pkg_apt:postgresql',
 | |
|         ],
 | |
|         'needed_by': [
 | |
|             'svc_systemd:postgresql.service',
 | |
|         ],
 | |
|         'triggers': [
 | |
|             'svc_systemd:postgresql.service:restart',
 | |
|         ],
 | |
|     },
 | |
|     f"/etc/postgresql/{version}/main/conf.d/managed.conf": {
 | |
|         'content': '\n'.join(
 | |
|             f'{key} = {value}'
 | |
|                 for key, value in sorted(node.metadata.get('postgresql/conf').items())
 | |
|         ) + '\n',
 | |
|         'owner': 'postgres',
 | |
|         'group': 'postgres',
 | |
|         'needs': [
 | |
|             'pkg_apt:postgresql',
 | |
|         ],
 | |
|         'needed_by': [
 | |
|             'svc_systemd:postgresql.service',
 | |
|         ],
 | |
|         'triggers': [
 | |
|             'svc_systemd:postgresql.service:restart',
 | |
|         ],
 | |
|     },
 | |
| }
 | |
| 
 | |
| svc_systemd['postgresql.service'] = {
 | |
|     'needs': [
 | |
|         'pkg_apt:postgresql',
 | |
|     ],
 | |
| }
 | |
| 
 | |
| for user, config in node.metadata.get('postgresql/roles').items():
 | |
|     postgres_roles[user] = merge_dict(config, {
 | |
|         'needs': [
 | |
|             'svc_systemd:postgresql.service',
 | |
|         ],
 | |
|     })
 | |
| 
 | |
| for database, config in node.metadata.get('postgresql/databases').items():
 | |
|     postgres_dbs[database] = merge_dict(config, {
 | |
|         'needs': [
 | |
|             'svc_systemd:postgresql.service',
 | |
|         ],
 | |
|     })
 |