func resourceAwsLaunchConfigurationCreate(d *schema.ResourceData, meta interface{}) error { autoscalingconn := meta.(*AWSClient).autoscalingconn var createLaunchConfigurationOpts autoscaling.CreateLaunchConfiguration createLaunchConfigurationOpts.Name = d.Get("name").(string) createLaunchConfigurationOpts.IamInstanceProfile = d.Get("iam_instance_profile").(string) createLaunchConfigurationOpts.ImageId = d.Get("image_id").(string) createLaunchConfigurationOpts.InstanceType = d.Get("instance_type").(string) createLaunchConfigurationOpts.KeyName = d.Get("key_name").(string) createLaunchConfigurationOpts.UserData = d.Get("user_data").(string) createLaunchConfigurationOpts.AssociatePublicIpAddress = d.Get("associate_public_ip_address").(bool) if v, ok := d.GetOk("security_groups"); ok { createLaunchConfigurationOpts.SecurityGroups = expandStringList( v.(*schema.Set).List()) } log.Printf("[DEBUG] autoscaling create launch configuration: %#v", createLaunchConfigurationOpts) _, err := autoscalingconn.CreateLaunchConfiguration(&createLaunchConfigurationOpts) if err != nil { return fmt.Errorf("Error creating launch configuration: %s", err) } d.SetId(d.Get("name").(string)) log.Printf("[INFO] launch configuration ID: %s", d.Id()) // We put a Retry here since sometimes eventual consistency bites // us and we need to retry a few times to get the LC to load properly return resource.Retry(30*time.Second, func() error { return resourceAwsLaunchConfigurationRead(d, meta) }) }
func resource_aws_launch_configuration_create( s *terraform.ResourceState, d *terraform.ResourceDiff, meta interface{}) (*terraform.ResourceState, error) { p := meta.(*ResourceProvider) autoscalingconn := p.autoscalingconn // Merge the diff into the state so that we have all the attributes // properly. rs := s.MergeDiff(d) var err error createLaunchConfigurationOpts := autoscaling.CreateLaunchConfiguration{} if rs.Attributes["image_id"] != "" { createLaunchConfigurationOpts.ImageId = rs.Attributes["image_id"] } if rs.Attributes["instance_type"] != "" { createLaunchConfigurationOpts.InstanceType = rs.Attributes["instance_type"] } if rs.Attributes["instance_id"] != "" { createLaunchConfigurationOpts.InstanceId = rs.Attributes["instance_id"] } if rs.Attributes["key_name"] != "" { createLaunchConfigurationOpts.KeyName = rs.Attributes["key_name"] } if err != nil { return nil, fmt.Errorf("Error parsing configuration: %s", err) } if _, ok := rs.Attributes["security_groups.#"]; ok { createLaunchConfigurationOpts.SecurityGroups = expandStringList(flatmap.Expand( rs.Attributes, "security_groups").([]interface{})) } if rs.Attributes["user_data"] != "" { createLaunchConfigurationOpts.UserData = rs.Attributes["user_data"] } createLaunchConfigurationOpts.Name = rs.Attributes["name"] log.Printf("[DEBUG] autoscaling create launch configuration: %#v", createLaunchConfigurationOpts) _, err = autoscalingconn.CreateLaunchConfiguration(&createLaunchConfigurationOpts) if err != nil { return nil, fmt.Errorf("Error creating launch configuration: %s", err) } rs.ID = rs.Attributes["name"] log.Printf("[INFO] launch configuration ID: %s", rs.ID) g, err := resource_aws_launch_configuration_retrieve(rs.ID, autoscalingconn) if err != nil { return rs, err } return resource_aws_launch_configuration_update_state(rs, g) }