What is the difference between a launch template and a launch Configuration?

55    Asked by CsabaToth in AWS , Asked on Mar 20, 2024

I am a DevOps engineer and I am currently tasked with architecting the deployment strategy for a cloud-based native application hosted on AWS. However, I am confused about using between launch template and launch Configuration for my auto-scaling group. What are the differences between these two? 

Answered by Deepa bhawana

 In the context of AWS, you can decide between both two by considering several factors:-

Flexibility

Launch templates can offer more flexibility as compared to launch Configuration in areas like instance types, block device mapping, network configurations, etc.

Versions and updates

Launch template support versioning which would allow you to create multiple versions of a template. On the other hand, the launch Configuration doesn’t support versioning.

API support

Both launch template and Configuration can be managed by using the tool AWS management console, CLI, or SDK. However, the launch template can offer more versatility and additional capabilities.

Therefore, you should choose to use the launch template over the launch Configuration. Here is a simple example given in Python programming language by using Boto3 to create an ASG with a launch template:-

Import boto3
# Create a launch template
Ec2_client = boto3.client(‘ec2’)
Response = ec2_client.create_launch_template(
    LaunchTemplateName=’my-launch-template’,
    VersionDescription=’Initial version’,
    LaunchTemplateData={
        ‘InstanceType’: ‘t2.micro’,
        ‘ImageId’: ‘ami-12345678’,
        ‘SecurityGroupIds’: [‘sg-12345678’],
        # Other instance configurations…
    }
)
# Use the launch template to create an Auto Scaling Group
Autoscaling_client = boto3.client(‘autoscaling’)
Response = autoscaling_client.create_auto_scaling_group(
    AutoScalingGroupName=’my-asg’,
    LaunchTemplate={
        ‘LaunchTemplateName’: ‘my-launch-template’,
        ‘Version’: ‘$Latest’ # Use the latest version of the launch template
    },
    MinSize=1,
    MaxSize=10,
    DesiredCapacity=1
)
Import boto3
# Create a connection to the Auto Scaling service
Client = boto3.client(‘autoscaling’)
# Define launch configuration parameters
Launch_configuration_name = ‘my-launch-config’
Ami_id = ‘ami-12345678’ # The ID of the Amazon Machine Image (AMI) to use
Instance_type = ‘t2.micro’ # The instance type
Key_name = ‘my-keypair’ # The name of the EC2 key pair
Security_groups = [‘my-security-group’] # List of security group IDs
Here is an example given of the launch configuration:-
# Create the launch configuration
Response = client.create_launch_configuration(
    LaunchConfigurationName=launch_configuration_name,
    ImageId=ami_id,
    InstanceType=instance_type,
    KeyName=key_name,
    SecurityGroups=security_groups,
    InstanceMonitoring={‘Enabled’: False}, # Disable detailed instance monitoring
    UserData=’’’#!/bin/bash
                Echo “Hello, world!” > /tmp/hello.txt’’’, # User data script
    InstanceProfileName=’my-instance-profile’ # IAM instance profile name
)
Print(“Launch configuration created:”, response)

Your Answer

Interviews

Parent Categories