Commit Graph

82 Commits (46ca2b8bcd570fd8eb825d622283164c83908869)

Author SHA1 Message Date
Fabio Alessandro Locati c8fd24ee04 Call main in conditional way - cloud/amazon 2016-12-08 11:25:35 -05:00
Sam Doran 38c0769abb Examples syntax batch5 (#5622)
* Change example syntax on supervisorctl module

* Change example syntax or _ec2_ami_search module

* Change example syntax on cloudformation module

* Change example syntax on ec2 module

* Change example syntax on ec2_facts module

* Change example syntax on ec2_eip module

* Change example syntax on rds module

* Change example syntax on route53 module

* Change example syntax on s3 module

* Change example syntax on digital_ocean module

* Change example syntax on docker_service module

* Change example syntax on cloudformation module

* Change example syntax on gc_storage module

* Change example syntax on gce module

* Change example syntax on gce_mig module

* Change example syntax on _glance_image module

* Change example syntax on _keystone_user module

* Change example syntax on _nova_keypair module

* Change example syntax on _quantum_floating module

* Change example syntax on _quantum_floating_ip_associate module

* Change example syntax on _quantum_network module

* Change example syntax on _quantum_router module

* Change example syntax on _quantum_router_gateway module

* Change example syntax on _quantum_router_interface module

* Change example syntax on _quantum_subnet module

* SQUASH _quantum_subnet

* Add missing quotes
2016-12-08 11:25:31 -05:00
Zaius Dr d8c21b153d Improve `ec2` module Python3 Support (#5497)
Imported six module from ansible module_utils for backwards compatibility.
2016-12-08 11:25:27 -05:00
jctanner 06e1141106 replace type() with isinstance() (#5541)
Replace all use of type() with isintance()

Addresses https://github.com/ansible/ansible/issues/18310
2016-12-08 11:25:27 -05:00
Charles Paul f6676f4957 add id: back to documentation 2016-12-08 11:25:24 -05:00
John R Barker 25b6492d37 Bulk spelling improvement to modules-core (#5225)
* Correct spelling mistakes

* Correct more spelling issues

* merge conflict

* Revert typo in parms
2016-12-08 11:25:20 -05:00
Ryan Brown b091d39baf Handle termination_protection parameter when restarting instances (#5076)
* Restart EC2 instances with multiple network interfaces

A previous bug, #3234, caused instances with multiple ENI's to fail when being
started or stopped because sourceDestCheck is a per-interface attribute, but we
use the boto global access to it (which only works when there's a single ENI).

This patch handles a variant of that bug that only surfaced when restarting an
instance, and catches the same type of exception.

* Default termination_protection to None instead of False

AWS defaults the value of termination_protection to False, so we don't
need to explicitly send `False` when the user hasn't specified a
termination protection level. Before this patch, the below pair of tasks
would:

1. Create an instance (enabling termination_protection)
2. Restart that instance (disabling termination_protection)

Now, the default None value would prevent the restart task from
disabling termination_protection.

```
- name: make an EC2 instance
  ec2:
    vpc_subnet_id: {{ subnet  }}
    instance_type: t2.micro
    termination_protection: yes
    exact_count: 1
    count_tag:
       Name: TestInstance
    instance_tags:
       Name: TestInstance
    group_id: {{ group }}
    image: ami-7172b611
    wait: yes
- name: restart a protected EC2 instance
  ec2:
    vpc_subnet_id: {{ subnet  }}
    state: restarted
    instance_tags:
       Name: TestInstance
    group_id: {{ group }}
    image: ami-7172b611
    wait: yes
```
2016-12-08 11:25:18 -05:00
Ryan Brown 135b92bf4e Check status of finished spot instance requests (#4990)
Per #3877, the code to wait for spot instance requests to finish would
hang for the full wait time if any spot request failed for any reason.
This commit introduces status checks for spot requests, so if the
request fails, finishes, or is cancelled the task will fail/succeed
accordingly.

One edge case introduced here is tha if a user terminates the instance
associated with the request manually it won't fail the play, under the
presumption that the user *wants* the instance terminated.
2016-12-08 11:25:15 -05:00
Christopher Kotfila f916dae700 Unpack AWS reservations while waiting to terminate (#4012)
Previously calculation of the number of instances that have been
terminated assumed all instances were in the first reservation returned
by AWS.  If this is not the case the calculated number of instances
terminated never reaches the number of instances and the module always
times out. By unpacking the instances we get an accurate number and the
module correctly exits.
2016-12-08 11:25:05 -05:00
Ryan Brown 1a02005b8d Handle EC2 instances with multiple network interfaces (#4766)
Currently instances with multiple ENI's can't be started or stopped
because sourceDestCheck is a per-interface attribute, but we use the
boto global access to it (which only works when there's a single ENI).

This patch handles multiple ENI's and applies the sourcedestcheck across
all interfaces the same way.

Fixes #3234
2016-12-08 11:25:05 -05:00
Ryan Brown 6ae4e50e47 Fix failure when powering on/off EC2 instances by tag only. (#4767)
If you apply `wait=yes` and use `instance_tags` as your filter for
stopping/starting EC2 instances, this stack trace happens:

```
An exception occurred during task execution. The full traceback is:                                                                          │~
Traceback (most recent call last):                                                                                                           │~
  File "/tmp/ryansb/ansible_FwE8VR/ansible_module_ec2.py", line 1540, in <module>                                                            │~
    main()                                                                                                                                   │~
  File "/tmp/ryansb/ansible_FwE8VR/ansible_module_ec2.py", line 1514, in main                                                                │~
    (changed, instance_dict_array, new_instance_ids) = startstop_instances(module, ec2, instance_ids, state, instance_tags)                  │~
  File "/tmp/ryansb/ansible_FwE8VR/ansible_module_ec2.py", line 1343, in startstop_instances                                                 │~
    if len(matched_instances) < len(instance_ids):                                                                                           │~
TypeError: object of type 'NoneType' has no len()                                                                                            │~
                                                                                                                                             │~
fatal: [localhost -> localhost]: FAILED! => {"changed": false, "failed": true, "invocation": {"module_name": "ec2"}, "module_stderr": "Traceb│~
ack (most recent call last):\n  File \"/tmp/ryansb/ansible_FwE8VR/ansible_module_ec2.py\", line 1540, in <module>\n    main()\n  File \"/tmp/│~
ryansb/ansible_FwE8VR/ansible_module_ec2.py\", line 1514, in main\n    (changed, instance_dict_array, new_instance_ids) = startstop_instances│~
(module, ec2, instance_ids, state, instance_tags)\n  File \"/tmp/ryansb/ansible_FwE8VR/ansible_module_ec2.py\", line 1343, in startstop_insta│~
nces\n    if len(matched_instances) < len(instance_ids):\nTypeError: object of type 'NoneType' has no len()\n", "module_stdout": "", "msg": "│~
MODULE FAILURE", "parsed": false}
```

That's because the `instance_ids` variable is None if not supplied
in the task. That means the instances that result from the instance_tags
query aren't going to be included in the wait loop. To fix this, a list
needs to be kept of instances with matching tags and that list needs to
be added to `instance_ids` before the wait loop.
2016-12-08 11:25:03 -05:00
Abhijit Menon-Sen 841ceb808d Fix spot instance creation by ignoring instance_initiated_shutdown_behavior (#4741)
Before this, all spot instance requests would fail because the code
_always_ called module.fail_json when the parameter was set (which it
always was, because the module parameter's default was set to 'stop').

As the comment said, this parameter doesn't make sense for spot
instances at all, so the error message was also misleading.
2016-12-08 11:25:02 -05:00
Florian Dambrine 2adc325ef6 Fix ec2 module source_dest_check when running on non VPC instances (EC2 Classic) (#3243) 2016-12-08 11:25:02 -05:00
Ilja Bauer 729486809e Replaced use of bare variables with full variable syntax (#4149) 2016-12-08 11:24:54 -05:00
Richard Adams b0135fadea Add parameter to `ec2` module to control instance shutdown behavior (stop|terminate) 2016-12-08 11:24:52 -05:00
Ryan Brown d4cec5ccc1 Remove double-assignment of EC2 parameters (#4081)
The `source_dest_check` and `termination_protection` variables are being
assigned twice in ec2.py, likely due to an incorrect merge somewhere
along the line.
2016-12-08 11:24:40 -05:00
@ 1573066ec1 Fixing error exception handling for python. Does not need to be compatible with Python2.4 b/c boto is Python 2.6 and above. (#3839) 2016-12-08 11:24:33 -05:00
hyperized 82cefd7ce1 Added restart functionality to ec2.py 2016-12-08 11:24:26 -05:00
Will Thames 52accd7d1f Use connect_to_aws where possible
`connect_to_aws` fixes a bug with security tokens in AWS.
Modules should use that rather than calling
`boto.x.connect_to_region`
2016-12-08 11:24:09 -05:00
Daniel Petty f26199d962 replaced sudo with become 2016-12-08 11:24:06 -05:00
jjshoe 56f1d6f794 Less engrish 2016-12-08 11:24:04 -05:00
Michael Baydoun 7234ead259 Update ec2.py
Documentation is not clear that tag used in count_tags must be an existing instance_tag
2016-12-08 11:24:04 -05:00
techraf 896dcd9787 Fixed typo in example playbook 2016-12-08 11:24:00 -05:00
Arthur Clement 7c8d3d9b20 Example of single instance with ssd gp2 root volume creation 2016-12-08 11:23:50 -05:00
joshuaeke 88f221fd9f Update ec2.py remove state tag
'exact_count' and 'state' are mutually exclusive options they should not be in the following examples:
- # Enforce that 5 running instances named "database" with a "dbtype" of "postgres" example and
- # Enforce that 5 instances with a tag "foo" are running
2016-12-08 11:23:49 -05:00
Toshio Kuratomi a90de29ceb Minor simplification of code 2016-12-08 11:23:49 -05:00
Brian Coca 2efb97e9d5 corrected version_added, removed empty alias 2016-12-08 11:23:49 -05:00
Keith Hassen f7dfcc153e Fail if any group name is not resolved to an ID. 2016-12-08 11:23:48 -05:00
Kevin Falcone 35e6684163 Mark this as a string so it is rendered in the docs
When this was treated as a boolean, sphinx was leaving the Default
column on http://docs.ansible.com/ansible/ec2_module.html blank,
implying it would use AWS's default.  In reality, it passes False, which
overrides the defaults at AWS (it's possible to boot an instance which
AWS claims will always have EBS optimization without it because of this
silently passed False).
2016-12-08 11:23:46 -05:00
Kai Webber 4a8bd74f52 Added launch group support for ec2 module 2016-12-08 11:23:46 -05:00
Gilad Peleg 9cb4388f9e Add state=running on some ec2 examples
`state=running` was missing in some of the ec2 module examples
2016-12-08 11:23:45 -05:00
Abhijit Menon-Sen e9071c62ba Add missing variable initializations
Without this, «ec2: state=stopped instance_ids=…» would fail with a
traceback like this:

    if inst.get_attribute('sourceDestCheck')['sourceDestCheck'] != source_dest_check:
NameError: global name 'source_dest_check' is not defined
2016-12-08 11:23:40 -05:00
fperks 11dbd985b6 Fix error on ec2 status change
Both `source_dest_check` and `termination_protection` variables are not
available within the scope of the startstopec2 instance method. This just
pulls them from module.params.
2016-12-08 11:23:39 -05:00
Gerard Lynch f85a8ac746 allow use of volume_type in volumes dict 2016-12-08 11:23:37 -05:00
Yanchek99 ebbd206e86 Fixed typo for instance_tags documentation 2016-12-08 11:23:35 -05:00
Bret Martin b1c5b17155 Use general-purpose parameter mutual exclusion code for network_interfaces 2016-12-08 11:23:35 -05:00
Bret Martin 0afa813324 Add alias `network_interface` and accept a string for a single ENI 2016-12-08 11:23:35 -05:00
Bret Martin df8b2d45bc Add network_interfaces example 2016-12-08 11:23:35 -05:00
Bret Martin 96d8401fb4 Remove aliases specification from documentation since there are none 2016-12-08 11:23:35 -05:00
Bret Martin df713192b4 Add network_interfaces parameter to ec2 module to support launch-time ENIs 2016-12-08 11:23:34 -05:00
James Cammarata b9ca912ffe Fixing region requirement regarding euca clusters
Fixes ansible/ansible#11023
2016-12-08 11:23:32 -05:00
HAMSIK Adam 217764ba3c Rebase start/stop instance pull code 2016-12-08 11:23:31 -05:00
Brian Coca 357d542bb3 clarified error messages to actually give back ansible module option instead of internal boto field name 2016-12-08 11:23:26 -05:00
Jens Carl c0eedc6e87 Fix missing alias "groups". 2016-12-08 11:23:26 -05:00
vanga ddd399fe7a Throw error if encryption is set while passing a snapshot id 2016-12-08 11:23:20 -05:00
Juho-Mikko Pellinen 29620b78fa Change the default flag value to None to prevent AWS complaining: "Instance creation failed => InvalidBlockDeviceMapping: the encrypted flag cannot be specified since device /dev/sda1 has a snapshot specified." 2016-12-08 11:23:18 -05:00
Andrea Mandolo ae1080d922 Added some block_device_mapping (disks) informations to EC2 instance module ouput 2016-12-08 11:23:15 -05:00
Andrea Mandolo a8da674cf4 Added "EC2 instance" termination_protection and source_dest_check changeability at run-time 2016-12-08 11:23:15 -05:00
James Cammarata 4239922d07 Updating version_added for new spot_type param in ec2 module
Also made sure 'choices' were set on the module param, to catch errors
in user's playbooks, etc.
2016-12-08 11:23:11 -05:00
Jay Taylor ed279d8175 Added support for spot request type specification (to support persistent spot requests). 2016-12-08 11:23:11 -05:00