Skip to content

Commit

Permalink
feat(role): LinuxGameServerManager
Browse files Browse the repository at this point in the history
  • Loading branch information
DevScarabyte committed Jan 21, 2024
1 parent 93f6670 commit 2e2d4f8
Show file tree
Hide file tree
Showing 4 changed files with 187 additions and 0 deletions.
130 changes: 130 additions & 0 deletions roles/lgsm/defaults/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
########################################################################
# Title: Sandbox: LGSM | Default Variables #
# Author(s): Scarabyte #
# URL: https://github.com/saltyorg/Sandbox #
# -- #
########################################################################
# GNU General Public License v3.0 #
########################################################################
---
################################
# Basics
################################

lgsm_instances: ["lgsm"]

################################
# Paths
################################

lgsm_paths_folder: "{{ lgsm_name }}"
lgsm_paths_location: "{{ server_appdata_path }}/{{ lgsm_paths_folder }}"
lgsm_paths_folders_list:
- "{{ lgsm_paths_location }}"

################################
# Web
################################

lgsm_web_subdomain: "{{ lgsm_name }}"
lgsm_web_domain: "{{ user.domain }}"

################################
# DNS
################################

lgsm_dns_record: "{{ lookup('vars', lgsm_name + '_web_subdomain', default=lgsm_web_subdomain) }}"
lgsm_dns_zone: "{{ lookup('vars', lgsm_name + '_web_domain', default=lgsm_web_domain) }}"
lgsm_dns_proxy: false

################################
# Docker
################################

# Container
lgsm_docker_container: "{{ lgsm_name }}"

# Image
lgsm_docker_image_pull: true
lgsm_docker_image_repo: "gameservermanagers/gameserver"
lgsm_docker_image_tag: "{{ lgsm_name | replace('lgsm_','') }}"

Check warning on line 50 in roles/lgsm/defaults/main.yml

View workflow job for this annotation

GitHub Actions / ansible-lint

jinja[spacing]

Jinja2 spacing could be improved: {{ lgsm_name | replace('lgsm_','') }} -> {{ lgsm_name | replace('lgsm_', '') }}
lgsm_docker_image: "{{ lookup('vars', lgsm_name + '_docker_image_repo', default=lgsm_docker_image_repo)
+ ':' + lookup('vars', lgsm_name + '_docker_image_tag', default=lgsm_docker_image_tag) }}"

# Ports
lgsm_docker_ports_defaults: []
lgsm_docker_ports_custom: []
lgsm_docker_ports: "{{ lookup('vars', lgsm_name + '_docker_ports_defaults', default=lgsm_docker_ports_defaults)
+ lookup('vars', lgsm_name + '_docker_ports_custom', default=lgsm_docker_ports_custom) }}"

# Envs
lgsm_docker_envs_default: {}
lgsm_docker_envs_custom: {}
lgsm_docker_envs: "{{ lookup('vars', lgsm_name + '_docker_envs_default', default=lgsm_docker_envs_default)
| combine(lookup('vars', lgsm_name + '_docker_envs_custom', default=lgsm_docker_envs_custom)) }}"

# Commands
lgsm_docker_commands_default: []
lgsm_docker_commands_custom: []
lgsm_docker_commands: "{{ lookup('vars', lgsm_name + '_docker_commands_default', default=lgsm_docker_commands_default)
+ lookup('vars', lgsm_name + '_docker_commands_custom', default=lgsm_docker_commands_custom) }}"

# Volumes
lgsm_docker_volumes_default:
- "{{ lgsm_paths_location }}:/data"
lgsm_docker_volumes_custom: []
lgsm_docker_volumes: "{{ lookup('vars', lgsm_name + '_docker_volumes_default', default=lgsm_docker_volumes_default)
+ lookup('vars', lgsm_name + '_docker_volumes_custom', default=lgsm_docker_volumes_custom) }}"

# Devices
lgsm_docker_devices_default: []
lgsm_docker_devices_custom: []
lgsm_docker_devices: "{{ lookup('vars', lgsm_name + '_docker_devices_default', default=lgsm_docker_devices_default)
+ lookup('vars', lgsm_name + '_docker_devices_custom', default=lgsm_docker_devices_custom) }}"

# Hosts
lgsm_docker_hosts_default: []
lgsm_docker_hosts_custom: []
lgsm_docker_hosts: "{{ docker_hosts_common
| combine(lookup('vars', lgsm_name + '_docker_hosts_default', default=lgsm_docker_hosts_default))
| combine(lookup('vars', lgsm_name + '_docker_hosts_custom', default=lgsm_docker_hosts_custom)) }}"

# Labels
lgsm_docker_labels_default: {}
lgsm_docker_labels_custom: {}
lgsm_docker_labels: "{{ docker_labels_common
| combine(lookup('vars', lgsm_name + '_docker_labels_default', default=lgsm_docker_labels_default))
| combine(lookup('vars', lgsm_name + '_docker_labels_custom', default=lgsm_docker_labels_custom)) }}"

# Hostname
lgsm_docker_hostname: "{{ lgsm_name }}"

# Network Mode
lgsm_docker_network_mode_default: "{{ docker_networks_name_common }}"
lgsm_docker_network_mode: "{{ lookup('vars', lgsm_name + '_docker_network_mode_default', default=lgsm_docker_network_mode_default) }}"

# Networks
lgsm_docker_networks_alias: "{{ lgsm_name }}"
lgsm_docker_networks_default: []
lgsm_docker_networks_custom: []
lgsm_docker_networks: "{{ docker_networks_common
+ lookup('vars', lgsm_name + '_docker_networks_default', default=lgsm_docker_networks_default)
+ lookup('vars', lgsm_name + '_docker_networks_custom', default=lgsm_docker_networks_custom) }}"

# Capabilities
lgsm_docker_capabilities_default: []
lgsm_docker_capabilities_custom: []
lgsm_docker_capabilities: "{{ lookup('vars', lgsm_name + '_docker_capabilities_default', default=lgsm_docker_capabilities_default)
+ lookup('vars', lgsm_name + '_docker_capabilities_custom', default=lgsm_docker_capabilities_custom) }}"

# Security Opts
lgsm_docker_security_opts_default: []
lgsm_docker_security_opts_custom: []
lgsm_docker_security_opts: "{{ lookup('vars', lgsm_name + '_docker_security_opts_default', default=lgsm_docker_security_opts_default)
+ lookup('vars', lgsm_name + '_docker_security_opts_custom', default=lgsm_docker_security_opts_custom) }}"

# Restart Policy
lgsm_docker_restart_policy: unless-stopped

# State
lgsm_docker_state: started
32 changes: 32 additions & 0 deletions roles/lgsm/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
########################################################################
# Title: Sandbox: LGSM | Multi-instance Tasks #
# Author(s): scarabyte #
# URL: https://github.com/saltyorg/Sandbox #
# -- #
########################################################################
# GNU General Public License v3.0 #
########################################################################
---
- name: Ensure we have instances for lgsm to install
ansible.builtin.assert:
that:
- lgsm_instances is defined
- lgsm_instances is not string
- lgsm_instances is not mapping
- lgsm_instances is iterable
- lgsm_instances | length > 1
fail_msg: >-
LGSM was designed to use multi-instance configuration to install game servers properly. Check out https://docs.saltbox.dev/reference/multiple-instances/
success_msg: >-
Detected multi-instance configuration.
- name: "Execute lgsm roles"
ansible.builtin.include_tasks: main2.yml
vars:
lgsm_name: "{{ role }}"
with_items: "{{ lgsm_instances }}"
loop_control:
loop_var: role
when:
- role != "lgsm"

Check failure on line 32 in roles/lgsm/tasks/main.yml

View workflow job for this annotation

GitHub Actions / ansible-lint

yaml[trailing-spaces]

Trailing spaces
24 changes: 24 additions & 0 deletions roles/lgsm/tasks/main2.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
########################################################################
# Title: Sandbox: LGSM | Deployment Tasks #
# Author(s): scarabyte #
# URL: https://github.com/saltyorg/Sandbox #
# -- #
########################################################################
# GNU General Public License v3.0 #
########################################################################
---
- name: Add DNS record
ansible.builtin.include_tasks: "{{ resources_tasks_path }}/dns/tasker.yml"
vars:
dns_record: "{{ lookup('vars', role_name + '_dns_record') }}"
dns_zone: "{{ lookup('vars', role_name + '_dns_zone') }}"
dns_proxy: "{{ lookup('vars', role_name + '_dns_proxy') }}"

- name: Remove existing Docker container
ansible.builtin.include_tasks: "{{ resources_tasks_path }}/docker/remove_docker_container.yml"

- name: Create directories
ansible.builtin.include_tasks: "{{ resources_tasks_path }}/directories/create_directories.yml"

- name: Create Docker container
ansible.builtin.include_tasks: "{{ resources_tasks_path }}/docker/create_docker_container.yml"
1 change: 1 addition & 0 deletions sandbox.yml
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@
- { role: komga, tags: ['komga'] }
- { role: krusader, tags: ['krusader'] }
- { role: lazylibrarian, tags: ['lazylibrarian'] }
- { role: lgsm, tags: ['lgsm'] }
- { role: linkding, tags: ['linkding'] }
- { role: logarr, tags: ['logarr'] }
- { role: lunasea, tags: ['lunasea'] }
Expand Down

0 comments on commit 2e2d4f8

Please sign in to comment.