new version
Some checks failed
Some checks failed
This commit is contained in:
@@ -1,23 +1,14 @@
|
||||
---
|
||||
- name: Create minecraft group
|
||||
- name: Création du groupe minecraft
|
||||
ansible.builtin.group:
|
||||
name: "{{ minecraft_group }}"
|
||||
state: present
|
||||
system: yes
|
||||
|
||||
- name: Create minecraft user
|
||||
- name: Création de l'utilisateur minecraft
|
||||
ansible.builtin.user:
|
||||
name: "{{ minecraft_user }}"
|
||||
group: "{{ minecraft_group }}"
|
||||
groups: []
|
||||
append: no
|
||||
home: "{{ minecraft_base_dir }}"
|
||||
home: "{{ minecraft_home }}"
|
||||
shell: /bin/bash
|
||||
system: yes
|
||||
create_home: yes
|
||||
state: present
|
||||
comment: "Minecraft Server User"
|
||||
|
||||
- name: Set minecraft user password to never expire
|
||||
ansible.builtin.command: chage -M -1 {{ minecraft_user }}
|
||||
changed_when: false
|
||||
state: present
|
@@ -1,25 +1,15 @@
|
||||
---
|
||||
- name: Create minecraft directories
|
||||
- name: Création des répertoires Minecraft
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
owner: "{{ minecraft_user }}"
|
||||
group: "{{ minecraft_group }}"
|
||||
mode: '0755'
|
||||
loop: "{{ minecraft_dirs }}"
|
||||
|
||||
- name: Create .ssh directory for minecraft user
|
||||
ansible.builtin.file:
|
||||
path: "{{ minecraft_base_dir }}/.ssh"
|
||||
state: directory
|
||||
owner: "{{ minecraft_user }}"
|
||||
group: "{{ minecraft_group }}"
|
||||
mode: '0700'
|
||||
|
||||
- name: Set correct permissions on base directory
|
||||
ansible.builtin.file:
|
||||
path: "{{ minecraft_base_dir }}"
|
||||
owner: "{{ minecraft_user }}"
|
||||
group: "{{ minecraft_group }}"
|
||||
mode: '0755'
|
||||
recurse: yes
|
||||
with_items:
|
||||
- "{{ minecraft_sources_dir }}"
|
||||
- "{{ minecraft_server_dir }}"
|
||||
- "{{ minecraft_tools_dir }}"
|
||||
- "{{ minecraft_backups_dir }}"
|
||||
- "{{ minecraft_logs_dir }}"
|
||||
- "{{ minecraft_server_dir }}/plugins"
|
@@ -1,30 +1,8 @@
|
||||
---
|
||||
- name: Install required packages for building
|
||||
ansible.builtin.apt:
|
||||
name: "{{ build_packages }}"
|
||||
state: present
|
||||
update_cache: yes
|
||||
when: ansible_os_family == "Debian"
|
||||
|
||||
- name: Check if BuildTools already exists
|
||||
ansible.builtin.stat:
|
||||
path: "{{ minecraft_sources_dir }}/{{ buildtools_jar }}"
|
||||
register: buildtools_exists
|
||||
|
||||
- name: Download BuildTools
|
||||
- name: Téléchargement de BuildTools
|
||||
ansible.builtin.get_url:
|
||||
url: "{{ minecraft_build_tools_url }}"
|
||||
dest: "{{ minecraft_sources_dir }}/{{ buildtools_jar }}"
|
||||
url: "{{ spigot_build_tools_url }}"
|
||||
dest: "{{ minecraft_sources_dir }}/{{ build_tools_jar }}"
|
||||
owner: "{{ minecraft_user }}"
|
||||
group: "{{ minecraft_group }}"
|
||||
mode: '0644'
|
||||
force: yes
|
||||
when: not buildtools_exists.stat.exists or force_download | default(false)
|
||||
|
||||
- name: Create work directory for compilation
|
||||
ansible.builtin.file:
|
||||
path: "{{ minecraft_sources_dir }}/work"
|
||||
state: directory
|
||||
owner: "{{ minecraft_user }}"
|
||||
group: "{{ minecraft_group }}"
|
||||
mode: '0755'
|
||||
mode: '0644'
|
@@ -1,52 +0,0 @@
|
||||
---
|
||||
- name: Check if Spigot is already compiled
|
||||
ansible.builtin.stat:
|
||||
path: "{{ minecraft_sources_dir }}/{{ spigot_jar_name }}"
|
||||
register: spigot_compiled
|
||||
|
||||
- name: Remove old work directory if exists
|
||||
ansible.builtin.file:
|
||||
path: "{{ minecraft_sources_dir }}/work"
|
||||
state: absent
|
||||
when: not spigot_compiled.stat.exists
|
||||
|
||||
- name: Compile Spigot with BuildTools
|
||||
ansible.builtin.shell: |
|
||||
cd {{ minecraft_sources_dir }}
|
||||
java -Xmx1024M -jar {{ buildtools_jar }} --rev {{ minecraft_version }} --compile-if-changed
|
||||
args:
|
||||
creates: "{{ minecraft_sources_dir }}/{{ spigot_jar_name }}"
|
||||
become_user: "{{ minecraft_user }}"
|
||||
when: not spigot_compiled.stat.exists
|
||||
register: compile_result
|
||||
async: 1800
|
||||
poll: 30
|
||||
|
||||
- name: Wait for compilation to complete
|
||||
ansible.builtin.async_status:
|
||||
jid: "{{ compile_result.ansible_job_id }}"
|
||||
register: job_result
|
||||
until: job_result.finished
|
||||
retries: 60
|
||||
delay: 30
|
||||
when: compile_result.ansible_job_id is defined
|
||||
|
||||
- name: Verify Spigot jar was created
|
||||
ansible.builtin.stat:
|
||||
path: "{{ minecraft_sources_dir }}/{{ spigot_jar_name }}"
|
||||
register: spigot_jar_check
|
||||
failed_when: not spigot_jar_check.stat.exists
|
||||
|
||||
- name: Copy compiled Spigot to server directory
|
||||
ansible.builtin.copy:
|
||||
src: "{{ minecraft_sources_dir }}/{{ spigot_jar_name }}"
|
||||
dest: "{{ minecraft_server_dir }}/{{ spigot_jar_name }}"
|
||||
owner: "{{ minecraft_user }}"
|
||||
group: "{{ minecraft_group }}"
|
||||
mode: '0644'
|
||||
remote_src: yes
|
||||
|
||||
- name: Clean up work directory
|
||||
ansible.builtin.file:
|
||||
path: "{{ minecraft_sources_dir }}/work"
|
||||
state: absent
|
20
roles/03-installation-minecraft/tasks/04-install-mcrcon.yml
Normal file
20
roles/03-installation-minecraft/tasks/04-install-mcrcon.yml
Normal file
@@ -0,0 +1,20 @@
|
||||
---
|
||||
- name: Installation des dépendances pour mcrcon
|
||||
ansible.builtin.apt:
|
||||
name:
|
||||
- build-essential
|
||||
- git
|
||||
state: present
|
||||
|
||||
- name: Clone du repository mcrcon
|
||||
ansible.builtin.git:
|
||||
repo: https://github.com/Tiiffi/mcrcon.git
|
||||
dest: "{{ minecraft_tools_dir }}/mcrcon"
|
||||
version: master
|
||||
become_user: "{{ minecraft_user }}"
|
||||
|
||||
- name: Compilation de mcrcon
|
||||
ansible.builtin.command:
|
||||
cmd: make
|
||||
chdir: "{{ minecraft_tools_dir }}/mcrcon"
|
||||
become_user: "{{ minecraft_user }}"
|
17
roles/03-installation-minecraft/tasks/05-compile-spigot.yml
Normal file
17
roles/03-installation-minecraft/tasks/05-compile-spigot.yml
Normal file
@@ -0,0 +1,17 @@
|
||||
---
|
||||
- name: Compilation de Spigot
|
||||
ansible.builtin.command:
|
||||
cmd: "java -jar {{ build_tools_jar }} --rev {{ minecraft_version }}"
|
||||
chdir: "{{ minecraft_sources_dir }}"
|
||||
creates: "{{ minecraft_sources_dir }}/spigot-{{ minecraft_version }}.jar"
|
||||
become_user: "{{ minecraft_user }}"
|
||||
timeout: 1800
|
||||
|
||||
- name: Copie du JAR Spigot compilé
|
||||
ansible.builtin.copy:
|
||||
src: "{{ minecraft_sources_dir }}/spigot-{{ minecraft_version }}.jar"
|
||||
dest: "{{ minecraft_server_dir }}/spigot.jar"
|
||||
owner: "{{ minecraft_user }}"
|
||||
group: "{{ minecraft_group }}"
|
||||
mode: '0644'
|
||||
remote_src: yes
|
@@ -1,57 +0,0 @@
|
||||
---
|
||||
- name: Create server.properties
|
||||
ansible.builtin.template:
|
||||
src: server.properties.j2
|
||||
dest: "{{ minecraft_server_dir }}/server.properties"
|
||||
owner: "{{ minecraft_user }}"
|
||||
group: "{{ minecraft_group }}"
|
||||
mode: '0644'
|
||||
backup: yes
|
||||
|
||||
- name: Accept EULA
|
||||
ansible.builtin.template:
|
||||
src: eula.txt.j2
|
||||
dest: "{{ minecraft_server_dir }}/eula.txt"
|
||||
owner: "{{ minecraft_user }}"
|
||||
group: "{{ minecraft_group }}"
|
||||
mode: '0644'
|
||||
|
||||
- name: Create spigot.yml configuration
|
||||
ansible.builtin.template:
|
||||
src: spigot.yml.j2
|
||||
dest: "{{ minecraft_server_dir }}/spigot.yml"
|
||||
owner: "{{ minecraft_user }}"
|
||||
group: "{{ minecraft_group }}"
|
||||
mode: '0644'
|
||||
|
||||
- name: Create bukkit.yml configuration
|
||||
ansible.builtin.template:
|
||||
src: bukkit.yml.j2
|
||||
dest: "{{ minecraft_server_dir }}/bukkit.yml"
|
||||
owner: "{{ minecraft_user }}"
|
||||
group: "{{ minecraft_group }}"
|
||||
mode: '0644'
|
||||
|
||||
- name: Create start script
|
||||
ansible.builtin.template:
|
||||
src: start.sh.j2
|
||||
dest: "{{ minecraft_base_dir }}/scripts/start.sh"
|
||||
owner: "{{ minecraft_user }}"
|
||||
group: "{{ minecraft_group }}"
|
||||
mode: '0755'
|
||||
|
||||
- name: Create stop script
|
||||
ansible.builtin.template:
|
||||
src: stop.sh.j2
|
||||
dest: "{{ minecraft_base_dir }}/scripts/stop.sh"
|
||||
owner: "{{ minecraft_user }}"
|
||||
group: "{{ minecraft_group }}"
|
||||
mode: '0755'
|
||||
|
||||
- name: Store current version
|
||||
ansible.builtin.copy:
|
||||
content: "{{ minecraft_version }}"
|
||||
dest: "{{ minecraft_server_dir }}/.version"
|
||||
owner: "{{ minecraft_user }}"
|
||||
group: "{{ minecraft_group }}"
|
||||
mode: '0644'
|
@@ -0,0 +1,18 @@
|
||||
---
|
||||
- name: Génération de la configuration server.properties
|
||||
ansible.builtin.template:
|
||||
src: server.properties.j2
|
||||
dest: "{{ minecraft_server_dir }}/server.properties"
|
||||
owner: "{{ minecraft_user }}"
|
||||
group: "{{ minecraft_group }}"
|
||||
mode: '0644'
|
||||
notify: restart minecraft
|
||||
|
||||
- name: Acceptation de l'EULA
|
||||
ansible.builtin.lineinfile:
|
||||
path: "{{ minecraft_server_dir }}/eula.txt"
|
||||
line: "eula=true"
|
||||
create: yes
|
||||
owner: "{{ minecraft_user }}"
|
||||
group: "{{ minecraft_group }}"
|
||||
mode: '0644'
|
@@ -1,46 +0,0 @@
|
||||
---
|
||||
- name: Check if mcrcon is already installed
|
||||
ansible.builtin.stat:
|
||||
path: "{{ minecraft_tools_dir }}/mcrcon"
|
||||
register: mcrcon_installed
|
||||
|
||||
- name: Download mcrcon
|
||||
ansible.builtin.get_url:
|
||||
url: "{{ mcrcon_url }}"
|
||||
dest: "{{ minecraft_tools_dir }}/mcrcon.tar.gz"
|
||||
owner: "{{ minecraft_user }}"
|
||||
group: "{{ minecraft_group }}"
|
||||
mode: '0644'
|
||||
when: not mcrcon_installed.stat.exists
|
||||
|
||||
- name: Extract mcrcon
|
||||
ansible.builtin.unarchive:
|
||||
src: "{{ minecraft_tools_dir }}/mcrcon.tar.gz"
|
||||
dest: "{{ minecraft_tools_dir }}"
|
||||
owner: "{{ minecraft_user }}"
|
||||
group: "{{ minecraft_group }}"
|
||||
remote_src: yes
|
||||
creates: "{{ minecraft_tools_dir }}/mcrcon"
|
||||
when: not mcrcon_installed.stat.exists
|
||||
|
||||
- name: Make mcrcon executable
|
||||
ansible.builtin.file:
|
||||
path: "{{ minecraft_tools_dir }}/mcrcon"
|
||||
mode: '0755'
|
||||
owner: "{{ minecraft_user }}"
|
||||
group: "{{ minecraft_group }}"
|
||||
|
||||
- name: Create mcrcon wrapper script
|
||||
ansible.builtin.copy:
|
||||
content: |
|
||||
#!/bin/bash
|
||||
{{ minecraft_tools_dir }}/mcrcon -H localhost -P {{ rcon_port }} -p "{{ rcon_password }}" "$@"
|
||||
dest: "{{ minecraft_base_dir }}/scripts/rcon.sh"
|
||||
owner: "{{ minecraft_user }}"
|
||||
group: "{{ minecraft_group }}"
|
||||
mode: '0755'
|
||||
|
||||
- name: Clean up mcrcon archive
|
||||
ansible.builtin.file:
|
||||
path: "{{ minecraft_tools_dir }}/mcrcon.tar.gz"
|
||||
state: absent
|
@@ -1,36 +1,11 @@
|
||||
---
|
||||
- name: Create minecraft systemd service
|
||||
- name: Création du service systemd Minecraft
|
||||
ansible.builtin.template:
|
||||
src: minecraft.service.j2
|
||||
dest: "/etc/systemd/system/{{ minecraft_service_name }}"
|
||||
dest: /etc/systemd/system/minecraft.service
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
notify:
|
||||
- reload systemd daemon
|
||||
- restart minecraft server
|
||||
|
||||
- name: Reload systemd daemon
|
||||
ansible.builtin.systemd:
|
||||
daemon_reload: yes
|
||||
|
||||
- name: Enable minecraft service
|
||||
ansible.builtin.systemd:
|
||||
name: "{{ minecraft_service_name }}"
|
||||
enabled: "{{ minecraft_service_enabled }}"
|
||||
masked: no
|
||||
|
||||
- name: Start minecraft service
|
||||
ansible.builtin.systemd:
|
||||
name: "{{ minecraft_service_name }}"
|
||||
state: "{{ minecraft_service_state }}"
|
||||
when: minecraft_service_state == "started"
|
||||
|
||||
- name: Wait for server to be ready
|
||||
ansible.builtin.wait_for:
|
||||
port: "{{ server_port }}"
|
||||
delay: 10
|
||||
timeout: 120
|
||||
state: started
|
||||
host: 127.0.0.1
|
||||
when: minecraft_service_state == "started"
|
||||
notify:
|
||||
- reload systemd
|
||||
- enable minecraft service
|
@@ -1,36 +1,8 @@
|
||||
---
|
||||
- name: Configure logrotate for minecraft logs
|
||||
- name: Configuration de la rotation des logs
|
||||
ansible.builtin.template:
|
||||
src: minecraft-logrotate.j2
|
||||
dest: /etc/logrotate.d/minecraft
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
|
||||
- name: Create rsyslog configuration for minecraft
|
||||
ansible.builtin.copy:
|
||||
content: |
|
||||
# Minecraft Server Logging
|
||||
:programname, isequal, "minecraft" /var/log/minecraft.log
|
||||
& stop
|
||||
dest: /etc/rsyslog.d/30-minecraft.conf
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
notify: restart rsyslog service
|
||||
|
||||
- name: Create minecraft log file
|
||||
ansible.builtin.file:
|
||||
path: /var/log/minecraft.log
|
||||
state: touch
|
||||
owner: "{{ minecraft_user }}"
|
||||
group: "{{ minecraft_group }}"
|
||||
mode: '0644'
|
||||
modification_time: preserve
|
||||
access_time: preserve
|
||||
|
||||
- name: Test logrotate configuration
|
||||
ansible.builtin.command: logrotate -d /etc/logrotate.d/minecraft
|
||||
register: logrotate_test
|
||||
changed_when: false
|
||||
failed_when: logrotate_test.rc != 0
|
||||
mode: '0644'
|
@@ -1,32 +1,9 @@
|
||||
---
|
||||
- name: Check if ops.json exists
|
||||
ansible.builtin.stat:
|
||||
path: "{{ minecraft_server_dir }}/ops.json"
|
||||
register: ops_file
|
||||
|
||||
- name: Create ops.json file
|
||||
- name: Génération du fichier ops.json
|
||||
ansible.builtin.template:
|
||||
src: ops.json.j2
|
||||
dest: "{{ minecraft_server_dir }}/ops.json"
|
||||
owner: "{{ minecraft_user }}"
|
||||
group: "{{ minecraft_group }}"
|
||||
mode: '0644'
|
||||
backup: yes
|
||||
when: minecraft_ops is defined and minecraft_ops | length > 0
|
||||
|
||||
- name: Create empty ops.json if no ops defined
|
||||
ansible.builtin.copy:
|
||||
content: "[]"
|
||||
dest: "{{ minecraft_server_dir }}/ops.json"
|
||||
owner: "{{ minecraft_user }}"
|
||||
group: "{{ minecraft_group }}"
|
||||
mode: '0644'
|
||||
force: no
|
||||
when: not ops_file.stat.exists and (minecraft_ops is not defined or minecraft_ops | length == 0)
|
||||
|
||||
- name: Set permissions on ops.json
|
||||
ansible.builtin.file:
|
||||
path: "{{ minecraft_server_dir }}/ops.json"
|
||||
owner: "{{ minecraft_user }}"
|
||||
group: "{{ minecraft_group }}"
|
||||
mode: '0644'
|
||||
notify: restart minecraft
|
@@ -1,39 +1,10 @@
|
||||
---
|
||||
- name: Create plugins directory
|
||||
ansible.builtin.file:
|
||||
path: "{{ minecraft_server_dir }}/plugins"
|
||||
state: directory
|
||||
owner: "{{ minecraft_user }}"
|
||||
group: "{{ minecraft_group }}"
|
||||
mode: '0755'
|
||||
|
||||
- name: Download plugins
|
||||
- name: Installation des plugins par défaut
|
||||
ansible.builtin.get_url:
|
||||
url: "{{ item.url }}"
|
||||
dest: "{{ minecraft_server_dir }}/plugins/{{ item.name }}.jar"
|
||||
owner: "{{ minecraft_user }}"
|
||||
group: "{{ minecraft_group }}"
|
||||
mode: '0644'
|
||||
timeout: 30
|
||||
loop: "{{ minecraft_plugins_list }}"
|
||||
when: minecraft_plugins_list is defined and minecraft_plugins_list | length > 0
|
||||
ignore_errors: yes
|
||||
|
||||
- name: Create plugins config directory
|
||||
ansible.builtin.file:
|
||||
path: "{{ minecraft_server_dir }}/plugins/{{ item.name }}"
|
||||
state: directory
|
||||
owner: "{{ minecraft_user }}"
|
||||
group: "{{ minecraft_group }}"
|
||||
mode: '0755'
|
||||
loop: "{{ minecraft_plugins_list }}"
|
||||
when: minecraft_plugins_list is defined and item.create_config_dir | default(false)
|
||||
|
||||
- name: Restart server to load new plugins
|
||||
ansible.builtin.systemd:
|
||||
name: "{{ minecraft_service_name }}"
|
||||
state: restarted
|
||||
when:
|
||||
- minecraft_plugins_list is defined
|
||||
- minecraft_plugins_list | length > 0
|
||||
- restart_after_plugins | default(false)
|
||||
with_items: "{{ minecraft_plugins | default([]) }}"
|
||||
when: minecraft_plugins is defined
|
@@ -1,40 +1,31 @@
|
||||
---
|
||||
- name: Include create user and group tasks
|
||||
ansible.builtin.include_tasks: 01-create-user-group.yml
|
||||
tags: ['minecraft-user']
|
||||
# Tâches principales installation Minecraft
|
||||
- import_tasks: 01-create-user-group.yml
|
||||
tags: [minecraft, user]
|
||||
|
||||
- name: Include create directories tasks
|
||||
ansible.builtin.include_tasks: 02-create-directories.yml
|
||||
tags: ['minecraft-dirs']
|
||||
- import_tasks: 02-create-directories.yml
|
||||
tags: [minecraft, directories]
|
||||
|
||||
- name: Include download Spigot tasks
|
||||
ansible.builtin.include_tasks: 03-download-spigot.yml
|
||||
tags: ['minecraft-download']
|
||||
- import_tasks: 03-download-spigot.yml
|
||||
tags: [minecraft, download]
|
||||
|
||||
- name: Include compile Spigot tasks
|
||||
ansible.builtin.include_tasks: 04-compile-spigot.yml
|
||||
tags: ['minecraft-compile']
|
||||
- import_tasks: 04-install-mcrcon.yml
|
||||
tags: [minecraft, mcrcon]
|
||||
|
||||
- name: Include configure server tasks
|
||||
ansible.builtin.include_tasks: 05-configure-server.yml
|
||||
tags: ['minecraft-config']
|
||||
- import_tasks: 05-compile-spigot.yml
|
||||
tags: [minecraft, compile]
|
||||
|
||||
- name: Include install mcrcon tasks
|
||||
ansible.builtin.include_tasks: 06-install-mcrcon.yml
|
||||
tags: ['minecraft-mcrcon']
|
||||
- import_tasks: 06-configure-minecraft.yml
|
||||
tags: [minecraft, configure]
|
||||
|
||||
- name: Include create service tasks
|
||||
ansible.builtin.include_tasks: 07-create-service.yml
|
||||
tags: ['minecraft-service']
|
||||
- import_tasks: 07-create-service.yml
|
||||
tags: [minecraft, service]
|
||||
|
||||
- name: Include configure logrotate tasks
|
||||
ansible.builtin.include_tasks: 08-configure-logrotate.yml
|
||||
tags: ['minecraft-logs']
|
||||
- import_tasks: 08-configure-logrotate.yml
|
||||
tags: [minecraft, logrotate]
|
||||
|
||||
- name: Include manage ops tasks
|
||||
ansible.builtin.include_tasks: 09-manage-ops.yml
|
||||
tags: ['minecraft-ops']
|
||||
- import_tasks: 09-manage-ops.yml
|
||||
tags: [minecraft, ops]
|
||||
|
||||
- name: Include install plugins tasks
|
||||
ansible.builtin.include_tasks: 10-install-plugins.yml
|
||||
tags: ['minecraft-plugins']
|
||||
- import_tasks: 10-install-plugins.yml
|
||||
tags: [minecraft, plugins]
|
Reference in New Issue
Block a user