devops-coop / ansible-minecraft

Ansible role for provisioning a vanilla Minecraft server
https://galaxy.ansible.com/devops-coop/minecraft/
Apache License 2.0
56 stars 39 forks source link
ansible ansible-role minecraft

ansible-minecraft

|Install from Ansible Galaxy| |Travis CI build status| |Chat on gitter.im|

This role installs Minecraft <https://minecraft.net/> or Spigot <https://www.spigotmc.org/> and configures it to run under systemd <https://wiki.freedesktop.org/www/Software/systemd/> or Supervisor <http://supervisord.org/>.

If you're viewing this at https://github.com/devops-coop/ansible-minecraft/, you're reading the documentation for the master branch. View documentation for the latest release (3.1.0). <https://github.com/devops-coop/ansible-minecraft/tree/v3.1.0#ansible-minecraft>__

Requirements

Install

::

ansible-galaxy install devops-coop.minecraft

Features

Versioning

This project follows semantic versioning <http://semver.org/>__.

In the context of semantic versioning, consider the role contract to be defined by the role variables.

Refer to the change log <CHANGELOG.rst>__ for upcoming changes.

Role variables

The following variable defaults are defined in defaults/main.yml.

minecraft_version Minecraft version to install (default: latest)

Examples:

.. code:: yaml

   minecraft_version: latest
   minecraft_version: 1.10
   minecraft_version: 1.9.1
   minecraft_version: 16w21a

minecraft_url Minecraft download URL (default: https://s3.amazonaws.com/Minecraft.Download/versions)

minecraft_user system user Minecraft runs as (default: minecraft)

minecraft_group system group Minecraft runs as (default: minecraft)

minecraft_home directory to install Minecraft to (default: /srv/minecraft)

minecraft_max_memory Java max memory (-Xmx) to allocate (default: 1024M)

minecraft_initial_memory Java initial memory (-Xms) to allocate (default: 1024M)

minecraft_service_name systemd service name or Supervisor program name (default: minecraft)

minecraft_supervisor_name DEPRECATED: Supervisor program name (default: {{ minecraft_service_name }})

minecraft_process_control Choose between systemd and supervisor (default: systemd).

minecraft_whitelist list of Minecraft usernames to whitelist (default: [])

minecraft_ops list of Minecraft usernames to make server ops (default: [])

minecraft_banned_players list of Minecraft usernames to ban (default: [])

minecraft_banned_ips list of IP addresses to ban (default: [])

minecraft_server_properties dictionary of server.properties entries (e.g. server-port: 25565) to set (default: {})

minecraft_server choose between minecraft or spigot (default: minecraft)

Hooks and run stages

ansible-minecraft organizes execution into a number of run stages:

setup

download

install

acl

configure

start

You can execute custom tasks before or after specific stages. Simply specify a task include file <https://docs.ansible.com/ansible/playbooks_roles.html#task-include-files-and-encouraging-reuse>__ using the relevant role variable:

.. code:: yaml

- hosts: minecraft
  roles:
    - role: devops-coop.minecraft
      minecraft_hook_before_start: "{{ playbook_dir }}/download-world-from-s3.yml"

The available hooks are:

minecraft_hook_before_setup run before setup tasks

minecraft_hook_after_setup run after setup tasks

minecraft_hook_before_download run before download tasks

minecraft_hook_after_download run after download tasks

minecraft_hook_before_install run before install tasks

minecraft_hook_after_install run after install tasks

minecraft_hook_before_start run before start tasks

minecraft_hook_after_start run after start tasks

Example

.. code:: yaml

- hosts: minecraft
  roles:
     - { role: devops-coop.minecraft, minecraft_whitelist: ["jeb_", "dinnerbone"]}

Contributing

The best way to contribute is to use this role to deploy your own Minecraft server! We really appreciate bug reports from the wild.

If you'd like to help with the project itself, here are some other ways you can contribute:

Testing


Testing can be done using the provided Vagrantfile or by installing `Docker <https://docs.docker.com/engine/installation/>`__ and `Docker Compose <https://docs.docker.com/compose/>`__ locally.

Testing with Vagrant
"""""""""""""""""""""
This role includes a Vagrantfile used with a Docker-based test harness that approximates the Travis CI setup for integration testing. Using Vagrant allows all contributors to test on the same platform and avoid false test failures due to untested or incompatible docker versions.

1. Install `Vagrant <https://www.vagrantup.com/>`__ and `VirtualBox <https://www.virtualbox.org/>`__.

2. Run ``vagrant up`` from the same directory as the Vagrantfile in this repository.

3. SSH into the VM with: ``vagrant ssh``

4. Run tests with ``make``.

   ::

       make -C /vagrant xenial64 test

Integration tests use **systemd** by default. Set ``PROCESS_CONTROL`` to change this:

::

    make -C /vagrant trusty64 test PROCESS_CONTROL=supervisor

See ``make help`` for more information including a full list of available targets.

Testing with Docker and Docker Compose locally
""""""""""""""""""""""""""""""""""""""""""""""""
Alternatively, you can install `Docker <https://docs.docker.com/engine/installation/>`__ and `Docker Compose <https://docs.docker.com/compose/>`__ to run these tests locally on your machine.

1. Install `Docker <https://docs.docker.com/engine/installation/>`__ and `Docker Compose <https://docs.docker.com/compose/>`__.

2. Run tests with ``make``.

   ::

       make jessie64 test

Integration tests use **systemd** by default. Set ``PROCESS_CONTROL`` to change this:

::

    make trusty64 test PROCESS_CONTROL=supervisor

See ``make help`` for more information including a full list of available targets.

License
-------

Apache 2.0

Disclaimer
----------

To automate the installation, this role automatically accepts the `Minecraft EULA <https://account.mojang.com/documents/minecraft_eula>`__. Be aware that by using this role, you implicitly accept the same EULA.

.. |Travis CI build status| image:: https://travis-ci.org/devops-coop/ansible-minecraft.svg?branch=master
    :target: https://travis-ci.org/devops-coop/ansible-minecraft
.. |Install from Ansible Galaxy| image:: https://img.shields.io/badge/role-devops--coop.minecraft-blue.svg
    :target: https://galaxy.ansible.com/devops-coop/minecraft/
.. |Chat on gitter.im| image:: https://badges.gitter.im/gitterHQ/gitter.png
    :target: https://gitter.im/devops-coop/ansible-minecraft