Add mineos hosts

This commit is contained in:
Patrick Toal
2019-06-24 20:14:08 -04:00
parent 579fb7dc87
commit f8b5b7c88c
12 changed files with 425 additions and 0 deletions

View File

@@ -0,0 +1,29 @@
---
language: python
python: "2.7"
# Use the new container infrastructure
sudo: false
# Install ansible
addons:
apt:
packages:
- python-pip
install:
# Install ansible
- pip install ansible
# Check ansible version
- ansible --version
# Create ansible.cfg with correct roles_path
- printf '[defaults]\nroles_path=../' >ansible.cfg
script:
# Basic role syntax check
- ansible-playbook tests/test.yml -i tests/inventory --syntax-check
notifications:
webhooks: https://galaxy.ansible.com/api/v1/notifications/

38
roles/sage905.mineos/README.md Executable file
View File

@@ -0,0 +1,38 @@
Role Name
=========
A brief description of the role goes here.
Requirements
------------
Any pre-requisites that may not be covered by Ansible itself or the role should be mentioned here. For instance, if the role uses the EC2 module, it may be a good idea to mention in this section that the boto package is required.
Role Variables
--------------
A description of the settable variables for this role should go here, including any variables that are in defaults/main.yml, vars/main.yml, and any variables that can/should be set via parameters to the role. Any variables that are read from other roles and/or the global scope (ie. hostvars, group vars, etc.) should be mentioned here as well.
Dependencies
------------
A list of other roles hosted on Galaxy should go here, plus any details in regards to parameters that may need to be set for other roles, or variables that are used from other roles.
Example Playbook
----------------
Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too:
- hosts: servers
roles:
- { role: username.rolename, x: 42 }
License
-------
BSD
Author Information
------------------
An optional section for the role authors to include contact information, or a website (HTML is not allowed).

View File

@@ -0,0 +1,9 @@
---
# defaults file for sage905.mineos
mineos_cert_key: /etc/ssl/certs/mineos.key
mineos_cert_pem: /etc/ssl/certs/mineos.pem
mineos_generate_self_signed: true
mineos_keep_updated: false
mineos_http_port: 80
mineos_https_port: 443
mineos_use_https: true

View File

@@ -0,0 +1,36 @@
# mineos -
description "mineos minecraft front-end"
author "Will Dizon <wdchromium@gmail.com>"
env NODE_PATH=/usr/local/lib/npm/lib/node_modules
env NPM_CONFIG_PREFIX=/usr/local/lib/npm
env PATH=/usr/local/lib/npm/bin:/sbin:/bin:/usr/sbin:/usr/bin
export NODE_PATH
export NPM_CONFIG_PREFIX
export PATH
# Stanzas
#
# Stanzas control when and how a process is started and stopped
# See a list of stanzas here: http://upstart.ubuntu.com/wiki/Stanzas#respawn
# When to start the service
start on runlevel [2345]
# When to stop the service
stop on runlevel [016]
# Automatically restart process if crashed
respawn
# Essentially lets upstart know the process will detach itself to the background
expect daemon
# Specify working directory
chdir /usr/games/minecraft
# Start the process
#exec procenv --file=/tmp/procenv-job2.log --exec -- /usr/bin/node service.js start
exec /usr/bin/node service.js start

View File

@@ -0,0 +1,9 @@
---
# handlers file for sage905.mineos
- name: Reload initctl
become: true
command: initctl reload-configuration
- name: Restart mineos
become: true
service: name=mineos state=restarted

View File

@@ -0,0 +1,172 @@
galaxy_info:
author: Sage905
description:
company: Pwn9
# If the issue tracker for your role is not on github, uncomment the
# next line and provide a value
# issue_tracker_url: http://example.com/issue/tracker
# Some suggested licenses:
# - BSD (default)
# - MIT
# - GPLv2
# - GPLv3
# - Apache
# - CC-BY
license: None
min_ansible_version: 1.2
# Optionally specify the branch Galaxy will use when accessing the GitHub
# repo for this role. During role install, if no tags are available,
# Galaxy will use this branch. During import Galaxy will access files on
# this branch. If travis integration is cofigured, only notification for this
# branch will be accepted. Otherwise, in all cases, the repo's default branch
# (usually master) will be used.
#github_branch:
#
# Below are all platforms currently available. Just uncomment
# the ones that apply to your role. If you don't see your
# platform on this list, let us know and we'll get it added!
#
#platforms:
#- name: EL
# versions:
# - all
# - 5
# - 6
# - 7
#- name: GenericUNIX
# versions:
# - all
# - any
#- name: Solaris
# versions:
# - all
# - 10
# - 11.0
# - 11.1
# - 11.2
# - 11.3
#- name: Fedora
# versions:
# - all
# - 16
# - 17
# - 18
# - 19
# - 20
# - 21
# - 22
# - 23
#- name: opensuse
# versions:
# - all
# - 12.1
# - 12.2
# - 12.3
# - 13.1
# - 13.2
#- name: IOS
# versions:
# - all
# - any
#- name: SmartOS
# versions:
# - all
# - any
#- name: eos
# versions:
# - all
# - Any
#- name: Windows
# versions:
# - all
# - 2012R2
#- name: Amazon
# versions:
# - all
# - 2013.03
# - 2013.09
#- name: GenericBSD
# versions:
# - all
# - any
#- name: Junos
# versions:
# - all
# - any
#- name: FreeBSD
# versions:
# - all
# - 10.0
# - 10.1
# - 10.2
# - 8.0
# - 8.1
# - 8.2
# - 8.3
# - 8.4
# - 9.0
# - 9.1
# - 9.1
# - 9.2
# - 9.3
#- name: Ubuntu
# versions:
# - all
# - lucid
# - maverick
# - natty
# - oneiric
# - precise
# - quantal
# - raring
# - saucy
# - trusty
# - utopic
# - vivid
# - wily
# - xenial
#- name: SLES
# versions:
# - all
# - 10SP3
# - 10SP4
# - 11
# - 11SP1
# - 11SP2
# - 11SP3
#- name: GenericLinux
# versions:
# - all
# - any
#- name: NXOS
# versions:
# - all
# - any
#- name: Debian
# versions:
# - all
# - etch
# - jessie
# - lenny
# - squeeze
# - wheezy
galaxy_tags: []
# List tags for your role here, one per line. A tag is
# a keyword that describes and categorizes the role.
# Users find roles by searching for tags. Be sure to
# remove the '[]' above if you add tags to this list.
#
# NOTE: A tag is limited to a single word comprised of
# alphanumeric characters. Maximum 20 tags per role.
dependencies:
- geerlingguy.java
# List your role dependencies here, one per line.
# Be sure to remove the '[]' above if you add dependencies
# to this list.

View File

@@ -0,0 +1,108 @@
---
# tasks file for sage905.mineos
- name: Install Development Tools
become: true
yum: name="@Development tools" state=present
when: "{{ ansible_os_family == 'RedHat'}}"
- name: Install MineOS Dependencies
become: true
yum: name={{ item }} state=present enablerepo=epel
with_items:
- bind-utils
- screen
- git
- wget
- java-1.8.0-openjdk-headless.x86_64
- openssl
- openssl-devel
- rsync
- rdiff-backup
when: "{{ ansible_os_family == 'RedHat'}}"
- name: Create minecraft group
become: true
group: name=minecraft state=present system=yes
- name: Create minecraft user
become: true
user:
name: minecraft
comment: "Minecraft Server"
createhome: yes
system: yes
groups: minecraft
home: /var/games/minecraft
shell: /bin/bash
state: present
- name: Create Directories
become: true
file: name=/usr/games/minecraft state=directory owner=minecraft group=minecraft mode=0775
- name: Allow group to access minecraft directory
become: true
file: name=/var/games/minecraft group=minecraft mode=0775
- name: Clone mineos git repo
become: true
become_user: minecraft
git: repo=https://github.com/hexparrot/mineos-node.git dest=/usr/games/minecraft update={{ mineos_keep_updated }}
notify: Restart mineos
- name: Set git core.filemode setting
become: true
become_user: minecraft
ini_file:
dest: /usr/games/minecraft/.git/config
section: core
option: filemode
value: false
- name: Set file permissions
become: true
file: name=/usr/games/minecraft/{{ item }} owner=minecraft group=minecraft mode=0775
with_items:
- service.js
- mineos_console.js
- generate-sslcert.sh
- webui.js
- name: Give minecraft group access to server dir
become: true
file: name=/var/games/minecraft/servers owner=minecraft group=minecraft mode=0775 state=directory
- name: Generate self-signed certs
become: true
command: /usr/games/minecraft/generate-sslcert.sh chdir=/usr/games/minecraft creates=/etc/ssl/certs/mineos.key
when: "{{ mineos_generate_self_signed }}"
- name: Get Node Modules
become: true
become_user: minecraft
npm: path=/usr/games/minecraft state=present production=true
notify: Restart mineos
- name: Link to executable
become: true
file: src=/usr/games/minecraft/mineos_console.js dest=/usr/local/bin/mineos state=link
notify: Restart mineos
- name: Install mineos config from distribution
become: true
template: src=mineos.conf dest=/etc/mineos.conf owner=root mode=0644
notify: Restart mineos
- name: Install upstart config (RHEL <= 6)
become: true
copy: src=upstart_conf dest=/etc/init/mineos.conf
notify:
- Reload initctl
- Restart mineos
when: ansible_distribution == "Amazon" or (ansible_distribution == "CentOS" and ansible_distribution_major_version <= "6")
- name: Link systemd config (RHEL 7)
become: true
file: src=/usr/games/minecraft/init/systemd_conf dest=/etc/systemd/system/mineos.service state=link
notify: Restart mineos
when: (ansible_distribution == "CentOS" and ansible_distribution_major_version == "7")

View File

@@ -0,0 +1,10 @@
use_https = {{ mineos_use_https }}
socket_host = '0.0.0.0'
socket_port = {{ '%s' % mineos_https_port if mineos_use_https else '%s' % mineos_http_port }}
base_directory = '/var/games/minecraft'
ssl_private_key = '{{ mineos_cert_key }}'
ssl_certificate = '{{ mineos_cert_pem }}'
ssl_cert_chain = '{{ mineos_cert_chain |default("") }}'
server.ssl_module = "builtin"
webui.mask_password = True

View File

@@ -0,0 +1 @@
localhost

View File

@@ -0,0 +1,5 @@
---
- hosts: localhost
remote_user: root
roles:
- sage905.mineos

View File

@@ -0,0 +1,3 @@
---
# vars file for sage905.mineos

View File

@@ -27,3 +27,8 @@
become: false
roles:
- lightbulb-ansiblered-deck
- name: Minecraft Systems
hosts: tag_mineos
roles:
- sage905.mineos