working parsing
commit
92fbd0b4c5
@ -0,0 +1,63 @@
|
||||
version: "3.2"
|
||||
|
||||
services:
|
||||
teamspeak:
|
||||
image: docker.io/teamspeak
|
||||
deploy:
|
||||
replicas: 1
|
||||
placement:
|
||||
constraints: [node.labels.gluster == true]
|
||||
depends_on:
|
||||
- mariadb
|
||||
environment:
|
||||
- TS3SERVER_DB_PLUGIN=ts3db_mariadb
|
||||
- TS3SERVER_DB_SQLCREATEPATH=create_mariadb
|
||||
- TS3SERVER_DB_HOST=mariadb
|
||||
- TS3SERVER_DB_USER=teamspeak
|
||||
- TS3SERVER_DB_NAME=teamspeak
|
||||
- TS3SERVER_LICENSE=accept
|
||||
ports:
|
||||
- target: 9987
|
||||
published: "145.239.119.128:42842"
|
||||
protocol: udp
|
||||
mode: ingress
|
||||
- target: 30033
|
||||
mode: ingress
|
||||
volumes:
|
||||
- "/gluster/docker/gamemodeon-teamspeak_teamspeak/var/ts3server/:/var/ts3server/"
|
||||
networks:
|
||||
- database
|
||||
- teamspeak
|
||||
mariadb:
|
||||
image: docker.io/mariadb
|
||||
deploy:
|
||||
replicas: 1
|
||||
placement:
|
||||
constraints: [node.hostname == stan.lubi.link]
|
||||
environment:
|
||||
- MYSQL_USER=teamspeak
|
||||
- MYSQL_DATABASE=teamspeak
|
||||
- MYSQL_RANDOM_ROOT_PASSWORD=yes
|
||||
volumes:
|
||||
- "/mnt/gamemodeon-teamspeak_mariadb/var/lib/mysql/:/var/lib/mysql/"
|
||||
networks:
|
||||
- database
|
||||
synapse:
|
||||
image: matrixdotorg/synapse
|
||||
deploy:
|
||||
replicas: 1
|
||||
placement:
|
||||
constraints: [node.labels.gluster == true]
|
||||
depends_on:
|
||||
- postgres
|
||||
environment:
|
||||
- SYNAPSE_CONFIG_PATH=/data/homeserver.yaml
|
||||
volumes:
|
||||
- "/gluster/docker/imninja_synapse/data/:/data/"
|
||||
ports:
|
||||
- "145.239.119.128:8448:8448"
|
||||
- "145.239.119.128:42933:443"
|
||||
networks:
|
||||
- homeserver
|
||||
- database
|
||||
- lubiland-lb
|
@ -0,0 +1,55 @@
|
||||
#Requires -Modules powershell-yaml
|
||||
$ErrorActionPreference = 'Stop'
|
||||
|
||||
foreach($yaml in (Get-ChildItem -Filter '*.yml')) {
|
||||
Write-Output ('Processing {0}' -f $yaml)
|
||||
$definition = Get-Content -Path $yaml -Raw | ConvertFrom-Yaml
|
||||
|
||||
foreach($port in $definition.services.Values.ports) {
|
||||
$nat = @{
|
||||
protocol = $null
|
||||
public_ip = $null
|
||||
public_port = $null
|
||||
internal_port = $null
|
||||
}
|
||||
|
||||
if($port.Count -eq 4) {
|
||||
#long form
|
||||
$published_splitted = $port.published -split ':'
|
||||
|
||||
$nat.protocol = $port.protocol
|
||||
$nat.public_ip = $published_splitted[0]
|
||||
$nat.public_port = $port.target
|
||||
$nat.internal_port = $published_splitted[1]
|
||||
} else {
|
||||
#short form
|
||||
$ports_splitted = $port -split ':'
|
||||
|
||||
$nat.public_ip = $ports_splitted[0]
|
||||
$nat.public_port = $ports_splitted[2]
|
||||
$nat.internal_port = $ports_splitted[1]
|
||||
}
|
||||
|
||||
if(!$nat.protocol) {
|
||||
#this is also Docker's default
|
||||
$nat.protocol = 'tcp'
|
||||
}
|
||||
if($nat.Values -contains $null) {
|
||||
#if $nat doesn't conatain all needed attributes skip the port
|
||||
$error_message = 'Skipping port, because $nat contains $null: {0}' `
|
||||
-f ($nat | ConvertTo-Json)
|
||||
Write-Error -Message $error_message `
|
||||
-ErrorAction Continue
|
||||
continue
|
||||
}
|
||||
|
||||
if($nat.internal_port -ne $nat.public_port) {
|
||||
Write-Output ('Additional NAT rule required, because published {0} and target {1} differ' `
|
||||
-f $nat.internal_port,$nat.public_port)
|
||||
$nat.protocol
|
||||
$nat.public_ip
|
||||
$nat.public_port
|
||||
$nat.internal_port
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue