I need a better way to manage the configuration of each Spigot server.
These Ansible roles will deploy several spigot servers using the same base config, but there is no support for specialization per server. Also, the BungeeCord config has to be changed by hand if Spigot servers are added.
Pain Points:
- Boiler plate duplication across each server. For example, the IP and 90% of the base config is the same across each server, but 2-3 configuration options might change on each server.
- Changes to config shouldn't impact this repository. Which begs the question of where config should live. I am leaning towards a separate git repo for each server's config. But, I want to solve the base config first.
Ideal:
- I can change the base configuration of all servers.
- Each server has the ability to override any of the parameters from the base config.
- All configuration is stored in source control. Including the server-specific overrides and the base config.
- The "form" in which the configuration is entered doesn't change. That way of other's use it it isn't confusing. By form I mean the YAML format config files stay in YAML and the INI format config files stay in INI format and the JSON format config files stay in JSON.
Possible Solutions:
- Base config which gets copied and concacted for each server. Not going to work for JSON or every YAML file. Would work fine for INI format files though.
- Abstract all of the config keys into some sort of interface which writes the config to files. Messy and violates the idea that I want the formats to stay the same.
- All the values to be input as if they were being concacted while really parsing and then smartly concacting the field and writing the final configuration to disk. Messy. But, might be the only workable option.
I need a better way to manage the configuration of each Spigot server.
These Ansible roles will deploy several spigot servers using the same base config, but there is no support for specialization per server. Also, the BungeeCord config has to be changed by hand if Spigot servers are added.
Pain Points:
Ideal:
Possible Solutions: