Better path handling for credentials
Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>
This commit is contained in:
parent
b00a77b6cd
commit
7cec9ace31
21
pass.py
21
pass.py
|
|
@ -34,6 +34,19 @@ class LookupModule(object):
|
||||||
|
|
||||||
def run(self, terms, inject=None, **kwargs):
|
def run(self, terms, inject=None, **kwargs):
|
||||||
|
|
||||||
|
candidates = []
|
||||||
|
basepath = utils.path_dwim(self.basedir, self.CREDENIAL_DIR)
|
||||||
|
if basepath:
|
||||||
|
candidates.append(basepath)
|
||||||
|
|
||||||
|
if "playbook_dir" in inject:
|
||||||
|
candidates.append(os.path.join(inject['playbook_dir'], self.CREDENIAL_DIR))
|
||||||
|
|
||||||
|
keydir = None
|
||||||
|
for candidate in candidates:
|
||||||
|
if os.path.exists(candidate):
|
||||||
|
keydir = candidate
|
||||||
|
break
|
||||||
terms = utils.listify_lookup_plugin_terms(terms, self.basedir, inject)
|
terms = utils.listify_lookup_plugin_terms(terms, self.basedir, inject)
|
||||||
|
|
||||||
if isinstance(terms, basestring):
|
if isinstance(terms, basestring):
|
||||||
|
|
@ -52,12 +65,8 @@ class LookupModule(object):
|
||||||
'''
|
'''
|
||||||
term = str(term)
|
term = str(term)
|
||||||
|
|
||||||
if "playbook_dir" not in inject:
|
if keydir is None:
|
||||||
raise AnsibleError("lookup_plugin.pass(%s) Cannot determine playbook dir")
|
raise AnsibleError("lookup_plugin.pass(%s) No 'credentials' dir found in playbook dir. candidates: %s" % (term, candidates))
|
||||||
|
|
||||||
keydir = os.path.join(inject['playbook_dir'], self.CREDENIAL_DIR)
|
|
||||||
if not os.path.exists(keydir):
|
|
||||||
raise AnsibleError("lookup_plugin.pass(%s) No 'credentials' dir in playbook dir %s" % (term, inject['playbook_dir']))
|
|
||||||
|
|
||||||
env = dict(os.environ)
|
env = dict(os.environ)
|
||||||
env["PASSWORD_STORE_DIR"] = keydir
|
env["PASSWORD_STORE_DIR"] = keydir
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue