sidn-lxd-ansible-demo/lib/dynamic_inventory/config.py

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