docs: def mkconfig(config=None,
               tmp=None,
               id_=None,
               approve_key=True,
               pub_key=None,
               priv_key=None):
      '''
      Generate keys and config and put them in a tmp directory.
  
      pub_key
          absolute path or file content of an optional preseeded salt key
  
      priv_key
          absolute path or file content of an optional preseeded salt key
  
      CLI Example:
  
      .. code-block:: bash
  
          salt 'minion' seed.mkconfig [config=config_data] [tmp=tmp_dir] \\
                  [id_=minion_id] [approve_key=(true|false)]
      '''
      if tmp is None:
          tmp = tempfile.mkdtemp()
      if config is None:
          config = {}
      if 'master' not in config and __opts__['master'] != 'salt':
          config['master'] = __opts__['master']
      if id_:
          config['id'] = id_
  
      # Write the new minion's config to a tmp file
      tmp_config = os.path.join(tmp, 'minion')
      with salt.utils.files.fopen(tmp_config, 'w+') as fp_:
          fp_.write(salt.utils.cloud.salt_config_to_yaml(config))
  
      # Generate keys for the minion
      pubkeyfn = os.path.join(tmp, 'minion.pub')
      privkeyfn = os.path.join(tmp, 'minion.pem')
      preseeded = pub_key and priv_key
      if preseeded:
          log.debug('Writing minion.pub to %s', pubkeyfn)
          log.debug('Writing minion.pem to %s', privkeyfn)
          with salt.utils.files.fopen(pubkeyfn, 'w') as fic:
              fic.write(salt.utils.stringutils.to_str(_file_or_content(pub_key)))
          with salt.utils.files.fopen(privkeyfn, 'w') as fic:
              fic.write(salt.utils.stringutils.to_str(_file_or_content(priv_key)))
          os.chmod(pubkeyfn, 0o600)
          os.chmod(privkeyfn, 0o600)
      else:
          salt.crypt.gen_keys(tmp, 'minion', 2048)
      if approve_key and not preseeded:
          with salt.utils.files.fopen(pubkeyfn) as fp_:
              pubkey = salt.utils.stringutils.to_unicode(fp_.read())
              __salt__['pillar.ext']({'virtkey': [id_, pubkey]})
  
      return {'config': tmp_config, 'pubkey': pubkeyfn, 'privkey': privkeyfn}