ansible_playbook.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. from collections import namedtuple
  2. from ansible.parsing.dataloader import DataLoader
  3. from ansible.vars import VariableManager
  4. from ansible.inventory import Inventory
  5. from ansible.executor.playbook_executor import PlaybookExecutor
  6. from core.NeuronModule import NeuronModule, MissingParameterException
  7. class Ansible_playbook(NeuronModule):
  8. def __init__(self, **kwargs):
  9. super(Ansible_playbook, self).__init__(**kwargs)
  10. self.task_file = kwargs.get('task_file', None)
  11. # check if parameters have been provided
  12. if self._is_parameters_ok():
  13. Options = namedtuple('Options',
  14. ['connection', 'forks', 'become', 'become_method', 'become_user', 'check', 'listhosts',
  15. 'listtasks', 'listtags', 'syntax', 'module_path'])
  16. variable_manager = VariableManager()
  17. loader = DataLoader()
  18. options = Options(connection='local', forks=100, become=None, become_method=None, become_user=None, check=False,
  19. listhosts=False, listtasks=False, listtags=False, syntax=False, module_path="")
  20. passwords = dict(vault_pass='secret')
  21. inventory = Inventory(loader=loader, variable_manager=variable_manager, host_list='localhost')
  22. variable_manager.set_inventory(inventory)
  23. playbooks = [self.task_file]
  24. executor = PlaybookExecutor(
  25. playbooks=playbooks,
  26. inventory=inventory,
  27. variable_manager=variable_manager,
  28. loader=loader,
  29. options=options,
  30. passwords=passwords)
  31. executor.run()
  32. def _is_parameters_ok(self):
  33. if self.task_file is None:
  34. raise MissingParameterException("task_file parameter required")