Source code for mac_maker.ansible_controller.inventory
"""Inventory file for Ansible."""
import logging
import os
from .. import config
from ..utilities.mixins.text_file import TextFileWriter
from ..utilities.state import TypeState
from .interpreter import Interpreter
[docs]class InventoryFile(TextFileWriter):
"""Inventory file for Ansible.
:param state: The loaded runtime state object.
"""
def __init__(self, state: TypeState) -> None:
self.log = logging.getLogger(config.LOGGER_NAME)
self.state = state
self.interpreter = Interpreter()
def _is_already_present(self) -> bool:
return os.path.exists(self.state['inventory'])
def _ensure_path_exists(self) -> None:
os.makedirs(self.state['profile_data_path'], exist_ok=True)
[docs] def write_inventory_file(self) -> None:
"""Write the Ansible inventory file to the correct location."""
if self._is_already_present():
return
content = config.ANSIBLE_INVENTORY_CONTENT
content += (
"ansible_python_interpreter=" +
str(self.interpreter.get_interpreter_path()) + "\n"
)
self._ensure_path_exists()
self.write_text_file(content, self.state['inventory'])
self.log.debug(
"InventoryFile: Inventory has been written to %s.",
self.state['inventory'],
)