183 lines
		
	
	
	
		
			5.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			183 lines
		
	
	
	
		
			5.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from shlex import quote
 | |
| 
 | |
| 
 | |
| def steam_run(cmd):
 | |
|     return f'su - steam -c {quote(cmd)}'
 | |
| 
 | |
| 
 | |
| users = {
 | |
|     'steam': {
 | |
|         'home': '/opt/steam',
 | |
|     },
 | |
| }
 | |
| 
 | |
| directories = {
 | |
|     '/opt/steam': {
 | |
|         'owner': 'steam',
 | |
|         'group': 'steam',
 | |
|     },
 | |
|     '/opt/steam/.steam': {
 | |
|         'owner': 'steam',
 | |
|         'group': 'steam',
 | |
|     },
 | |
|     '/opt/left4dead2': {
 | |
|         'owner': 'steam',
 | |
|         'group': 'steam',
 | |
|     },
 | |
|     '/opt/left4dead2/left4dead2/ems/admin system': {
 | |
|         'owner': 'steam',
 | |
|         'group': 'steam',
 | |
|     },
 | |
|     '/opt/left4dead2/left4dead2/addons': {
 | |
|         'owner': 'steam',
 | |
|         'group': 'steam',
 | |
|     },
 | |
|     '/tmp/dumps': {
 | |
|         'owner': 'steam',
 | |
|         'group': 'steam',
 | |
|         'mode': '1770',
 | |
|     },
 | |
| }
 | |
| 
 | |
| symlinks = {
 | |
|     '/opt/steam/.steam/sdk32': {
 | |
|         'target': '/opt/steam/linux32',
 | |
|         'owner': 'steam',
 | |
|         'group': 'steam',
 | |
|     },
 | |
| }
 | |
| 
 | |
| files = {
 | |
|     '/opt/steam-workshop-download': {
 | |
|         'content_type': 'download',
 | |
|         'source': 'https://git.sublimity.de/cronekorkn/steam-workshop-downloader/raw/branch/master/steam-workshop-download',
 | |
|         'mode': '755',
 | |
|     },
 | |
|     '/opt/left4dead2/left4dead2/ems/admin system/admins.txt': {
 | |
|         'unless': 'test -f /opt/left4dead2/left4dead2/ems/admin system/admins.txt',
 | |
|         'content': 'STEAM_1:0:12376499',
 | |
|         'owner': 'steam',
 | |
|         'group': 'steam',
 | |
|     },
 | |
| }
 | |
| 
 | |
| actions = {
 | |
|     'dpkg_add_architecture': {
 | |
|         'command': 'dpkg --add-architecture i386',
 | |
|         'unless': 'dpkg --print-foreign-architectures | grep -q i386',
 | |
|         'triggers': [
 | |
|             'action:apt_update',
 | |
|         ],
 | |
|         'needed_by': [
 | |
|             'pkg_apt:libc6_i386',
 | |
|         ],
 | |
|     },
 | |
|     'download_steam': {
 | |
|         'command': steam_run('wget http://media.steampowered.com/installer/steamcmd_linux.tar.gz -P /opt/steam'),
 | |
|         'unless':  steam_run('test -f /opt/steam/steamcmd_linux.tar.gz'),
 | |
|         'needs': {
 | |
|             'pkg_apt:libc6_i386',
 | |
|             'directory:/opt/steam',
 | |
|         }
 | |
|     },
 | |
|     'extract_steamcmd': {
 | |
|         'command': steam_run('tar -xvzf /opt/steam/steamcmd_linux.tar.gz -C /opt/steam'),
 | |
|         'unless': steam_run('test -f /opt/steam/steamcmd.sh'),
 | |
|         'needs': {
 | |
|             'action:download_steam',
 | |
|         }
 | |
|     },
 | |
| }
 | |
| 
 | |
| for addon_id in [2524204971]:
 | |
|     actions[f'download-left4dead2-addon-{addon_id}'] = {
 | |
|         'command': steam_run(f'/opt/steam-workshop-download {addon_id} --out /opt/left4dead2/left4dead2/addons'),
 | |
|         'unless': steam_run(f'test -f /opt/left4dead2/left4dead2/addons/{addon_id}.vpk'),
 | |
|         'needs': {
 | |
|             'directory:/opt/left4dead2/left4dead2/addons',
 | |
|         },
 | |
|         'needed_by': {
 | |
|             'tag:left4dead2-servers',
 | |
|         },
 | |
|     }
 | |
| 
 | |
| svc_systemd = {
 | |
|     'left4dead2-install.service': {
 | |
|         'enabled': True,
 | |
|         'running': False,
 | |
|         'needs': {
 | |
|             'file:/usr/local/lib/systemd/system/left4dead2-install.service',
 | |
|         },
 | |
|     },
 | |
| }
 | |
| 
 | |
| for server_name, server_config in node.metadata.get('left4dead2/servers', {}).items():
 | |
|     svc_systemd[f'left4dead2-{server_name}.service'] = {
 | |
|         'enabled': True,
 | |
|         'running': True,
 | |
|         'tags': {
 | |
|             'left4dead2-servers',
 | |
|         },
 | |
|         'needs': {
 | |
|             'svc_systemd:left4dead2-install.service',
 | |
|             f'file:/usr/local/lib/systemd/system/left4dead2-{server_name}.service',
 | |
|         }
 | |
|     }
 | |
| 
 | |
| 
 | |
| 
 | |
| # # https://github.com/SirPlease/L4D2-Competitive-Rework/blob/master/Dedicated%20Server%20Install%20Guide/README.md
 | |
| 
 | |
| # mkdir /opt/steam /tmp/dumps
 | |
| # useradd -M -d /opt/steam -s /bin/bash steam
 | |
| # chown steam:steam /opt/steam /tmp/dumps
 | |
| # dpkg --add-architecture i386
 | |
| # apt update
 | |
| # apt install libc6:i386 lib32z1
 | |
| # sudo su - steam -s /bin/bash
 | |
| 
 | |
| # #--------
 | |
| 
 | |
| # wget http://media.steampowered.com/installer/steamcmd_linux.tar.gz
 | |
| # tar -xvzf steamcmd_linux.tar.gz
 | |
| 
 | |
| # # fix: /opt/steam/.steam/sdk32/steamclient.so: cannot open shared object file: No such file or directory
 | |
| # mkdir /opt/steam/.steam && ln -s /opt/steam/linux32 /opt/steam/.steam/sdk32
 | |
| 
 | |
| # # erst die windows deps zu installieren scheint ein workaround für x64 zu sein?
 | |
| # ./steamcmd.sh \
 | |
| #     +force_install_dir /opt/steam/left4dead2 \
 | |
| #     +login anonymous \
 | |
| #     +@sSteamCmdForcePlatformType windows \
 | |
| #     +app_update 222860 validate \
 | |
| #     +quit
 | |
| # ./steamcmd.sh \
 | |
| #     +force_install_dir /opt/steam/left4dead2 \
 | |
| #     +login anonymous \
 | |
| #     +@sSteamCmdForcePlatformType linux \
 | |
| #     +app_update 222860 validate \
 | |
| #     +quit
 | |
| 
 | |
| # # download admin system
 | |
| # wget -4 https://git.sublimity.de/cronekorkn/steam-workshop-downloader/raw/branch/master/steam-workshop-download
 | |
| # chmod +x steam-workshop-download
 | |
| # ./steam-workshop-download 2524204971 --out /opt/steam/left4dead2/left4dead2/addons
 | |
| # mkdir -p "/opt/steam/left4dead2/left4dead2/ems/admin system"
 | |
| # echo "STEAM_1:0:12376499" > "/opt/steam/left4dead2/left4dead2/ems/admin system/admins.txt"
 | |
| 
 | |
| # /opt/steam/left4dead2/srcds_run -game left4dead2 -ip 0.0.0.0 -port 27015 +map c1m1_hotel
 | |
| 
 | |
| 
 | |
| # cat <<'EOF' > /opt/steam/left4dead2/left4dead2/cfg/server.cfg
 | |
| # hostname "CKNs Server"
 | |
| # motd_enabled 0
 | |
| 
 | |
| # sv_steamgroup "38347879"
 | |
| # #sv_steamgroup_exclusive 0
 | |
| 
 | |
| # sv_minrate 60000
 | |
| # sv_maxrate 0
 | |
| # net_splitpacket_maxrate 60000
 | |
| 
 | |
| # sv_hibernate_when_empty 0
 | |
| # EOF
 |