32 lines
1.2 KiB
Python
32 lines
1.2 KiB
Python
from ansible.parsing.yaml.loader import AnsibleLoader
|
|
from ansible.parsing.vault import get_file_vault_secret
|
|
from ansible.parsing.dataloader import DataLoader
|
|
|
|
|
|
class Config(object):
|
|
def __init__(self, environment_path):
|
|
self.environment_path = environment_path
|
|
self._load_ansible_vault_secrets()
|
|
self._load_configuration_files()
|
|
|
|
def _load_ansible_vault_secrets(self):
|
|
secret = get_file_vault_secret(
|
|
filename="~/.ansible-vault-password",
|
|
loader=DataLoader())
|
|
secret.load()
|
|
self.vault_secrets = [("default", secret)]
|
|
|
|
def _load_configuration_files(self):
|
|
self.lxd = self._read("lxd.yml")["lxd"]
|
|
self.credentials = self._read("credentials.yml")["credentials"]
|
|
self.networks = self._read("networks.yml")["networks"]
|
|
self.software = self._read("software.yml")["software"]
|
|
self.nodes = self._read("nodes.yml")["nodes"]
|
|
self.node_types = self._read("node_types.yml")["node_types"]
|
|
|
|
def _read(self, filename):
|
|
with open("%s/%s" % (self.environment_path, filename)) as fh:
|
|
loader = AnsibleLoader(fh, filename, self.vault_secrets)
|
|
data = loader.get_single_data()
|
|
return data
|