From 6711c9524e1bcf147a85fc71a62192aa75410955 Mon Sep 17 00:00:00 2001 From: jamiesonio Date: Wed, 19 Sep 2018 18:19:35 -0400 Subject: [PATCH] Add environmental variables to allow for the script to be run without consul_io.ini. This allows it to run dynamically without any prerequisite config file (#30900) --- contrib/inventory/consul_io.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/contrib/inventory/consul_io.py b/contrib/inventory/consul_io.py index 17defb435ec..b4bf022bdb0 100755 --- a/contrib/inventory/consul_io.py +++ b/contrib/inventory/consul_io.py @@ -49,12 +49,14 @@ Other options include: 'datacenter': which restricts the included nodes to those from the given datacenter +This can also be set with the environmental variable CONSUL_DATACENTER 'url': the URL of the Consul cluster. host, port and scheme are derived from the URL. If not specified, connection configuration defaults to http requests to localhost on port 8500. +This can also be set with the environmental variable CONSUL_URL 'domain': @@ -453,6 +455,7 @@ class ConsulConfig(dict): def __init__(self): self.read_settings() self.read_cli_args() + self.read_env_vars() def has_config(self, name): if hasattr(self, name): @@ -497,6 +500,14 @@ class ConsulConfig(dict): if getattr(args, arg): setattr(self, arg, getattr(args, arg)) + def read_env_vars(self): + env_var_options = ['datacenter', 'url'] + for option in env_var_options: + value = None + env_var = 'CONSUL_' + option.upper() + if os.environ.get(env_var): + setattr(self, option, os.environ.get(env_var)) + def get_availability_suffix(self, suffix, default): if self.has_config(suffix): return self.has_config(suffix)