121 lines
		
	
	
	
		
			3.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			121 lines
		
	
	
	
		
			3.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from base64 import b64decode
 | |
| 
 | |
| # hash: SCRAM-SHA-256$4096:tQNfqQi7seqNDwJdHqCHbg==$r3ibECluHJaY6VRwpvPqrtCjgrEK7lAkgtUO8/tllTU=:+eeo4M0L2SowfyHFxT2FRqGzezve4ZOEocSIo11DATA=
 | |
| database_password = repo.vault.password_for(f'{node.name} postgresql freescout').value
 | |
| 
 | |
| defaults = {
 | |
|     'apt': {
 | |
|         'packages': {
 | |
|             'git': {},
 | |
|             'php': {},
 | |
|             'php-pgsql': {},
 | |
|             'php-fpm': {},
 | |
|             'php-mbstring': {},
 | |
|             'php-xml': {},
 | |
|             'php-imap': {},
 | |
|             'php-zip': {},
 | |
|             'php-gd': {},
 | |
|             'php-curl': {},
 | |
|             'php-intl': {},
 | |
|         },
 | |
|     },
 | |
|     'freescout': {
 | |
|         'env': {
 | |
|             'APP_TIMEZONE': 'Europe/Berlin',
 | |
|             'DB_CONNECTION': 'pgsql',
 | |
|             'DB_HOST': '127.0.0.1',
 | |
|             'DB_PORT': '5432',
 | |
|             'DB_DATABASE': 'freescout',
 | |
|             'DB_USERNAME': 'freescout',
 | |
|             'DB_PASSWORD': database_password,
 | |
|             'APP_KEY': 'base64:' + repo.vault.random_bytes_as_base64_for(f'{node.name} freescout APP_KEY', length=32).value
 | |
|         },
 | |
|     },
 | |
|     'php': {
 | |
|         'php.ini': {
 | |
|             'cgi': {
 | |
|                 'fix_pathinfo': '0',
 | |
|             },
 | |
|         },
 | |
|     },
 | |
|     'postgresql': {
 | |
|         'roles': {
 | |
|             'freescout': {
 | |
|                 'password_hash': repo.libs.postgres.generate_scram_sha_256(
 | |
|                     database_password,
 | |
|                     b64decode(repo.vault.random_bytes_as_base64_for(f'{node.name} postgres freescout', length=16).value.encode()),
 | |
|                 ),
 | |
|             },
 | |
|         },
 | |
|         'databases': {
 | |
|             'freescout': {
 | |
|                 'owner': 'freescout',
 | |
|             },
 | |
|         },
 | |
|     },
 | |
|     # 'systemd': {
 | |
|     #     'units': {
 | |
|     #         f'freescout-cron.service': {
 | |
|     #             'Unit': {
 | |
|     #                 'Description': 'Freescout Cron',
 | |
|     #                 'After': 'network.target',
 | |
|     #             },
 | |
|     #             'Service': {
 | |
|     #                 'User': 'www-data',
 | |
|     #                 'Nice': 10,
 | |
|     #                 'ExecStart': f"/usr/bin/php /opt/freescout/artisan schedule:run"
 | |
|     #             },
 | |
|     #             'Install': {
 | |
|     #                 'WantedBy': {
 | |
|     #                     'multi-user.target'
 | |
|     #                 }
 | |
|     #             },
 | |
|     #         }
 | |
|     #     },
 | |
|     # },
 | |
|     'systemd-timers': {
 | |
|         'freescout-cron': {
 | |
|             'command': '/usr/bin/php /opt/freescout/artisan schedule:run',
 | |
|             'when': '*-*-* *:*:00',
 | |
|             'RuntimeMaxSec': '180',
 | |
|             'user': 'www-data',
 | |
|         },
 | |
|     },
 | |
|     'zfs': {
 | |
|         'datasets': {
 | |
|             'tank/freescout': {
 | |
|                 'mountpoint': '/opt/freescout',
 | |
|             },
 | |
|         },
 | |
|     },
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| @metadata_reactor.provides(
 | |
|     'freescout/env/APP_URL',
 | |
| )
 | |
| def freescout(metadata):
 | |
|     return {
 | |
|         'freescout': {
 | |
|             'env': {
 | |
|                 'APP_URL': 'https://' + metadata.get('freescout/domain') + '/',
 | |
|             },
 | |
|         },
 | |
|     }
 | |
| 
 | |
| 
 | |
| @metadata_reactor.provides(
 | |
|     'nginx/vhosts',
 | |
| )
 | |
| def nginx(metadata):
 | |
|     return {
 | |
|         'nginx': {
 | |
|             'vhosts': {
 | |
|                 metadata.get('freescout/domain'): {
 | |
|                     'content': 'freescout/vhost.conf',
 | |
|                 },
 | |
|             },
 | |
|         },
 | |
|     }
 |