2022-01-28 19:07:49 +02:00

177 lines
4.2 KiB
YAML

---
# Install required dependancies
- hosts: '{{ target | default("all") }}'
become: yes
become_method: sudo
tasks:
- name: Install aptitude
apt: pkg=aptitude state=present update_cache=true
- name: Configure the package manager to include accommodations for i386 architecture
shell: dpkg --add-architecture i386
ignore_errors: True
- name: apt update
apt: update-cache=yes cache_valid_time=3600
retries: 3
delay: 1
ignore_errors: yes
register: apt_updated
- name: apt safe upgrade
apt: upgrade=safe
delay: 1
ignore_errors: yes
register: apt_upgraded
- name: check if reboot is required
stat: path=/var/run/reboot-required
register: rb
- name: Reboot if necessary
reboot:
reboot_timeout: 3600
ignore_errors: true
when: rb.stat.exists
- name: Delete reboot-required file
file:
path: /var/run/reboot-required
state: absent
ignore_errors: true
- name: Install requisite 32-bit libraries
apt:
name: "{{ packages }}"
state: present
update_cache: yes
vars:
packages:
- lib32gcc-s1
- netcat
- rsync
# Mount data drive
- hosts: '{{ target | default("all") }}'
become: yes
become_method: sudo
vars:
mount_src: /dev/vdb
mount_path: /data
tasks:
- name: Create list of mounted devices
set_fact:
mounted_devices: "{{ ansible_mounts|json_query('[].device') }}"
- name: Create a ext4 filesystem on /dev/vdb and check disk blocks
community.general.filesystem:
fstype: ext4
dev: "{{ mount_src }}"
state: present
- name: Mount File System
mount:
path: "{{ mount_path }}"
src: "{{ mount_src }}"
fstype: ext4
state: mounted
when: mount_src not in mounted_devices
# Download steamcmd
- hosts: '{{ target | default("all") }}'
become: yes
become_method: sudo
vars:
ssh_user: debian
url: http://media.steampowered.com/installer/steamcmd_linux.tar.gz
tasks:
- name: Sets Steam folder
file: path=/data/Steam owner={{ssh_user}} group={{ssh_user}} state=directory mode=0775
ignore_errors: True
- stat: path=/data/Steam/steamcmd.sh
register: steamcmd_dir
- name: Download SteamCMD
get_url:
url: "{{url}}"
dest: /data/Steam/steamcmd_linux.tar.gz
mode: '0664'
#when: not steamcmd_dir.stat.exists
- name: Unarchive SteamCMD
unarchive:
src: /data/Steam/steamcmd_linux.tar.gz
dest: /data/Steam
remote_src: yes
creates: /data/Steam/steamcmd.sh
#when: not steamcmd_dir.stat.exists
- name: Delete file steamcmd_linux.tar.gz
file:
path: /data/Steam/steamcmd_linux.tar.gz
state: absent
# SteamCMD game server setup
- hosts: '{{ target | default("all") }}'
vars:
ssh_user: debian
become: yes
become_method: sudo
become_user: "{{ssh_user}}"
tasks:
- name: Sets Steam folder
file: path=/data/Steam owner={{ssh_user}} group={{ssh_user}} state=directory mode=0775
ignore_errors: True
- name: Create game script
template: src=static_files/7days.j2 dest=/data/Steam/7days.txt owner={{ssh_user}} group={{ssh_user}} mode=0644
- name: Run the SteamCMD setup
shell: './steamcmd.sh +runscript /data/Steam/7days.txt'
args:
chdir: /data/Steam/
ignore_errors: True
- name: Upload serverconfig.xml
copy:
src: static_files/serverconfig_3rd.xml
dest: /data/Steam/sdtt-server/serverconfig.xml
owner: "{{ssh_user}}"
group: "{{ssh_user}}"
mode: 0644
tags:
- configuration
- name: Upload mod configs
ansible.posix.synchronize:
src: static_files/Mods
dest: /data/Steam/sdtt-server
tags:
- configuration
# Create game server systemd service
- hosts: '{{ target | default("all") }}'
vars:
ssh_user: debian
become: yes
become_method: sudo
tasks:
- name: Upload 7days.service
template: src=static_files/7days.service.j2 dest=/etc/systemd/system/7days.service owner=root group=root mode=0644
ignore_errors: True
- name: force systemd to reread configs
systemd: daemon_reload=yes
- name: enable 7days.service
systemd:
name: 7days
state: started
enabled: True