diff --git a/builder/ncloud/config.go b/builder/ncloud/config.go index abaca35c3..5e713d44d 100644 --- a/builder/ncloud/config.go +++ b/builder/ncloud/config.go @@ -22,7 +22,7 @@ type Config struct { ServerImageName string `mapstructure:"server_image_name"` ServerImageDescription string `mapstructure:"server_image_description"` UserData string `mapstructure:"user_data"` - UserDataFile string `mapstructure:"user_data_file"` + UserDataFile string `mapstructure:"user_data_file"` BlockStorageSize int `mapstructure:"block_storage_size"` Region string `mapstructure:"region"` AccessControlGroupConfigurationNo string `mapstructure:"access_control_group_configuration_no"` @@ -92,6 +92,14 @@ func NewConfig(raws ...interface{}) (*Config, []string, error) { } } + if c.UserData != "" && c.UserDataFile != "" { + errs = append(errs, fmt.Errorf("Only one of user_data or user_data_file can be specified.")) + } else if c.UserDataFile != "" { + if _, err := os.Stat(c.UserDataFile); err != nil { + errs = append(errs, fmt.Errorf("user_data_file not found: %s", c.UserDataFile)) + } + } + if c.UserData != "" && len(c.UserData) > 21847 { errs = packer.MultiErrorAppend(errs, errors.New("If user_data field is set, length of UserData should be max 21847")) } diff --git a/builder/ncloud/step_create_server_instance.go b/builder/ncloud/step_create_server_instance.go index d7decd4d8..3a842f899 100644 --- a/builder/ncloud/step_create_server_instance.go +++ b/builder/ncloud/step_create_server_instance.go @@ -3,6 +3,7 @@ package ncloud import ( "errors" "fmt" + "io/ioutil" "log" "time" @@ -49,6 +50,15 @@ func (s *StepCreateServerInstance) createServerInstance(loginKeyName string, zon reqParams.UserData = s.Config.UserData } + if s.Config.UserDataFile != "" { + contents, err := ioutil.ReadFile(s.Config.UserDataFile) + if err != nil { + return "", fmt.Errorf("Problem reading user data file: %s", err) + } + + reqParams.UserData = string(contents) + } + if s.Config.AccessControlGroupConfigurationNo != "" { reqParams.AccessControlGroupConfigurationNoList = []string{s.Config.AccessControlGroupConfigurationNo} }