44 lines
1.2 KiB
Python
44 lines
1.2 KiB
Python
"""Infrastructure module.
|
|
|
|
All functionality that requires interacting with the infrastructure repository
|
|
should live in here. This module relies on the file structure and conventions
|
|
of the infrastructure repository directory layout. That can change without the
|
|
code knowing, so the code must act more defensively than normal. This is an
|
|
experiment.
|
|
"""
|
|
|
|
from os import environ
|
|
|
|
from autonomic.config import INFRA_DIR, MEMBERS_YAML, PASS_STORE_DIR
|
|
from autonomic.utils import run, yaml_load
|
|
|
|
|
|
def members(flatten=None):
|
|
"""The list of Autonomic members."""
|
|
members = yaml_load(MEMBERS_YAML)
|
|
|
|
if members is None:
|
|
return
|
|
|
|
if flatten:
|
|
return [info[flatten] for info in members["autonomic_members"]]
|
|
|
|
return members
|
|
|
|
|
|
def run_play(play, env=None):
|
|
"""Run an Ansible playbook."""
|
|
cmd = [".venv/bin/ansible-playbook", play]
|
|
run(cmd, cwd=INFRA_DIR, interactive=True, env=env)
|
|
|
|
|
|
def get_passwd(path):
|
|
"""Lookup a password from the password store."""
|
|
env = environ.copy()
|
|
env.update({"PASSWORD_STORE_DIR": PASS_STORE_DIR})
|
|
|
|
cmd = ["pass", "show", path]
|
|
output = run(cmd, cwd=INFRA_DIR, env=env)
|
|
|
|
return output.strip()
|