Skip to content

Commit f7e6a90

Browse files
author
nolte
committed
Load the minecraft server.jar by dynamic url from mainfests files
1 parent 23fb03d commit f7e6a90

File tree

8 files changed

+72
-29
lines changed

8 files changed

+72
-29
lines changed

defaults/main.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
minecraft_server: minecraft
33
minecraft_version: latest
4-
minecraft_url: https://s3.amazonaws.com/Minecraft.Download/versions
4+
minecraft_url: https://launcher.mojang.com/v1/objects
55
minecraft_user: "{{ minecraft_server }}"
66
minecraft_group: "{{ minecraft_server }}"
77
minecraft_home: /srv/{{ minecraft_server }}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
---
2+
- name: retrieve versions manifest
3+
local_action: command curl {{ minecraft_version_manifest_url }}
4+
register: minecraft_versions
5+
6+
- name: find latest release version
7+
set_fact:
8+
minecraft_version: "{{(version_manifest.stdout | from_json).latest.release}}"
9+
when: minecraft_version == "latest"
10+
11+
- name: use the configured minecraft version number
12+
set_fact:
13+
minecraft_version: "{{minecraft_version}}"
14+
when: minecraft_version != "latest"
15+
16+
- name: extract version specific mainfest file
17+
set_fact:
18+
minecraft_version_manifest_url: "{{ (version_manifest.stdout | from_json).versions | selectattr('id','equalto', minecraft_version ) | map(attribute='url') | list | first }}"
19+
20+
- name: retrieve version manifest
21+
local_action: command curl {{ minecraft_version_manifest_url }}
22+
register: minecraft_version_info
23+
24+
25+
- name: "extract the download url from version manifest"
26+
set_fact:
27+
minecraft_server_download_url: "{{(minecraft_version_info.stdout | from_json).downloads.server.url}}"
28+
minecraft_server_download_checksum: "sha1:{{(minecraft_version_info.stdout | from_json).downloads.server.sha1}}"
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
---
2+
- name: load version informations
3+
uri:
4+
url: "{{minecraft_version_manifest_url}}"
5+
return_content: yes
6+
register: minecraft_versions
7+
8+
- name: find latest release version
9+
set_fact:
10+
minecraft_version: "{{minecraft_versions.json.latest.release}}"
11+
when: minecraft_version == "latest"
12+
13+
- name: use the configured minecraft version number
14+
set_fact:
15+
minecraft_version: "{{minecraft_version}}"
16+
when: minecraft_version != "latest"
17+
18+
- name: extract version specific mainfest file
19+
set_fact:
20+
minecraft_version_manifest_url: "{{ minecraft_versions.json.versions | selectattr('id','equalto', minecraft_version ) | map(attribute='url') | list | first }}"
21+
22+
- name: Download the version specific mainfest file
23+
uri:
24+
url: "{{minecraft_version_manifest_url}}"
25+
return_content: yes
26+
register: minecraft_version_info
27+
28+
- name: "extract the download url from version manifest"
29+
set_fact:
30+
minecraft_server_download_url: "{{minecraft_version_info.json.downloads.server.url}}"
31+
minecraft_server_download_checksum: "sha1:{{minecraft_version_info.json.downloads.server.sha1}}"
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
- name: fetch latest version using uri module
3+
include: fetch_version_download-uri.yml
4+
when: ansible_version.full is version_compare('2.0.2', '>=')
5+
6+
- name: fetch latest version using curl
7+
include: fetch_version_download-curl.yml
8+
when: minecraft_server_download_url is not defined

tasks/download/latest-curl.yml

Lines changed: 0 additions & 7 deletions
This file was deleted.

tasks/download/latest-uri.yml

Lines changed: 0 additions & 10 deletions
This file was deleted.

tasks/download/latest.yml

Lines changed: 0 additions & 8 deletions
This file was deleted.

tasks/download/minecraft.yml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
- include: latest.yml
2-
when: minecraft_version == 'latest'
1+
- include: fetch_version_download.yml
2+
when: minecraft_server_download_url is undefined
33

44
- name: download Minecraft server
55
get_url:
6-
url: "{{ minecraft_url }}/{{ minecraft_version_latest | default(minecraft_version) }}/minecraft_server.{{ minecraft_version_latest | default(minecraft_version) }}.jar"
6+
url: "{{ minecraft_server_download_url }}"
77
dest: "{{ minecraft_home }}/minecraft_server.{{ minecraft_version_latest | default(minecraft_version) }}.jar"
88
owner: "{{ minecraft_user }}"
99
group: "{{ minecraft_group }}"
10+
checksum: "{{minecraft_server_download_checksum}}"
1011
mode: '0755'

0 commit comments

Comments
 (0)