Hi did you get anywhere with this?

I'm trying really hard to get ec2.py to run with a boto profile 
representing a role in which I have assigned to the instance. My motivation 
is very much like yours in which I do not wish to have the creds set as 
environment variables.

Thanks

On Saturday, January 28, 2017 at 12:11:12 AM UTC-6, Ronak Patel wrote:
>
> I wrote a quick ansible playbook to launch a simple ec2 instance but I 
> think I have an issue on how I want to authenticate. 
>
> What I don't want to do is set my aws access/secret keys as env variables 
> since they expire each hour and I need to regenerate the 
> `~/.aws/credentials` file via a script. 
>
> Right now, my ansible playbook looks like this:
>
>     --- # Launch ec2
>     - name: Create ec2 instance
>       hosts: local
>       connection: local
>       gather_facts: false
>       vars:
>         profile: profile_xxxx
>         key_pair: usrxxx
>         region: us-east-1
>         subnet: subnet-38xxxxx
>         security_groups: ['sg-e54xxxx', 'sg-bfcxxxx', 'sg-a9dxxx']
>         image: ami-031xxx
>         instance_type: t2.small
>         num_instances: 1
>         tag_name: ansibletest
>         hdd_volumes:
>         - device_name: /dev/sdf
>           volume_size: 50
>           delete_on_termination: true
>         - device_name: /dev/sdh
>           volume_size: 50
>           delete_on_termination: true
>       tasks:
>         - name: launch ec2
>           ec2:
>             count: 1
>             key_name: "{{ key_pair }}"
>             profile: "{{ profile }}"
>             group_id: "{{ security_groups }}"
>             instance_type: "{{ instance_type }}"
>             image: "{{ image }}"
>             region: "{{ region }}"
>             vpc_subnet_id: "{{ subnet }}"
>             assign_public_ip: false
>             volumes: "{{ hdd_volumes }}"
>             instance_tags:
>               Name: "{{ tag_name }}"
>               ASV: "{{ tag_asv }}"
>               CMDBEnvironment: "{{ tag_cmdbEnv }}"
>               EID: "{{ tag_eid }}"
>               OwnerContact: "{{ tag_eid }}"
>           register: ec2
>         - name: print ec2 vars
>           debug: var=ec
>
> my hosts file is this:
>
>     [local]
>     localhost ansible_python_interpreter=/usr/local/bin/python2.7
>
> I run my playbook like this:
>
>     ansible-playbook -i hosts launchec2.yml -vvv
>
> and then get this back:
>
>     PLAYBOOK: launchec2.yml 
> ********************************************************
>     1 plays in launchec2.yml
>     
>     PLAY [Create ec2 instance] 
> *****************************************************
>     
>     TASK [launch ec2] 
> **************************************************************
>     task path: /Users/usrxxx/Desktop/cloud-jumper/Ansible/launchec2.yml:27
>     Using module file 
> /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ansible/modules/core/cloud/amazon/ec2.py
>     <localhost> ESTABLISH LOCAL CONNECTION FOR USER: usrxxx
>     <localhost> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo 
> ~/.ansible/tmp/ansible-tmp-1485527483.82-106272618422730 `" && echo 
> ansible-tmp-1485527483.82-106272618422730="` echo 
> ~/.ansible/tmp/ansible-tmp-1485527483.82-106272618422730 `" ) && sleep 0'
>     <localhost> PUT 
> /var/folders/cx/_fdv7nkn6dz21798p_bn9dp9ln9sqc/T/tmpnk2rh5 TO 
> /Users/usrxxx/.ansible/tmp/ansible-tmp-1485527483.82-106272618422730/ec2.py
>     <localhost> PUT 
> /var/folders/cx/_fdv7nkn6dz21798p_bn9dp9ln9sqc/T/tmpEpwenH TO 
> /Users/usrxxx/.ansible/tmp/ansible-tmp-1485527483.82-106272618422730/args
>     <localhost> EXEC /bin/sh -c 'chmod u+x 
> /Users/usrxxx/.ansible/tmp/ansible-tmp-1485527483.82-106272618422730/ 
> /Users/usrxxx/.ansible/tmp/ansible-tmp-1485527483.82-106272618422730/ec2.py 
> /Users/usrxxx/.ansible/tmp/ansible-tmp-1485527483.82-106272618422730/args 
> && sleep 0'
>     <localhost> EXEC /bin/sh -c '/usr/bin/env python 
> /Users/usrxxx/.ansible/tmp/ansible-tmp-1485527483.82-106272618422730/ec2.py 
> /Users/usrxxx/.ansible/tmp/ansible-tmp-1485527483.82-106272618422730/args; 
> rm -rf 
> "/Users/usrxxx/.ansible/tmp/ansible-tmp-1485527483.82-106272618422730/" > 
> /dev/null 2>&1 && sleep 0'
>     fatal: [localhost]: FAILED! => {
>         "changed": false, 
>         "failed": true, 
>         "invocation": {
>             "module_name": "ec2"
>         }, 
>         "module_stderr": "usage: ec2.py [-h] [--list] [--host HOST] 
> [--refresh-cache]\n              [--profile BOTO_PROFILE]\nec2.py: error: 
> unrecognized arguments: 
> /Users/usrxxx/.ansible/tmp/ansible-tmp-1485527483.82-106272618422730/args\n", 
>         "module_stdout": "", 
>         "msg": "MODULE FAILURE"
>     }
>     to retry, use: --limit 
> @/Users/usrxxx/Desktop/cloud-jumper/Ansible/launchec2.retry
>     
>     PLAY RECAP 
> *********************************************************************
>     localhost                  : ok=0    changed=0    unreachable=0   
>  failed=1 
>
>
> I noticed in the `ec2.py` file it says this:
>
>     NOTE: This script assumes Ansible is being executed where the 
> environment
>     variables needed for Boto have already been set:
>         export AWS_ACCESS_KEY_ID='AK123'
>         export AWS_SECRET_ACCESS_KEY='abc123'
>     
>     This script also assumes there is an ec2.ini file alongside it.  To 
> specify a
>     different path to ec2.ini, define the EC2_INI_PATH environment 
> variable:
>     
>         export EC2_INI_PATH=/path/to/my_ec2.ini
>     
>     If you're using eucalyptus you need to set the above variables and
>     you need to define:
>     
>         export EC2_URL=http://hostname_of_your_cc:port/services/Eucalyptus
>     
>     If you're using boto profiles (requires boto>=2.24.0) you can choose a 
> profile
>     using the --boto-profile command line argument (e.g. ec2.py 
> --boto-profile prod) or using
>     the AWS_PROFILE variable:
>     
>         AWS_PROFILE=prod ansible-playbook -i ec2.py myplaybook.yml
>
>
> so I ran it like this:
>      
>     AWS_PROFILE=profile_xxxx ansible-playbook -i hosts launchec2.yml -vvv
>
>
> but still got the same results...
>

-- 
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/83f602e7-af74-46d9-bb8b-9b2bd542ea07%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to