Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.66 KB | None | 0 0
  1. import json
  2.  
  3. import ansible
  4. import ansible.cli
  5. import ansible.cli.playbook
  6. import ansible.executor.task_queue_manager
  7. import ansible.inventory
  8. import ansible.parsing.dataloader
  9. import ansible.playbook.play
  10. import ansible.plugins.callback
  11. import ansible.utils.vars
  12. import ansible.vars
  13.  
  14. from collections import namedtuple
  15.  
  16.  
  17. class ResultCallback(ansible.plugins.callback.CallbackBase):
  18. def v2_runner_on_ok(self, result, **kwargs):
  19. # host = result._host
  20. # print json.dumps({host.name: result._result}, indent=4)
  21. #print json.dumps(result._result, indent=4)
  22. # print json.dumps({host.name: result._result}, indent=4)
  23. delegated_vars = result._result.get('_ansible_delegated_vars', None)
  24. print delegated_vars
  25.  
  26.  
  27. def v2_runner_on_failed(self, result, ignore_errors=False):
  28. print result._result
  29.  
  30.  
  31. class AnsibleRunnerBase(object):
  32. def __init__(self, host_list=None):
  33. self.host_list = host_list
  34. super(AnsibleRunnerBase, self).__init__()
  35.  
  36. def get_hosts(self, pattern=None):
  37. raise NotImplementedError
  38.  
  39. def get_variables(self, host):
  40. raise NotImplementedError
  41.  
  42. def run(self, host, module_name, module_args, **kwargs):
  43. raise NotImplementedError
  44.  
  45.  
  46. class AnsibleRunner(AnsibleRunnerBase):
  47. Options = namedtuple('Options', [
  48. 'connection', 'module_path', 'forks', 'become', 'become_method',
  49. 'become_user', 'check'
  50. ])
  51.  
  52. variable_manager = ansible.vars.VariableManager()
  53. loader = ansible.parsing.dataloader.DataLoader()
  54. options = Options(
  55. connection='local',
  56. module_path=None,
  57. forks=100,
  58. become=None,
  59. become_method=None,
  60. become_user=None,
  61. check=False)
  62. passwords = dict(vault_pass='secret')
  63.  
  64. results_callback = ResultCallback()
  65.  
  66. inventory = ansible.inventory.Inventory(
  67. loader=loader,
  68. variable_manager=variable_manager,
  69. host_list='localhost')
  70. variable_manager.set_inventory(inventory)
  71.  
  72. play_source = dict(
  73. hosts='localhost',
  74. connection='local',
  75. gather_facts='no',
  76. roles=['stockclerk.debug'], )
  77. play = ansible.playbook.play.Play().load(
  78. play_source, variable_manager=variable_manager, loader=loader)
  79.  
  80. tqm = None
  81. try:
  82. tqm = ansible.executor.task_queue_manager.TaskQueueManager(
  83. inventory=inventory,
  84. variable_manager=variable_manager,
  85. loader=loader,
  86. options=options,
  87. passwords=passwords,
  88. stdout_callback=results_callback, )
  89. result = tqm.run(play)
  90. print result
  91. finally:
  92. if tqm is not None:
  93. tqm.cleanup()
  94.  
  95.  
  96. ar = AnsibleRunner()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement