--- - name: create minecraft group group: name: "{{ minecraft_group }}" gid: "{{ minecraft_group_gid | default(omit) }}" state: "{{ minecraft_group_state | default('present') }}" system: yes - name: create minecraft user user: name: "{{ minecraft_user }}" uid: "{{ minecraft_user_uid | default(omit) }}" group: "{{ minecraft_group }}" home: "{{ minecraft_var_path }}" create_home: no shell: "{{ minecraft_shell | default('/usr/sbin/nologin') }}" state: "{{ minecraft_user_state | default('present') }}" system: yes - name: install java package: name: "{{ minecraft_java_package_name }}" state: "{{ minecraft_java_package_state }}" - name: create minecraft installation directory file: path: "{{ item }}" state: directory owner: root group: root mode: "0755" with_items: - "{{ minecraft_opt_path }}" - "{{ minecraft_opt_path }}/bin" - "{{ minecraft_opt_path }}/etc" - "{{ minecraft_opt_path }}/backup" - name: create minecraft var directory file: path: "{{ item }}" state: directory owner: "{{ minecraft_user }}" group: "{{ minecraft_group }}" mode: "0755" with_items: - "{{ minecraft_var_path }}" - name: download minecraft server get_url: url: "{{ minecraft_jar_url }}" dest: "{{ minecraft_opt_path }}/bin/server.jar" owner: "{{ minecraft_user }}" group: "{{ minecraft_group }}" mode: "0644" checksum: "{{ minecraft_jar_checksum }}" notify: restart minecraft - name: agree to the eula copy: content: "eula=true" dest: "{{ minecraft_var_path }}/eula.txt" owner: "{{ minecraft_user }}" group: "{{ minecraft_group }}" mode: "0644" - name: configure minecraft template: src: server.properties.j2 dest: "{{ minecraft_var_path }}/server.properties" owner: root group: root mode: 0644 notify: restart minecraft - name: configure systemd unit template: src: minecraft.service.j2 dest: /etc/systemd/system/minecraft.service owner: root group: root mode: 0644 #validate: systemd-analyze verify %s notify: minecraft daemon-reload - name: manage minecraft service service: name: "{{ minecraft_service_name }}" state: "{{ minecraft_service_state }}" enabled: "{{ minecraft_service_enabled }}" - name: configure ops copy: content: "{{ (minecraft_ops | default([])) | to_nice_json }}" dest: "{{ minecraft_var_path }}/ops.json" owner: "{{ minecraft_user }}" group: "{{ minecraft_group }}" mode: "0644" force: no notify: restart minecraft - name: configure whitelist copy: content: "{{ (minecraft_whitelist | default([])) | to_nice_json }}" dest: "{{ minecraft_var_path }}/whitelist.json" owner: "{{ minecraft_user }}" group: "{{ minecraft_group }}" mode: "0644" force: no notify: restart minecraft - name: install backup script copy: src: minecraft-backup.sh dest: "{{ minecraft_opt_path }}/bin/minecraft-backup" owner: root group: root mode: 0700 - name: backup cron job cron: name: minecraft backup minute: "0" hour: "9" user: root job: "{{ minecraft_opt_path }}/bin/minecraft-backup" - name: backup clean up cron cron: name: minecraft backup clean up minute: "0" hour: "11" user: root job: "find {{ minecraft_opt_path }}/backup/ -type f -name '*.tar.xz' -ctime +7 -delete" - name: set world download password htpasswd: path: "{{ minecraft_opt_path }}/etc/htpasswd" name: minecraft password: minecraft owner: root group: root mode: 0644 when: "'nginx' in ansible_play_role_names" - name: configure nginx template: src: nginx.conf.j2 dest: /etc/nginx/sites-available/minecraft owner: root group: root mode: 0644 when: "'nginx' in ansible_play_role_names" notify: reload nginx - name: activate site file: src: /etc/nginx/sites-available/minecraft dest: /etc/nginx/sites-enabled/minecraft owner: root group: root state: link when: "'nginx' in ansible_play_role_names" notify: reload nginx - name: install discord notifier copy: src: minecraft-discord.py dest: "{{ minecraft_opt_path }}/bin/minecraft-discord" owner: root group: root mode: 0755 notify: restart rsyslog - name: configure discord notifier copy: dest: "{{ minecraft_opt_path }}/etc/discord.cfg" owner: syslog group: syslog mode: 0600 content: "{% for k, v in minecraft_discord_config.items() %}{{ k }}={{ v }}{{ \"\n\" }}{% endfor %}" notify: restart rsyslog - name: configure rsyslog program template: src: rsyslog/minecraft.conf.j2 dest: /etc/rsyslog.d/05-minecraft.conf owner: root group: root mode: 0644 notify: restart rsyslog - name: manage rsyslog configuration file: path: "{{ item }}" state: "{{ (minecraft_notifier_state == 'present') | ternary('file', 'absent') }}" loop: - /etc/rsyslog.d/05-minecraft.conf - "{{ minecraft_opt_path }}/etc/discord.cfg" - "{{ minecraft_opt_path }}/bin/minecraft-discord" notify: restart rsyslog