Hi Michael,

Thanks for your help.
... I am not sure to understand though ...

I tried to copy the example given on doc.ansible.com:
local_action:
    module: ec2
    keypair: mykey
    group: webserver
    instance_type: m1.large
    image: ami-6e649707
    wait: yes
    wait_timeout: 500
    volumes:
    - device_name: /dev/sdb
      snapshot: snap-abcdef12
      device_type: io1
      iops: 1000
      volume_size: 100
and I get the following error:

ERROR: parse error: playbooks must be formatted as a YAML list, got <type 
'dict'>


Then I tried with

volumes: [{ device_name: '/dev/sda1', volume_size: '10' }, { device_name: 
'/dev/xvdf', ephemeral: 'ephemeral0' }, { device_name: '/dev/xvdg', 
volume_size: '25'}]

and

volumes:
        - { device_name: '/dev/sda1', volume_size: '10' }, 
        - { device_name: '/dev/xvdf', ephemeral: 'ephemeral0' }
        - { device_name: '/dev/xvdg', volume_size: '25'}

And with both, I get:

msg: this module requires key=value arguments (['key_name=GenericLinux', 
'image=ami-75342c01', 'instance_type=m1.small', 
'vpc_subnet_id=subnet-81407bf5', 'user_data={shortname:test4, 
hostname:test4.aws.onlotaris.com}', 'wait_timeout=500', 
'private_ip=172.16.4.100', 'wait=yes', 'group=default', 'count=1', 
'state=present', 'instance_tags={"Name":"test4"}', 'volumes=[{volume_size:', 
'10,', 'device_name:', '/dev/sda1},', '{ephemeral:', 'ephemeral0,', 
'device_name:', '/dev/xvdf},', '{volume_size:', '25,', 'device_name:', 
'/dev/xvdg}]'])

Thanks in advance.

Fred

On Feb 18, 2014, at 14:48 , Michael DeHaan <[email protected]> wrote:

> When using the ec2 module it's almost always easier to use the complex 
> arguments style as shown in the examples.
> 
> If you are going to pass typed data to modules (like "volumes"), that is 
> going to be required.
> 
> 
> 
> 
> On Tue, Feb 18, 2014 at 7:57 AM, Fred Badel <[email protected]> wrote:
> Hello,
> 
> I am trying to create an ec2 instance with specific volumes requirement ... 
> but I keep getting a "this module requires key=value arguments" error message.
> Looking closer at ansible output (see below), it looks like the 
> single-quoting of the volumes parameter is a little bit "fancy"...
> 
> Am I doing something wrong? 
> 
> ---
> - hosts: 127.0.0.1
>   connection: local
>   gather_facts: True
>   vars:
>       volumes:
>       - device_name: /dev/sda1
>         volume_size: 10
>       - device_name: /dev/xvdf
>         ephemeral: ephemeral0
>       - device_name: /dev/xvdg
>         volume_size: 25
>       keypair: ec2key
>       image: ami-xxx
>       dnsdomain: domain.com
>   vars_prompt:
>       hostname: "What is this instance hostname?"
>       subnet: "What is this instance subnet?"
>       ip: "What is this instance ip?"
>       group: "Provide a list of group name"
>       instance_type: "Provide the instance type"
>   tasks:
>       - name: create instance
>         ec2: key_name={{ keypair }} image={{ image }} instance_type={{ 
> instance_type }} vpc_subnet_id={{ subnet }} user_data='{"shortname":"{{ 
> hostname }}", "hostname":"{{ hostname }}.{{ dnsdomain }}"}' wait_timeout=500 
> private_ip={{ ip }} wait=yes group={{ group }} count=1 state=present 
> volumes={{ volumes }}
> 
> 
> 
> <127.0.0.1> REMOTE_MODULE ec2 key_name=ec2key image=ami-xxx 
> instance_type=m1.small vpc_subnet_id=subnet-xxx 
> user_data='{"shortname":"test4", "hostname":"test4.domain.com"}' 
> wait_timeout=500 private_ip=172.16.4.100 wait=yes group="['default', 'J2EE']" 
> count=1 state=present volumes=[{'volume_size': 10, 'device_name': 
> '/dev/sda1'}, {'ephemeral': 'ephemeral0', 'device_name': '/dev/xvdf'}, 
> {'volume_size': 25, 'device_name': '/dev/xvdg'}]
> <127.0.0.1> EXEC ['/bin/sh', '-c', 'mkdir -p 
> $HOME/.ansible/tmp/ansible-tmp-1392727140.89-11533654997021 && chmod a+rx 
> $HOME/.ansible/tmp/ansible-tmp-1392727140.89-11533654997021 && echo 
> $HOME/.ansible/tmp/ansible-tmp-1392727140.89-11533654997021']
> <127.0.0.1> PUT /var/folders/38/_r_kpxbd4cvfq_9qdvkb0jd40000gn/T/tmpapBeCB TO 
> /Users/fred/.ansible/tmp/ansible-tmp-1392727140.89-11533654997021/ec2
> <127.0.0.1> EXEC ['/bin/sh', '-c', 
> '/usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python
>  /Users/fred/.ansible/tmp/ansible-tmp-1392727140.89-11533654997021/ec2; rm 
> -rf /Users/fred/.ansible/tmp/ansible-tmp-1392727140.89-11533654997021/ 
> >/dev/null 2>&1']
> failed: [127.0.0.1] => {"failed": true}
> msg: this module requires key=value arguments (['key_name=ec2key', 
> 'image=ami-xxx', 'instance_type=m1.small', 'vpc_subnet_id=subnet-xxx', 
> 'user_data={"shortname":"test4", "hostname":"test4.domain.com"}', 
> 'wait_timeout=500', 'private_ip=172.16.4.100', 'wait=yes', "group=['default', 
> 'J2EE']", 'count=1', 'state=present', 'volumes=[{volume_size:', '10,', 
> 'device_name:', '/dev/sda1},', '{ephemeral:', 'ephemeral0,', 'device_name:', 
> '/dev/xvdf},', '{volume_size:', '25,', 'device_name:', '/dev/xvdg}]'])
> 
> FATAL: all hosts have already failed -- aborting
> 
> 
> ansible-playbook --version
> ansible-playbook 1.5 (devel 7e23ed345f) last updated 2014/02/18 12:15:46 (GMT 
> +200)
> 
> Thanks for your advices!
> 
> Fred
> 
> -- 
> 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].
> For more options, visit https://groups.google.com/groups/opt_out.
> 
> 
> -- 
> 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].
> For more options, visit https://groups.google.com/groups/opt_out.

-- 
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].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to