linuxserver / docker-netbox

GNU General Public License v3.0
87 stars 18 forks source link

[FEAT] Improved handling of configuration values #62

Open jchonig opened 1 day ago

jchonig commented 1 day ago

Is this a new feature request?

Wanted change

Add the ability to specify configuration variables w/o hand editting configuration.py.

This may relate to https://github.com/linuxserver/docker-netbox/issues/59

Reason for change

I manage my containers with CM (puppet) and strongly dislike having to hand edit files in a container. I haven't found any tools that allow an easy way to update python configuration files.

Proposed code change

I tried to specify another configuration script (config.py) which reads configuration.py and also reads a yaml file. But could not get that to work properly. I'm probably missing some subtle issue with python importlib.

What I ended up doing that worked was appending the following code to the end of configuration.py and then writing my configuration into a yaml file called config.yaml. This allows anything set in configuration.py to be used, but values in config.yaml override it.

This could be expanded to write one YAML file for data passed in from the environment and another for additional configuration written by the user.

import yaml
import sys

print("Reading /config/config.yaml")
with open("/config/config.yaml", "r") as fp:
    config = yaml.safe_load(fp)

for key, value in config.items():
    setattr(sys.modules[__name__], key, value)

Thoughts?

github-actions[bot] commented 1 day ago

Thanks for opening your first issue here! Be sure to follow the relevant issue templates, or risk having this issue marked as invalid.