diff --git a/defaults/.main.yml.kate-swp b/defaults/.main.yml.kate-swp new file mode 100644 index 0000000..6129709 Binary files /dev/null and b/defaults/.main.yml.kate-swp differ diff --git a/defaults/main.yml b/defaults/main.yml new file mode 100644 index 0000000..8eac0b1 --- /dev/null +++ b/defaults/main.yml @@ -0,0 +1,3 @@ +#SPDX-License-Identifier: MIT-0 +--- +# defaults file for ansible-role-vintage-story diff --git a/handlers/main.yml b/handlers/main.yml new file mode 100644 index 0000000..2f50750 --- /dev/null +++ b/handlers/main.yml @@ -0,0 +1,3 @@ +#SPDX-License-Identifier: MIT-0 +--- +# handlers file for ansible-role-vintage-story diff --git a/meta/main.yml b/meta/main.yml new file mode 100644 index 0000000..36b9858 --- /dev/null +++ b/meta/main.yml @@ -0,0 +1,35 @@ +#SPDX-License-Identifier: MIT-0 +galaxy_info: + author: your name + description: your role description + company: your company (optional) + + # 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 + + # Choose a valid license ID from https://spdx.org - some suggested licenses: + # - BSD-3-Clause (default) + # - MIT + # - GPL-2.0-or-later + # - GPL-3.0-only + # - Apache-2.0 + # - CC-BY-4.0 + license: license (GPL-2.0-or-later, MIT, etc) + + min_ansible_version: 2.1 + + # If this a Container Enabled role, provide the minimum Ansible Container version. + # min_ansible_container_version: + + 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: [] + # List your role dependencies here, one per line. Be sure to remove the '[]' above, + # if you add dependencies to this list. diff --git a/tasks/main.yml b/tasks/main.yml new file mode 100644 index 0000000..903c0fc --- /dev/null +++ b/tasks/main.yml @@ -0,0 +1,81 @@ +#SPDX-License-Identifier: MIT-0 +--- +# tasks file for ansible-role-vintage-story +- name: Create Vintage Story namespace + k8s: + state: present + definition: + apiVersion: v1 + kind: Namespace + metadata: + name: vintage-story + +- name: Create a persistent volume claim + k8s: + state: present + definition: + apiVersion: v1 + kind: PersistentVolumeClaim + metadata: + name: data + namespace: vintage-story + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 32Gi + +- name: Create Deployment for Vintage Story + k8s: + definition: + apiVersion: v1 + kind: Deployment + metadata: + name: vintage-story + namespace: vintage-story + spec: + replicas: 1 + selector: + matchLabels: + app: vintage-story + template: + metadata: + labels: + app: vintage-story + spec: + containers: + - name: vintage-story + image: devidian/vintagestory + volumeMounts: + - name: data + mountPath: /gamedata + - name: config + mountPath: /gamedata/vs/serverconfig.json + imagePullPolicy: IfNotPresent + ports: + - containerPort: 42420 + volumes: + - name: data + persistentVolumeClaim: + claimName: data + - name: config + configMap: + name: config + +- name: Create Service for Vintage Story + k8s: + definition: + apiVersion: v1 + kind: Service + metadata: + name: vintage-story + namespace: vintage-story + spec: + selector: + app: vintage-story + ports: + - port: 42420 + name: http + type: LoadBalancer + diff --git a/templates/serverconfig.json.j2 b/templates/serverconfig.json.j2 new file mode 100644 index 0000000..1c35799 --- /dev/null +++ b/templates/serverconfig.json.j2 @@ -0,0 +1,375 @@ +{ + "FileEditWarning": "", + "ConfigVersion": "1.8", + "ServerName": "{{ server_name }}", + "ServerUrl": null, + "ServerDescription": null, + "WelcomeMessage": "Welcome {0}, may you survive well and prosper", + "Ip": null, + "Port": 42420, + "Upnp": false, + "CompressPackets": true, + "AdvertiseServer": false, + "MaxClients": 16, + "MaxClientsInQueue": 0, + "PassTimeWhenEmpty": false, + "MasterserverUrl": "http://masterserver.vintagestory.at/api/v1/servers/", + "ModDbUrl": "https://mods.vintagestory.at/", + "ClientConnectionTimeout": 150, + "EntityDebugMode": false, + "Password": null, + "MapSizeX": 1024000, + "MapSizeY": 256, + "MapSizeZ": 1024000, + "ServerLanguage": "en", + "MaxChunkRadius": 12, + "TickTime": 33.333332, + "SpawnCapPlayerScaling": 0.5, + "BlockTickChunkRange": 5, + "MaxMainThreadBlockTicks": 10000, + "RandomBlockTicksPerChunk": 16, + "BlockTickInterval": 300, + "SkipEveryChunkRow": 0, + "SkipEveryChunkRowWidth": 0, + "Roles": [ + { + "Code": "suvisitor", + "PrivilegeLevel": -1, + "Name": "Survival Visitor", + "Description": "Can only visit this world and chat but not use/place/break anything", + "DefaultSpawn": null, + "ForcedSpawn": null, + "Privileges": [ + "chat" + ], + "RuntimePrivileges": [], + "DefaultGameMode": 1, + "Color": "Green", + "LandClaimAllowance": 0, + "LandClaimMinSize": { + "X": 5, + "Y": 5, + "Z": 5 + }, + "LandClaimMaxAreas": 3, + "AutoGrant": false + }, + { + "Code": "crvisitor", + "PrivilegeLevel": -1, + "Name": "Creative Visitor", + "Description": "Can only visit this world, chat and fly but not use/place/break anything", + "DefaultSpawn": null, + "ForcedSpawn": null, + "Privileges": [ + "chat" + ], + "RuntimePrivileges": [], + "DefaultGameMode": 2, + "Color": "DarkGray", + "LandClaimAllowance": 0, + "LandClaimMinSize": { + "X": 5, + "Y": 5, + "Z": 5 + }, + "LandClaimMaxAreas": 3, + "AutoGrant": false + }, + { + "Code": "limitedsuplayer", + "PrivilegeLevel": -1, + "Name": "Limited Survival Player", + "Description": "Can use/place/break blocks only in permitted areas (priv level -1), create/manage player groups and chat", + "DefaultSpawn": null, + "ForcedSpawn": null, + "Privileges": [ + "controlplayergroups", + "manageplayergroups", + "chat", + "build", + "useblock", + "attackcreatures", + "attackplayers", + "selfkill" + ], + "RuntimePrivileges": [], + "DefaultGameMode": 1, + "Color": "White", + "LandClaimAllowance": 0, + "LandClaimMinSize": { + "X": 5, + "Y": 5, + "Z": 5 + }, + "LandClaimMaxAreas": 3, + "AutoGrant": false + }, + { + "Code": "limitedcrplayer", + "PrivilegeLevel": -1, + "Name": "Limited Creative Player", + "Description": "Can use/place/break blocks in only in permitted areas (priv level -1), create/manage player groups, chat, fly and set his own game mode (= allows fly and change of move speed)", + "DefaultSpawn": null, + "ForcedSpawn": null, + "Privileges": [ + "controlplayergroups", + "manageplayergroups", + "chat", + "build", + "useblock", + "gamemode", + "freemove", + "attackcreatures", + "attackplayers", + "selfkill" + ], + "RuntimePrivileges": [], + "DefaultGameMode": 2, + "Color": "LightGreen", + "LandClaimAllowance": 0, + "LandClaimMinSize": { + "X": 5, + "Y": 5, + "Z": 5 + }, + "LandClaimMaxAreas": 3, + "AutoGrant": false + }, + { + "Code": "suplayer", + "PrivilegeLevel": 0, + "Name": "Survival Player", + "Description": "Can use/place/break blocks in unprotected areas (priv level 0), create/manage player groups and chat. Can claim an area of up to 8 chunks.", + "DefaultSpawn": null, + "ForcedSpawn": null, + "Privileges": [ + "controlplayergroups", + "manageplayergroups", + "chat", + "areamodify", + "build", + "useblock", + "attackcreatures", + "attackplayers", + "selfkill" + ], + "RuntimePrivileges": [], + "DefaultGameMode": 1, + "Color": "White", + "LandClaimAllowance": 262144, + "LandClaimMinSize": { + "X": 5, + "Y": 5, + "Z": 5 + }, + "LandClaimMaxAreas": 3, + "AutoGrant": false + }, + { + "Code": "crplayer", + "PrivilegeLevel": 100, + "Name": "Creative Player", + "Description": "Can use/place/break blocks in all areas (priv level 100), create/manage player groups, chat, fly and set his own game mode (= allows fly and change of move speed). Can claim an area of up to 40 chunks.", + "DefaultSpawn": null, + "ForcedSpawn": null, + "Privileges": [ + "controlplayergroups", + "manageplayergroups", + "chat", + "areamodify", + "build", + "useblock", + "gamemode", + "freemove", + "attackcreatures", + "attackplayers", + "selfkill" + ], + "RuntimePrivileges": [], + "DefaultGameMode": 2, + "Color": "LightGreen", + "LandClaimAllowance": 1310720, + "LandClaimMinSize": { + "X": 5, + "Y": 5, + "Z": 5 + }, + "LandClaimMaxAreas": 6, + "AutoGrant": false + }, + { + "Code": "sumod", + "PrivilegeLevel": 200, + "Name": "Survival Moderator", + "Description": "Can use/place/break blocks everywhere (priv level 200), create/manage player groups, chat, kick/ban players and do serverwide announcements. Can claim an area of up to 4 chunks.", + "DefaultSpawn": null, + "ForcedSpawn": null, + "Privileges": [ + "controlplayergroups", + "manageplayergroups", + "chat", + "areamodify", + "build", + "useblock", + "buildblockseverywhere", + "useblockseverywhere", + "kick", + "ban", + "announce", + "readlists", + "attackcreatures", + "attackplayers", + "selfkill" + ], + "RuntimePrivileges": [], + "DefaultGameMode": 1, + "Color": "Cyan", + "LandClaimAllowance": 1310720, + "LandClaimMinSize": { + "X": 5, + "Y": 5, + "Z": 5 + }, + "LandClaimMaxAreas": 60, + "AutoGrant": false + }, + { + "Code": "crmod", + "PrivilegeLevel": 500, + "Name": "Creative Moderator", + "Description": "Can use/place/break blocks everywhere (priv level 500), create/manage player groups, chat, kick/ban players, fly and set his own or other players game modes (= allows fly and change of move speed). Can claim an area of up to 40 chunks.", + "DefaultSpawn": null, + "ForcedSpawn": null, + "Privileges": [ + "controlplayergroups", + "manageplayergroups", + "chat", + "areamodify", + "build", + "useblock", + "buildblockseverywhere", + "useblockseverywhere", + "kick", + "ban", + "gamemode", + "freemove", + "commandplayer", + "announce", + "readlists", + "attackcreatures", + "attackplayers", + "selfkill" + ], + "RuntimePrivileges": [], + "DefaultGameMode": 2, + "Color": "Cyan", + "LandClaimAllowance": 1310720, + "LandClaimMinSize": { + "X": 5, + "Y": 5, + "Z": 5 + }, + "LandClaimMaxAreas": 60, + "AutoGrant": false + }, + { + "Code": "admin", + "PrivilegeLevel": 99999, + "Name": "Admin", + "Description": "Has all privileges, including giving other players admin status.", + "DefaultSpawn": null, + "ForcedSpawn": null, + "Privileges": [ + "build", + "useblock", + "buildblockseverywhere", + "useblockseverywhere", + "attackplayers", + "attackcreatures", + "freemove", + "gamemode", + "pickingrange", + "chat", + "kick", + "ban", + "whitelist", + "setwelcome", + "announce", + "readlists", + "give", + "areamodify", + "setspawn", + "controlserver", + "tp", + "time", + "grantrevoke", + "root", + "commandplayer", + "controlplayergroups", + "manageplayergroups", + "selfkill" + ], + "RuntimePrivileges": [], + "DefaultGameMode": 1, + "Color": "LightBlue", + "LandClaimAllowance": 2147483647, + "LandClaimMinSize": { + "X": 5, + "Y": 5, + "Z": 5 + }, + "LandClaimMaxAreas": 99999, + "AutoGrant": true + } + ], + "DefaultRoleCode": "suplayer", + "ModPaths": [ + "Mods", + "/gamedata/vs/Mods" + ], + "AntiAbuse": 0, + "WorldConfig": { + "Seed": null, + "SaveFileLocation": "/gamedata/vs/Saves/default.vcdbs", + "WorldName": "A new world", + "AllowCreativeMode": true, + "PlayStyle": "surviveandbuild", + "PlayStyleLangCode": "surviveandbuild-bands", + "WorldType": "standard", + "WorldConfiguration": null, + "MapSizeY": null, + "CreatedByPlayerName": null, + "DisabledMods": null, + "RepairMode": false + }, + "NextPlayerGroupUid": 10, + "GroupChatHistorySize": 20, + "MaxOwnedGroupChannelsPerUser": 10, + "OnlyWhitelisted": false, + "WhitelistMode": 0, + "VerifyPlayerAuth": true, + "DefaultSpawn": null, + "AllowPvP": true, + "AllowFireSpread": true, + "AllowFallingBlocks": true, + "HostedMode": false, + "HostedModeAllowMods": false, + "StartupCommands": null, + "RepairMode": false, + "AnalyzeMode": false, + "CorruptionProtection": true, + "RegenerateCorruptChunks": false, + "ChatRateLimitMs": 1000, + "DieBelowDiskSpaceMb": 400, + "ModIdBlackList": null, + "ModIdWhiteList": null, + "ServerIdentifier": "a617d619-b910-41fb-827b-a6a748b78b7b", + "LogBlockBreakPlace": false, + "LogFileSplitAfterLine": 500000, + "DieAboveErrorCount": 100000, + "LoginFloodProtection": false, + "TemporaryIpBlockList": false, + "DisableModSafetyCheck": false, + "DieAboveMemoryUsageMb": 50000 +} diff --git a/tests/inventory b/tests/inventory new file mode 100644 index 0000000..03ca42f --- /dev/null +++ b/tests/inventory @@ -0,0 +1,3 @@ +#SPDX-License-Identifier: MIT-0 +localhost + diff --git a/tests/test.yml b/tests/test.yml new file mode 100644 index 0000000..321be6f --- /dev/null +++ b/tests/test.yml @@ -0,0 +1,6 @@ +#SPDX-License-Identifier: MIT-0 +--- +- hosts: localhost + remote_user: root + roles: + - ansible-role-vintage-story diff --git a/vars/main.yml b/vars/main.yml new file mode 100644 index 0000000..9b75e90 --- /dev/null +++ b/vars/main.yml @@ -0,0 +1,3 @@ +#SPDX-License-Identifier: MIT-0 +--- +# vars file for ansible-role-vintage-story