docs: def run_ansible(playbooks, inventory_path=None, roles=None, extra_vars=None,
          tags=None, on_error_continue=False, basedir='.'):
      """Run Ansible.
  
      Args:
          playbooks (list): list of paths to the playbooks to run
          inventory_path (str): path to the hosts file (inventory)
          extra_var (dict): extra vars to pass
          tags (list): list of tags to run
          on_error_continue(bool): Don't throw any exception in case a host is
              unreachable or the playbooks run with errors
  
      Raises:
          :py:class:`enoslib.errors.EnosFailedHostsError`: if a task returns an
              error on a host and ``on_error_continue==False``
          :py:class:`enoslib.errors.EnosUnreachableHostsError`: if a host is
              unreachable (through ssh) and ``on_error_continue==False``
      """
  
      inventory, variable_manager, loader, options = _load_defaults(
          inventory_path=inventory_path,
          roles=roles,
          extra_vars=extra_vars,
          tags=tags,
          basedir=basedir
      )
      passwords = {}
      for path in playbooks:
          logger.info("Running playbook %s with vars:\n%s" % (path, extra_vars))
          pbex = PlaybookExecutor(
              playbooks=[path],
              inventory=inventory,
              variable_manager=variable_manager,
              loader=loader,
              options=options,
              passwords=passwords
          )
  
          code = pbex.run()
          stats = pbex._tqm._stats
          hosts = stats.processed.keys()
          result = [{h: stats.summarize(h)} for h in hosts]
          results = {"code": code, "result": result, "playbook": path}
          print(results)
  
          failed_hosts = []
          unreachable_hosts = []
  
          for h in hosts:
              t = stats.summarize(h)
              if t["failures"] > 0:
                  failed_hosts.append(h)
  
              if t["unreachable"] > 0:
                  unreachable_hosts.append(h)
  
          if len(failed_hosts) > 0:
              logger.error("Failed hosts: %s" % failed_hosts)
              if not on_error_continue:
                  raise EnosFailedHostsError(failed_hosts)
          if len(unreachable_hosts) > 0:
              logger.error("Unreachable hosts: %s" % unreachable_hosts)
              if not on_error_continue:
                  raise EnosUnreachableHostsError(unreachable_hosts)