From a6ec1fa135db937e0300589af02bc88502190c4e Mon Sep 17 00:00:00 2001 From: Gennady Lipenkov Date: Wed, 17 Jun 2020 12:41:11 +0300 Subject: [PATCH] Support Instance SA authentication --- builder/yandex/config.go | 5 ----- builder/yandex/driver_yc.go | 6 ++++++ 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/builder/yandex/config.go b/builder/yandex/config.go index 370c37219..ab6fbe6ec 100644 --- a/builder/yandex/config.go +++ b/builder/yandex/config.go @@ -248,11 +248,6 @@ func (c *Config) Prepare(raws ...interface{}) ([]string, error) { c.FolderID = os.Getenv("YC_FOLDER_ID") } - if c.Token == "" && c.ServiceAccountKeyFile == "" { - errs = packer.MultiErrorAppend( - errs, errors.New("a token or service account key file must be specified")) - } - if c.Token != "" && c.ServiceAccountKeyFile != "" { errs = packer.MultiErrorAppend( errs, errors.New("one of token or service account key file must be specified, not both")) diff --git a/builder/yandex/driver_yc.go b/builder/yandex/driver_yc.go index 0da019b86..66d5cd598 100644 --- a/builder/yandex/driver_yc.go +++ b/builder/yandex/driver_yc.go @@ -43,10 +43,16 @@ func NewDriverYC(ui packer.Ui, config *Config) (Driver, error) { } switch { + case config.Token == "" && config.ServiceAccountKeyFile == "": + log.Printf("[INFO] Use Instance Service Account for authentication") + sdkConfig.Credentials = ycsdk.InstanceServiceAccount() + case config.Token != "": + log.Printf("[INFO] Use OAuth token for authentication") sdkConfig.Credentials = ycsdk.OAuthToken(config.Token) case config.ServiceAccountKeyFile != "": + log.Printf("[INFO] Use Service Account key file %q for authentication", config.ServiceAccountKeyFile) key, err := iamkey.ReadFromJSONFile(config.ServiceAccountKeyFile) if err != nil { return nil, err