Esempio n. 1
0
 def ansible_playbook(self, playbooks):
     pb = playbooks if isinstance(playbooks, list) else [playbooks]
     playbook = PlaybookExecutor(
         playbooks=pb,  # 注意这里是一个列表
         inventory=self.inventory,
         variable_manager=self.variable_manager,
         loader=self.loader,
         passwords=dict(vault_pass=None))
     playbook._tqm = self._tqm()
     print("Playbook DEBUG", pb)
     playbook.run()
Esempio n. 2
0
 def tqm_run(self):
     # close host_key check
     # next version need set host_key_checking=False in option
     C.HOST_KEY_CHECKING = False
     # TODO: now become_pass same as conn_pass ,need get from other become_pass
     _passwords = dict(conn_pass=self._get_password(),
                       become_pass=self._get_password())
     try:
         _tqm = TaskQueueManager(
             inventory=self.inventory,
             variable_manager=self.variable_manager,
             loader=self.loader,
             options=self.options,
             passwords=_passwords,
             stdout_callback=self.results_callback,
         )
         # play-book module
         if self.module == 'playbook':
             try:
                 filename = sys.argv[1]
                 path = os.getcwd()
                 if filename.startswith('/'):
                     f = filename
                 else:
                     f = '/'.join([path, filename])
                 if os.path.isfile(f):
                     _pe = PlaybookExecutor(
                         playbooks=[f],
                         inventory=self.inventory,
                         variable_manager=self.variable_manager,
                         loader=self.loader,
                         options=self.options,
                         passwords=_passwords,
                     )
                     _pe._tqm = _tqm
                     _pe.run()
                 else:
                     # TODO: use display from ansible
                     print("ERROR: file not exist!")
                     return False
             except IndexError:
                 # TODO: use display from ansible
                 print("ERROR: playbook module need file name!")
                 return False
         else:
             # tqm module
             _tqm.run(self._play())
     finally:
         if _tqm is not None:
             _tqm.cleanup()
     # return callback result:
     # self.results = dict(tasks_run=[], tasks_failed=[], tasks_unreachable=[], tasks_result=dict())
     return self.results