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',
 | 
						|
                },
 | 
						|
            },
 | 
						|
        },
 | 
						|
    }
 |