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