--- # 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