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()
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