Skip to content

Commit f12d605

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

File tree

10 files changed

+76
-31
lines changed

10 files changed

+76
-31
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ before_install:
2020
- sudo -E ./scripts/install-docker.sh
2121
install: true
2222
script:
23-
- make "${OS}" test
23+
- travis_wait 60 make "${OS}" test
2424
notifications:
2525
email: false
2626
webhooks: https://galaxy.ansible.com/api/v1/notifications/

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: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
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: "{{(minecraft_versions.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: "{{ (minecraft_versions.stdout | from_json).versions | selectattr('id','match', (minecraft_version|string) ) | map(attribute='url') | list | first }}"
19+
20+
- debug: var=minecraft_version_manifest_url
21+
22+
- name: retrieve version manifest
23+
local_action: command curl {{ minecraft_version_manifest_url }}
24+
register: minecraft_version_info
25+
26+
27+
- name: "extract the download url from version manifest"
28+
set_fact:
29+
minecraft_server_download_url: "{{(minecraft_version_info.stdout | from_json).downloads.server.url}}"
30+
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','match', (minecraft_version|string) ) | 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'

tests/minecraft.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
- hosts: all
33
roles:
44
- role: devops-coop.minecraft
5-
minecraft_version: 1.9
5+
minecraft_version: "1.9"
66
minecraft_server_properties:
77
server-port: 25565
88
rcon.port: 25564

0 commit comments

Comments
 (0)