code: func (process *TeleportProcess) registerWithAuthServer(role teleport.Role, eventName string) {
  	serviceName := strings.ToLower(role.String())
  	process.RegisterCriticalFunc(fmt.Sprintf("register.%v", serviceName), func() error {
  		connector, err := process.reconnectToAuthService(role)
  		if err != nil {
  			return trace.Wrap(err)
  		}
  		process.onExit(fmt.Sprintf("auth.client.%v", serviceName), func(interface{}) {
  			process.Debugf("Closed client for %v.", role)
  			err := connector.Client.Close()
  			if err != nil {
  				process.Debugf("Failed to close client: %v", err)
  			}
  		})
  		process.BroadcastEvent(Event{Name: eventName, Payload: connector})
  		return nil
  	})
  }
docs: // registerWithAuthServer uses one time provisioning token obtained earlier
  // from the server to get a pair of SSH keys signed by Auth server host
  // certificate authority