Add support for tags parameter to cloudformation module

Expose boto.cloudformation.create_stack() tags parameter. Supplied tags
will be applied to stack and all it's resources on stack creation.
Cannot be updated later (not supported by UpdateStack CloudFormation
API).
This commit is contained in:
Petr Svoboda 2013-09-27 13:21:55 +02:00
parent 0ee236bf57
commit b5ae761070

View file

@ -60,6 +60,12 @@ options:
required: true required: true
default: null default: null
aliases: [] aliases: []
tags:
description:
- Dictionary of tags to associate with stack and it's resources during stack creation. Cannot be updated later.
required: false
default: null
aliases: []
requirements: [ "boto" ] requirements: [ "boto" ]
author: James S. Martin author: James S. Martin
@ -79,6 +85,8 @@ tasks:
DiskType: ephemeral DiskType: ephemeral
InstanceType: m1.small InstanceType: m1.small
ClusterSize: 3 ClusterSize: 3
tags:
Stack: ansible-cloudformation
''' '''
import json import json
@ -163,7 +171,8 @@ def main():
region=dict(aliases=['aws_region', 'ec2_region'], required=True, choices=AWS_REGIONS), region=dict(aliases=['aws_region', 'ec2_region'], required=True, choices=AWS_REGIONS),
state=dict(default='present', choices=['present', 'absent']), state=dict(default='present', choices=['present', 'absent']),
template=dict(default=None, required=True), template=dict(default=None, required=True),
disable_rollback=dict(default=False) disable_rollback=dict(default=False),
tags=dict(default=None)
) )
) )
@ -173,14 +182,15 @@ def main():
template_body = open(module.params['template'], 'r').read() template_body = open(module.params['template'], 'r').read()
disable_rollback = module.params['disable_rollback'] disable_rollback = module.params['disable_rollback']
template_parameters = module.params['template_parameters'] template_parameters = module.params['template_parameters']
tags = module.params['tags']
if not r: if not r:
if 'AWS_REGION' in os.environ: if 'AWS_REGION' in os.environ:
r = os.environ['AWS_REGION'] r = os.environ['AWS_REGION']
elif 'EC2_REGION' in os.environ: elif 'EC2_REGION' in os.environ:
r = os.environ['EC2_REGION'] r = os.environ['EC2_REGION']
# convert the template parameters ansible passes into a tuple for boto # convert the template parameters ansible passes into a tuple for boto
template_parameters_tup = [(k, v) for k, v in template_parameters.items()] template_parameters_tup = [(k, v) for k, v in template_parameters.items()]
@ -203,7 +213,8 @@ def main():
cfn.create_stack(stack_name, parameters=template_parameters_tup, cfn.create_stack(stack_name, parameters=template_parameters_tup,
template_body=template_body, template_body=template_body,
disable_rollback=disable_rollback, disable_rollback=disable_rollback,
capabilities=['CAPABILITY_IAM']) capabilities=['CAPABILITY_IAM'],
tags=tags)
operation = 'CREATE' operation = 'CREATE'
except Exception, err: except Exception, err:
error_msg = boto_exception(err) error_msg = boto_exception(err)