True, but a custom module that deletes launch configs without images seems
less clean than a custom module that returns launch config facts that you
could then iterate over:
- local_action:
module: ec2_lc_facts
... credentials
register: launch_configs
- local_action:
module: ec2_lc
name: "{{item.name}}"
... credentials
state: absent
with_items: launch_configs
when: item.image != ami_facts.images[0]
I'd favour adding a list state to ec2_lc rather than a custom ec2_lc_facts
module (and similarly for ec2_ami), but you're right, similar
implementations have not made it through the pull review process. (Although
ec2_vol and rds have similar capability)
On Tuesday, September 2, 2014 12:21:03 PM UTC+10, Scott Anderson wrote:
>
> That’s the rub… the “just a matter of” is the piece that the custom module
> does. :-)
>
> -scott
>
> On Sep 1, 2014, at 10:18 PM, Will Thames <[email protected] <javascript:>>
> wrote:
>
> I don't think you need a custom launch config cleanup module - but I
> understand you do need a way to tell it what launchconfigs to cleanup
>
> ec2_lc already has state=delete
> https://github.com/ansible/ansible/blob/devel/library/cloud/ec2_lc#L225
>
> then it's just a matter of determining the names of the launchconfigs that
> need deleting.
>
> Will
>
> On Friday, August 29, 2014 10:34:13 PM UTC+10, Scott Anderson wrote:
>>
>> Here’s my cleanup script and the relevant part of a module I use to do
>> this.
>>
>> If there’s interest I can PR the module.
>>
>> def delete_launch_configs(asg_connection, ec2_connection, module):
>> changed = False
>>
>> launch_configs = asg_connection.get_all_launch_configurations()
>>
>> # Delete all launch configurations that no longer have an attendant
>> AMI
>> for config in launch_configs:
>> image_id = config.image_id
>> images = ec2_connection.get_all_images(image_ids=[image_id])
>>
>> if not images:
>> config.delete()
>> changed = True
>>
>>
>> tasks:
>> - name: Obtain list of existing backup AMIs
>> local_action:
>> module: ec2_ami_facts
>> description: "{{ ami_image_name }}-backup"
>> tags:
>> environment: "{{ app_environment }}"
>> sorts:
>> - "-name"
>> region: "{{ vpc_region }}"
>> aws_access_key: "{{ aws_access_key }}"
>> aws_secret_key: "{{ aws_secret_key }}"
>> register: ami_facts
>> ignore_errors: yes
>>
>> - name: Remove all but the most recent backup AMI
>> local_action:
>> module: ec2_ami
>> image_id: "{{ item.id }}"
>> state: absent
>> delete_snapshot: yes
>> region: "{{ vpc_region }}"
>> aws_access_key: "{{ aws_access_key }}"
>> aws_secret_key: "{{ aws_secret_key }}"
>> with_items: ami_facts.images[1:]
>>
>> - name: Remove all launch configurations whose AMIs no longer exist
>> local_action:
>> module: ec2_lc_cleanup
>> region: "{{ vpc_region }}"
>> aws_access_key: "{{ aws_access_key }}"
>> aws_secret_key: "{{ aws_secret_key }}"
>>
>>
>> ec2_ami_facts is used to enumerate the AMIs that I want to delete. It’s
>> in a PR somewhere but was turned down for inclusion in core.
>>
>> Regards,
>> -scott
>>
>> On Aug 29, 2014, at 8:27 AM, Arangel Angov <[email protected]> wrote:
>>
>> Thanks for the suggestion, that's what I ended up doing.
>>
>> Now to figure out how to delete all my old launch configurations.
>>
>> -Arangel
>>
>> On 08/15/2014 07:19 PM, Scott Anderson wrote:
>>
>> Basically you just need to create a new launch configuration and then
>> update it in the autoscaling group. Any new instances created in the
>> autoscaling group will then use the new launch configuration.
>>
>> Regards,
>> -scott
>>
>>
>> On Friday, August 15, 2014 7:32:36 AM UTC-4, Arangel Angov wrote:
>>>
>>> Hi,
>>>
>>> I've been playing with EC2 autoscaling for a while and my goal is to
>>> start an instance update it and then save it to an AMI or use the
>>> instance AMI id in a launch configuration tied to an auto scaling group
>>> so that I have my instance up to date all the time and ready for
>>> scaling.
>>>
>>> So I wanted to update the launch configuration using ec2_lc so that I
>>> either use the newly generated AMI image or the image_id of the running
>>> instance. The first doesn't work cause if I want to update the lc I
>>> actually need to delete both autoscaling group and lc (and this is not
>>> acceptable cause I have production instances running in the auto scaling
>>> group, so deleting it will terminate those instances). The second
>>> approach doesn't really work also cause I guess the ec2_lc module
>>> doesn't support updating the lc or using the instance_id of my updated
>>> instance in the lc, which is something that ec2 supports
>>> (
>>> http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/create-lc-with-instanceID.html).
>>>
>>>
>>>
>>> I could use the ec2 tools inside ansible but just wanted to see if
>>> anyone had this issue before and how you solved it - without using Tower
>>> of course. :)
>>>
>>> Thanks.
>>>
>>> -Arangel
>>>
>>> --
>>> *Disclaimer*
>>>
>>> This email is really important (well, most of them are.). Also,
>>> hopefully
>>> the message has been sent to the person it’s intended for. If we stuffed
>>> up
>>> by entering the wrong email address, we’re very sorry for cluttering up
>>> your inbox. But if we have done that, then please do us a favour and let
>>> us
>>> know…and if you could keep the juicy bits to yourself, that would be
>>> great
>>> too.
>>>
>>> Also…stuff that’s said in this message are the views of the person
>>> writing
>>> the email and do not actually represent the views of Gramble World
>>> (although they might, but we’re just hedging our bets here). Don’t think
>>> for one minute that anything in this message should be construed as
>>> creating a contract.
>>>
>>> Gramble World owns the email infrastructure, including the contents.
>>>
>>> Finally…do the right thing by the environment and “think before you
>>> ink”!
>>>
>>> **********************************************************************
>>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Ansible Project" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To post to this group, send email to [email protected].
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/ansible-project/1b5356d1-3ed7-4418-b2d7-051644b2942d%40googlegroups.com
>>
>> <https://groups.google.com/d/msgid/ansible-project/1b5356d1-3ed7-4418-b2d7-051644b2942d%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>>
>>
>> --
>>
>> Arangel Angov
>>
>> Systems Operations
>> M: +31 61 77 48 210
>>
>>
>> <get_social.png>
>> <http___s2.gramble.com
>> _images_icons_email_social-media-icons_Gramble_32x3....png> <http___s2.
>> gramble.com_images_icons_email_social-media-icons_twitter_32X3....png>
>> <http___s2.gramble.com
>> _images_icons_email_social-media-icons_facebook_32x....png>
>> <social-media-icons_linkedin_32x32.png> <http___s2.gramble.com
>> _images_icons_email_social-media-icons_instagram_32....png> <http___s2.
>> gramble.com_images_icons_email_social-media-icons_googleplus_3....png>
>>
>> *Disclaimer*
>>
>> This email is really important (well, most of them are.). Also, hopefully
>> the message has been sent to the person it’s intended for. If we stuffed up
>> by entering the wrong email address, we’re very sorry for cluttering up
>> your inbox. But if we have done that, then please do us a favour and let us
>> know…and if you could keep the juicy bits to yourself, that would be great
>> too.
>>
>> Also…stuff that’s said in this message are the views of the person
>> writing the email and do not actually represent the views of Gramble World
>> (although they might, but we’re just hedging our bets here). Don’t think
>> for one minute that anything in this message should be construed as
>> creating a contract.
>>
>> Gramble World owns the email infrastructure, including the contents.
>>
>> Finally…do the right thing by the environment and “think before you ink”!
>>
>> **********************************************************************
>>
>> --
>> You received this message because you are subscribed to a topic in the
>> Google Groups "Ansible Project" group.
>> To unsubscribe from this topic, visit
>> https://groups.google.com/d/topic/ansible-project/tZhIGnomN_g/unsubscribe
>> .
>> To unsubscribe from this group and all its topics, send an email to
>> [email protected].
>> To post to this group, send email to [email protected].
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/ansible-project/540071A8.9090301%40gramble.com
>>
>> <https://groups.google.com/d/msgid/ansible-project/540071A8.9090301%40gramble.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>>
>>
> --
> You received this message because you are subscribed to a topic in the
> Google Groups "Ansible Project" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/ansible-project/tZhIGnomN_g/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> [email protected] <javascript:>.
> To post to this group, send email to [email protected]
> <javascript:>.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/ansible-project/8afd0618-d774-4c39-ae87-477216dc2352%40googlegroups.com
>
> <https://groups.google.com/d/msgid/ansible-project/8afd0618-d774-4c39-ae87-477216dc2352%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>
>
>
--
You received this message because you are subscribed to the Google Groups
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/369837f1-919f-4ea4-b16f-df94e1247584%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.