61 lines
1.6 KiB
Python
61 lines
1.6 KiB
Python
defaults = {
|
|
'apt': {
|
|
'packages': {
|
|
'python3-pip': {},
|
|
'python3-dev': {},
|
|
'python3-venv': {},
|
|
},
|
|
},
|
|
'flask': {},
|
|
}
|
|
|
|
|
|
@metadata_reactor.provides(
|
|
'flask',
|
|
)
|
|
def app_defaults(metadata):
|
|
return {
|
|
'flask': {
|
|
name: {
|
|
'user': 'root',
|
|
'group': 'root',
|
|
'workers': 8,
|
|
'timeout': 30,
|
|
**conf,
|
|
}
|
|
for name, conf in metadata.get('flask').items()
|
|
}
|
|
}
|
|
|
|
|
|
@metadata_reactor.provides(
|
|
'systemd/units',
|
|
)
|
|
def units(metadata):
|
|
return {
|
|
'systemd': {
|
|
'units': {
|
|
f'{name}.service': {
|
|
'Unit': {
|
|
'Description': name,
|
|
'After': 'network.target',
|
|
},
|
|
'Service': {
|
|
'Environment': {
|
|
f'{k}={v}'
|
|
for k, v in conf.get('env', {}).items()
|
|
},
|
|
'User': conf['user'],
|
|
'Group': conf['group'],
|
|
'ExecStart': f"/opt/{name}/venv/bin/gunicorn -w {conf['workers']} -b 127.0.0.1:{conf['port']} --timeout {conf['timeout']} {conf['app_module']}:app"
|
|
},
|
|
'Install': {
|
|
'WantedBy': {
|
|
'multi-user.target'
|
|
}
|
|
},
|
|
}
|
|
for name, conf in metadata.get('flask').items()
|
|
}
|
|
}
|
|
}
|