66 lines
1.9 KiB
Python
66 lines
1.9 KiB
Python
from ipaddress import ip_interface
|
|
|
|
defaults = {
|
|
'systemd': {
|
|
'units': {
|
|
'build-server.service': {
|
|
'Unit': {
|
|
'Description': 'build server',
|
|
'After': 'network.target',
|
|
},
|
|
'Service': {
|
|
'User': 'build-server',
|
|
'Group': 'build-server',
|
|
'Environment': 'STRATEGIES_DIR=/opt/build-server/strategies',
|
|
'WorkingDirectory': '/var/lib/build-server',
|
|
'ExecStart': '/opt/build-server/build-server-crystal --port 4000',
|
|
'Restart': 'always',
|
|
},
|
|
'Install': {
|
|
'WantedBy': {'multi-user.target'},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
'users': {
|
|
'build-server': {
|
|
'home': '/var/lib/build-server',
|
|
},
|
|
},
|
|
}
|
|
|
|
|
|
@metadata_reactor.provides(
|
|
'build-server',
|
|
)
|
|
def agent_conf(metadata):
|
|
download_server = repo.get_node(metadata.get('build-server/download_server'))
|
|
return {
|
|
'build-server': {
|
|
'architectures': {
|
|
architecture: {
|
|
'ip': str(ip_interface(repo.get_node(conf['node']).metadata.get('network/internal/ipv4')).ip),
|
|
}
|
|
for architecture, conf in metadata.get('build-server/architectures').items()
|
|
},
|
|
'download_server_ip': str(ip_interface(download_server.metadata.get('network/internal/ipv4')).ip),
|
|
},
|
|
}
|
|
|
|
|
|
@metadata_reactor.provides(
|
|
'nginx/vhosts',
|
|
)
|
|
def nginx(metadata):
|
|
return {
|
|
'nginx': {
|
|
'vhosts': {
|
|
metadata.get('build-server/hostname'): {
|
|
'content': 'nginx/proxy_pass.conf',
|
|
'context': {
|
|
'target': 'http://127.0.0.1:4000',
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|