// registerManagedInstance checks for activation credentials and performs managed instance registration when present func registerManagedInstance() (managedInstanceID string, err error) { // try to activate the instance with the activation credentials publicKey, privateKey, keyType, err := registration.GenerateKeyPair() if err != nil { return managedInstanceID, fmt.Errorf("error generating signing keys. %v", err) } // checking write access before registering err = registration.UpdateServerInfo("", "", privateKey, keyType) if err != nil { return managedInstanceID, fmt.Errorf("Unable to save registration information. %v\nTry running as sudo/administrator.", err) } // generate fingerprint fingerprint, err := registration.Fingerprint() if err != nil { return managedInstanceID, fmt.Errorf("error generating instance fingerprint. %v", err) } service := anonauth.NewAnonymousService(region) managedInstanceID, err = service.RegisterManagedInstance( activationCode, activationID, publicKey, keyType, fingerprint, ) if err != nil { return managedInstanceID, fmt.Errorf("error registering the instance with AWS SSM. %v", err) } err = registration.UpdateServerInfo(managedInstanceID, region, privateKey, keyType) if err != nil { return managedInstanceID, fmt.Errorf("error persisting the instance registration information. %v", err) } // saving registration information to the registration file reg := map[string]string{ "ManagedInstanceID": managedInstanceID, "Region": region, } var regData []byte if regData, err = json.Marshal(reg); err != nil { return "", fmt.Errorf("Failed to marshal registration info. %v", err) } if err = ioutil.WriteFile(registrationFile, regData, appconfig.ReadWriteAccess); err != nil { return "", fmt.Errorf("Failed to write registration info to file. %v", err) } return managedInstanceID, nil }
// clearRegistration clears any existing registration data func clearRegistration(log logger.T) (exitCode int) { err := registration.UpdateServerInfo("", "", "", "") if err == nil { log.Info("Registration information has been removed from the instance.") return 0 } log.Errorf("error clearing the instance registration information. %v\nTry running as sudo/administrator.", err) return 1 }