community.aws.ec2_lc (1.1.0) — module

Create or delete AWS Autoscaling Launch Configurations

| "added in version" 1.0.0 of community.aws"

Authors: Gareth Rushgrove (@garethr), Willem van Ketwich (@wilvk)

Install collection

Install with ansible-galaxy collection install community.aws:==1.1.0


Add to requirements.yml

  collections:
    - name: community.aws
      version: 1.1.0

Description

Can create or delete AWS Autoscaling Configurations.

Works with the ec2_asg module to manage Autoscaling Groups.


Requirements

Usage examples

  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.

# create a launch configuration using an AMI image and instance type as a basis

- name: note that encrypted volumes are only supported in >= Ansible 2.4
  community.aws.ec2_lc:
    name: special
    image_id: ami-XXX
    key_name: default
    security_groups: ['group', 'group2' ]
    instance_type: t1.micro
    volumes:
    - device_name: /dev/sda1
      volume_size: 100
      volume_type: io1
      iops: 3000
      delete_on_termination: true
      encrypted: true
    - device_name: /dev/sdb
      ephemeral: ephemeral0
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: create a launch configuration using a running instance id as a basis
  community.aws.ec2_lc:
    name: special
    instance_id: i-00a48b207ec59e948
    key_name: default
    security_groups: ['launch-wizard-2' ]
    volumes:
    - device_name: /dev/sda1
      volume_size: 120
      volume_type: io1
      iops: 3000
      delete_on_termination: true
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: create a launch configuration to omit the /dev/sdf EBS device that is included in the AMI image
  community.aws.ec2_lc:
    name: special
    image_id: ami-XXX
    key_name: default
    security_groups: ['group', 'group2' ]
    instance_type: t1.micro
    volumes:
    - device_name: /dev/sdf
      no_device: true
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Use EBS snapshot ID for volume
  block:
  - name: Set Volume Facts
    ansible.builtin.set_fact:
      volumes:
      - device_name: /dev/sda1
        volume_size: 20
        ebs:
          snapshot: snap-XXXX
          volume_type: gp2
          delete_on_termination: true
          encrypted: no

  - name: Create launch configuration
    community.aws.ec2_lc:
      name: lc1
      image_id: ami-xxxx
      assign_public_ip: yes
      instance_type: t2.medium
      key_name: my-key
      security_groups: "['sg-xxxx']"
      volumes: "{{ volumes }}"
    register: lc_info

Inputs

    
name:
    description:
    - Unique name for configuration.
    required: true
    type: str

state:
    choices:
    - present
    - absent
    default: present
    description:
    - Register or deregister the instance.
    type: str

region:
    aliases:
    - aws_region
    - ec2_region
    description:
    - The AWS region to use.
    - For global services such as IAM, Route53 and CloudFront, I(region) is ignored.
    - The C(AWS_REGION) or C(EC2_REGION) environment variables may also be used.
    - See the Amazon AWS documentation for more information U(http://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region).
    - The C(ec2_region) alias has been deprecated and will be removed in a release after
      2024-12-01
    - Support for the C(EC2_REGION) environment variable has been deprecated and will
      be removed in a release after 2024-12-01.
    type: str

vpc_id:
    description:
    - VPC ID, used when resolving security group names to IDs.
    type: str

profile:
    aliases:
    - aws_profile
    description:
    - A named AWS profile to use for authentication.
    - See the AWS documentation for more information about named profiles U(https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html).
    - The C(AWS_PROFILE) environment variable may also be used.
    - The I(profile) option is mutually exclusive with the I(aws_access_key), I(aws_secret_key)
      and I(security_token) options.
    type: str

volumes:
    description:
    - A list dictionaries defining the volumes to create.
    - For any volume, a volume size less than 1 will be interpreted as a request not to
      create the volume.
    elements: dict
    suboptions:
      delete_on_termination:
        default: false
        description:
        - Whether the volume should be automatically deleted when the instance is terminated.
        type: bool
      device_name:
        description:
        - The name for the volume (For example C(/dev/sda)).
        required: true
        type: str
      encrypted:
        default: false
        description:
        - Whether the volume should be encrypted using the 'aws/ebs' KMS CMK.
        type: bool
      ephemeral:
        description:
        - Whether the volume should be ephemeral.
        - Data on ephemeral volumes is lost when the instance is stopped.
        - Mutually exclusive with the I(snapshot) parameter.
        type: str
      iops:
        description:
        - The number of IOPS per second to provision for the volume.
        - Required when I(volume_type=io1).
        type: int
      no_device:
        description:
        - When I(no_device=true) the device will not be created.
        type: bool
      snapshot:
        description:
        - The ID of an EBS snapshot to copy when creating the volume.
        - Mutually exclusive with the I(ephemeral) parameter.
        type: str
      volume_size:
        description:
        - The size of the volume (in GiB).
        - Required unless one of I(ephemeral), I(snapshot) or I(no_device) is set.
        type: int
      volume_type:
        description:
        - The type of volume to create.
        - See U(https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html)
          for more information on the available volume types.
        type: str
    type: list

image_id:
    description:
    - The AMI unique identifier to be used for the group.
    type: str

key_name:
    description:
    - The SSH key name to be used for access to managed instances.
    type: str

kernel_id:
    description:
    - Kernel id for the EC2 instance.
    type: str

user_data:
    description:
    - Opaque blob of data which is made available to the ec2 instance. Mutually exclusive
      with I(user_data_path).
    type: str

access_key:
    aliases:
    - aws_access_key_id
    - aws_access_key
    - ec2_access_key
    description:
    - AWS access key ID.
    - See the AWS documentation for more information about access tokens U(https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys).
    - The C(AWS_ACCESS_KEY_ID), C(AWS_ACCESS_KEY) or C(EC2_ACCESS_KEY) environment variables
      may also be used in decreasing order of preference.
    - The I(aws_access_key) and I(profile) options are mutually exclusive.
    - The I(aws_access_key_id) alias was added in release 5.1.0 for consistency with the
      AWS botocore SDK.
    - The I(ec2_access_key) alias has been deprecated and will be removed in a release
      after 2024-12-01.
    - Support for the C(EC2_ACCESS_KEY) environment variable has been deprecated and will
      be removed in a release after 2024-12-01.
    type: str

aws_config:
    description:
    - A dictionary to modify the botocore configuration.
    - Parameters can be found in the AWS documentation U(https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html#botocore.config.Config).
    type: dict

ramdisk_id:
    description:
    - A RAM disk id for the instances.
    type: str

secret_key:
    aliases:
    - aws_secret_access_key
    - aws_secret_key
    - ec2_secret_key
    description:
    - AWS secret access key.
    - See the AWS documentation for more information about access tokens U(https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys).
    - The C(AWS_SECRET_ACCESS_KEY), C(AWS_SECRET_KEY), or C(EC2_SECRET_KEY) environment
      variables may also be used in decreasing order of preference.
    - The I(secret_key) and I(profile) options are mutually exclusive.
    - The I(aws_secret_access_key) alias was added in release 5.1.0 for consistency with
      the AWS botocore SDK.
    - The I(ec2_secret_key) alias has been deprecated and will be removed in a release
      after 2024-12-01.
    - Support for the C(EC2_SECRET_KEY) environment variable has been deprecated and will
      be removed in a release after 2024-12-01.
    type: str

spot_price:
    description:
    - The spot price you are bidding. Only applies for an autoscaling group with spot
      instances.
    type: float

instance_id:
    description:
    - The Id of a running instance to use as a basis for a launch configuration. Can be
      used in place of I(image_id) and I(instance_type).
    type: str

endpoint_url:
    aliases:
    - ec2_url
    - aws_endpoint_url
    - s3_url
    description:
    - URL to connect to instead of the default AWS endpoints.  While this can be used
      to connection to other AWS-compatible services the amazon.aws and community.aws
      collections are only tested against AWS.
    - The  C(AWS_URL) or C(EC2_URL) environment variables may also be used, in decreasing
      order of preference.
    - The I(ec2_url) and I(s3_url) aliases have been deprecated and will be removed in
      a release after 2024-12-01.
    - Support for the C(EC2_URL) environment variable has been deprecated and will be
      removed in a release after 2024-12-01.
    type: str

aws_ca_bundle:
    description:
    - The location of a CA Bundle to use when validating SSL certificates.
    - The C(AWS_CA_BUNDLE) environment variable may also be used.
    type: path

ebs_optimized:
    default: false
    description:
    - Specifies whether the instance is optimized for EBS I/O (true) or not (false).
    type: bool

instance_type:
    description:
    - Instance type to use for the instance.
    - Required when creating a new Launch Configuration.
    type: str

session_token:
    aliases:
    - aws_session_token
    - security_token
    - aws_security_token
    - access_token
    description:
    - AWS STS session token for use with temporary credentials.
    - See the AWS documentation for more information about access tokens U(https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys).
    - The C(AWS_SESSION_TOKEN), C(AWS_SECURITY_TOKEN) or C(EC2_SECURITY_TOKEN) environment
      variables may also be used in decreasing order of preference.
    - The I(security_token) and I(profile) options are mutually exclusive.
    - Aliases I(aws_session_token) and I(session_token) were added in release 3.2.0, with
      the parameter being renamed from I(security_token) to I(session_token) in release
      6.0.0.
    - The I(security_token), I(aws_security_token), and I(access_token) aliases have been
      deprecated and will be removed in a release after 2024-12-01.
    - Support for the C(EC2_SECRET_KEY) and C(AWS_SECURITY_TOKEN) environment variables
      has been deprecated and will be removed in a release after 2024-12-01.
    type: str

user_data_path:
    description:
    - Path to the file that contains userdata for the ec2 instances. Mutually exclusive
      with I(user_data).
    type: path

validate_certs:
    default: true
    description:
    - When set to C(false), SSL certificates will not be validated for communication with
      the AWS APIs.
    - Setting I(validate_certs=false) is strongly discouraged, as an alternative, consider
      setting I(aws_ca_bundle) instead.
    type: bool

security_groups:
    description:
    - A list of security groups to apply to the instances. Since version 2.4 you can specify
      either security group names or IDs or a mix.  Previous to 2.4, for VPC instances,
      specify security group IDs and for EC2-Classic, specify either security group names
      or IDs.
    elements: str
    type: list

assign_public_ip:
    description:
    - Used for Auto Scaling groups that launch instances into an Amazon Virtual Private
      Cloud. Specifies whether to assign a public IP address to each instance launched
      in a Amazon VPC.
    type: bool

placement_tenancy:
    choices:
    - default
    - dedicated
    description:
    - Determines whether the instance runs on single-tenant hardware or not.
    - When not set AWS will default to C(default).
    type: str

classic_link_vpc_id:
    description:
    - Id of ClassicLink enabled VPC
    type: str

instance_monitoring:
    default: false
    description:
    - Specifies whether instances are launched with detailed monitoring.
    type: bool

instance_profile_name:
    description:
    - The name or the Amazon Resource Name (ARN) of the instance profile associated with
      the IAM role for the instances.
    type: str

associate_public_ip_address:
    description:
    - The I(associate_public_ip_address) option does nothing and will be removed after
      2022-06-01
    type: bool

debug_botocore_endpoint_logs:
    default: false
    description:
    - Use a C(botocore.endpoint) logger to parse the unique (rather than total) C("resource:action")
      API calls made during a task, outputing the set to the resource_actions key in the
      task results. Use the C(aws_resource_action) callback to output to total list made
      during a playbook.
    - The C(ANSIBLE_DEBUG_BOTOCORE_LOGS) environment variable may also be used.
    type: bool

classic_link_vpc_security_groups:
    description:
    - A list of security group IDs with which to associate the ClassicLink VPC instances.
    elements: str
    type: list

Outputs

arn:
  description: The Amazon Resource Name of the launch configuration.
  returned: when I(state=present)
  sample: arn:aws:autoscaling:us-east-1:148830907657:launchConfiguration:888d9b58-d93a-40c4-90cf-759197a2621a:launchConfigurationName/launch_config_name
  type: str
changed:
  description: Whether the state of the launch configuration has changed.
  returned: always
  sample: false
  type: bool
created_time:
  description: The creation date and time for the launch configuration.
  returned: when I(state=present)
  sample: '2017-11-03 23:46:44.841000'
  type: str
image_id:
  description: The ID of the Amazon Machine Image used by the launch configuration.
  returned: when I(state=present)
  sample: ami-9be6f38c
  type: str
instance_type:
  description: The instance type for the instances.
  returned: when I(state=present)
  sample: t1.micro
  type: str
name:
  description: The name of the launch configuration.
  returned: when I(state=present)
  sample: launch_config_name
  type: str
result:
  contains:
    PlacementTenancy:
      description: The tenancy of the instances, either default or dedicated.
      returned: when I(state=present)
      sample: default
      type: str
    associate_public_ip_address:
      description: (EC2-VPC) Indicates whether to assign a public IP address to each
        instance.
      returned: when I(state=present)
      sample: false
      type: bool
    block_device_mappings:
      contains:
        device_name:
          description: The device name exposed to the EC2 instance (for example, /dev/sdh
            or xvdh).
          returned: when I(state=present)
          sample: /dev/sda1
          type: str
        ebs:
          contains:
            snapshot_id:
              description: The ID of the snapshot.
              returned: when I(state=present)
              type: str
            volume_size:
              description: The volume size, in GiB.
              returned: when I(state=present)
              sample: '100'
              type: str
          description: The information about the Amazon EBS volume.
          returned: when I(state=present)
          type: complex
        virtual_name:
          description: The name of the virtual device (for example, ephemeral0).
          returned: when I(state=present)
          sample: ephemeral0
          type: str
      description: A block device mapping, which specifies the block devices.
      returned: when I(state=present)
      type: complex
    classic_link_vpc_id:
      description: The ID of a ClassicLink-enabled VPC to link your EC2-Classic instances
        to.
      returned: when I(state=present)
      type: str
    classic_link_vpc_security_groups:
      description: The IDs of one or more security groups for the VPC specified in
        ClassicLinkVPCId.
      returned: when I(state=present)
      sample: []
      type: list
    created_time:
      description: The creation date and time for the launch configuration.
      returned: when I(state=present)
      sample: '2017-11-03 23:46:44.841000'
      type: str
    delete_on_termination:
      description: Indicates whether the volume is deleted on instance termination.
      returned: when I(state=present)
      sample: true
      type: bool
    ebs_optimized:
      description: Indicates whether the instance is optimized for EBS I/O (true)
        or not (false).
      returned: when I(state=present)
      sample: false
      type: bool
    image_id:
      description: The ID of the Amazon Machine Image used by the launch configuration.
      returned: when I(state=present)
      sample: ami-9be6f38c
      type: str
    instance_monitoring:
      description: Indicates whether instances in this group are launched with detailed
        (true) or basic (false) monitoring.
      returned: when I(state=present)
      sample: true
      type: bool
    instance_profile_name:
      description: The name or Amazon Resource Name (ARN) of the instance profile
        associated with the IAM role for the instance.
      returned: when I(state=present)
      sample: null
      type: str
    instance_type:
      description: The instance type for the instances.
      returned: when I(state=present)
      sample: t1.micro
      type: str
    iops:
      description: The number of I/O operations per second (IOPS) to provision for
        the volume.
      returned: when I(state=present)
      type: int
    kernel_id:
      description: The ID of the kernel associated with the AMI.
      returned: when I(state=present)
      sample: ''
      type: str
    key_name:
      description: The name of the key pair.
      returned: when I(state=present)
      sample: testkey
      type: str
    launch_configuration_arn:
      description: The Amazon Resource Name (ARN) of the launch configuration.
      returned: when I(state=present)
      sample: arn:aws:autoscaling:us-east-1:148830907657:launchConfiguration:888d9b58-d93a-40c4-90cf-759197a2621a:launchConfigurationName/launch_config_name
      type: str
    member:
      description: ''
      returned: when I(state=present)
      sample: "\n      "
      type: str
    name:
      description: The name of the launch configuration.
      returned: when I(state=present)
      sample: launch_config_name
      type: str
    ramdisk_id:
      description: The ID of the RAM disk associated with the AMI.
      returned: when I(state=present)
      sample: ''
      type: str
    security_groups:
      description: The security groups to associate with the instances.
      returned: when I(state=present)
      sample:
      - sg-5e27db2f
      type: list
    spot_price:
      description: The price to bid when launching Spot Instances.
      returned: when I(state=present)
      type: float
    use_block_device_types:
      description: Indicates whether to suppress a device mapping.
      returned: when I(state=present)
      sample: false
      type: bool
    user_data:
      description: The user data available to the instances.
      returned: when I(state=present)
      sample: ''
      type: str
    volume_type:
      description: The volume type (one of standard, io1, gp2).
      returned: when I(state=present)
      sample: io1
      type: str
  description: The specification details for the launch configuration.
  returned: when I(state=present)
  type: complex
security_groups:
  description: The security groups to associate with the instances.
  returned: when I(state=present)
  sample:
  - sg-5e27db2f
  type: list