docs: def solo(whyrun=False,
           logfile=None,
           **kwargs):
      '''
      Execute a chef solo run and return a dict with the stderr, stdout,
      return code, and pid.
  
      CLI Example:
  
      .. code-block:: bash
  
          salt '*' chef.solo override-runlist=test
  
      config
          The configuration file to use
  
      environment
          Set the Chef Environment on the node
  
      group
          Group to set privilege to
  
      json-attributes
          Load attributes from a JSON file or URL
  
      log_level
          Set the log level (debug, info, warn, error, fatal)
  
      logfile
          Set the log file location
  
      node-name
          The node name for this client
  
      override-runlist
          Replace current run list with specified items for a single run
  
      recipe-url
          Pull down a remote gzipped tarball of recipes and untar it to
          the cookbook cache
  
      run-lock-timeout
          Set maximum duration to wait for another client run to finish,
          default is indefinitely.
  
      user
          User to set privilege to
  
      whyrun
          Enable whyrun mode when set to True
      '''
      if logfile is None:
          logfile = _default_logfile('chef-solo')
      args = ['chef-solo',
              '--no-color',
              '--logfile "{0}"'.format(logfile),
              '--format doc']
  
      if whyrun:
          args.append('--why-run')
  
      return _exec_cmd(*args, **kwargs)