// 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 }
// GenerateKeyPair generate a new keypair func (instanceInfo) GenerateKeyPair() (publicKey, privateKey, keyType string, err error) { return registration.GenerateKeyPair() }