docs: def ansible_perform_operation(self,
                                    host_list=None,
                                    remote_user=None,
                                    remote_pass=None,
                                    module=None,
                                    complex_args=None,
                                    module_args='',
                                    environment=None,
                                    check=False,
                                    sudo=False,
                                    sudo_user=None,
                                    sudo_pass=None,
                                    forks=20):
          '''
          Perform any ansible operation.
          '''
          (host_list, remote_user) = \
              self.validate_host_parameters(host_list, remote_user)
          if (host_list, remote_user) is (None, None):
              return None
  
          if module is None:
              print "ANSIBLE Perform operation: No module specified"
              return None
  
          runner = ansible.runner.Runner(
              module_name=module,
              host_list=host_list,
              remote_user=remote_user,
              remote_pass=remote_pass,
              module_args=module_args,
              complex_args=complex_args,
              environment=environment,
              check=check,
              become=sudo,
              become_user=sudo_user,
              become_pass=sudo_pass,
              forks=forks)
  
          results = runner.run()
  
          results, failed_hosts = self.validate_results(results)
          if results['status'] != 'PASS':
              print "ANSIBLE: [%s] operation failed [%s] [hosts: %s]" % \
                  (module, complex_args, failed_hosts)
  
          return results, failed_hosts