# Problems adding ebs\_optimized...

**URL:** <https://forum.ansible.com/t/problems-adding-ebs-optimized/13893>\
**Category:** Ansible Developer\
**Created:** [November 12, 2013, 6:22pm UTC](https://forum.ansible.com/t/problems-adding-ebs-optimized/13893 "2013-11-12T18:22:33Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jon\_Nials](https://avatars.discourse-cdn.com/v4/letter/j/71c47a/32.png) [@Jon\_Nials](https://forum.ansible.com/u/Jon_Nials)\
**Post date:** [November 12, 2013, 6:22pm UTC](https://forum.ansible.com/t/problems-adding-ebs-optimized/13893/1 "2013-11-12T18:22:33Z")

</div>

I’m trying to add ebs optimized support to the ec2 module. My diff file for my naive first pass against devel is below. When I try and test this, I consistent get the following error:

**failed: [localhost] =\> {“failed”: true}**  
**msg: dictionary requested, could not parse JSON or key=value**  
**FATAL: all hosts have already failed – aborting**

The playbook runs just fine without the **ebs\_optimized: yes** stanza.

I’m clearly missing something, but what?

diff --git a/library/cloud/ec2 b/library/cloud/ec2  
index 5945d93..bac9c1c 100644  
— a/library/cloud/ec2  
+++ b/library/cloud/ec2  
@@ -184,6 +184,12 @@ options:  
required: false  
default: ‘present’  
aliases:

- ebs\_optimized:
- version\_added: “1.X”
- description:
- 
  - Support IOPS optimized instances

- default: null
- aliases: 

requirements: [“boto”]  
author: Seth Vidal, Tim Gerla, Lester Wade  
@@ -323,6 +329,7 @@ def get\_instance\_info(inst):  
‘placement’: inst.placement,  
‘kernel’: inst.kernel,  
‘ramdisk’: inst.ramdisk,

- ‘ebs\_optimized’: inst.ebs\_optimized,  
‘launch\_time’: inst.launch\_time,  
‘instance\_type’: inst.instance\_type,  
‘root\_device\_type’: inst.root\_device\_type,  
@@ -380,6 +387,7 @@ def create\_instances(module, ec2):  
vpc\_subnet\_id = module.params.get(‘vpc\_subnet\_id’)  
private\_ip = module.params.get(‘private\_ip’)  
instance\_profile\_name = module.params.get(‘instance\_profile\_name’)
- ebs\_optimized = module.params.get(‘ebs\_optimized’)

# group\_id and group\_name are exclusive of each other

@@ -442,7 +450,8 @@ def create\_instances(module, ec2):  
‘ramdisk\_id’: ramdisk,  
‘subnet\_id’: vpc\_subnet\_id,  
‘private\_ip\_address’: private\_ip,

- ‘user\_data’: user\_data}

- ‘user\_data’: user\_data,
- ‘ebs\_optimized’: ebs\_optimized}

if boto\_supports\_profile\_name\_arg(ec2):  
params[‘instance\_profile\_name’] = instance\_profile\_name  
@@ -607,6 +616,7 @@ def main():  
instance\_profile\_name = dict(),  
instance\_ids = dict(type=‘list’),  
state = dict(default=‘present’),

- ebs\_optimized = dict(type=‘bool’, default=False),  
)  
)

---

<div class="post-metadata">

**Author:** ![Jon\_Nials](https://avatars.discourse-cdn.com/v4/letter/j/71c47a/32.png) [@Jon\_Nials](https://forum.ansible.com/u/Jon_Nials)\
**Post date:** [November 12, 2013, 9:18pm UTC](https://forum.ansible.com/t/problems-adding-ebs-optimized/13893/2 "2013-11-12T21:18:30Z")

</div>

As far as I can tell, the code is failing this check:

\_check\_argument\_types(self)

in lib/ansible/module\_utils/basic.py. I’m not sure why. The format is the same as similar code, the boto instance value is also a bool, etc. Any insight would be gratefully accepted.

-Jon
