Skip to content

Commit

Permalink
add ec2_instance_placement_options target back
Browse files Browse the repository at this point in the history
  • Loading branch information
GomathiselviS committed Oct 16, 2024
1 parent 732744b commit 79b9f3d
Show file tree
Hide file tree
Showing 5 changed files with 147 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
time=10m

cloud/aws

ec2_instance_info
ec2_instance
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
# defaults file for ec2_instance_block_devices
ec2_instance_type: t3.micro
ec2_instance_tag_TestId: "{{ resource_prefix }}-placement-group"
ec2_tenancy: dedicated
ec2_placement_group_name: "{{ resource_prefix}}-placement-group"
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
# this just makes sure they're in the right place
dependencies:
- role: setup_ec2_facts
- role: setup_ec2_instance_env
vars:
ec2_instance_test_name: placement_options
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
---
- module_defaults:
group/aws:
access_key: "{{ aws_access_key }}"
secret_key: "{{ aws_secret_key }}"
session_token: "{{ security_token | default(omit) }}"
region: "{{ aws_region }}"
block:
- name: New placement group
amazon.aws.ec2_placement_group:
name: "{{ ec2_placement_group_name }}"
strategy: partition
partition_count: 1
state: present

- name: New instance with placement group name
amazon.aws.ec2_instance:
state: running
name: "{{ resource_prefix }}-test-placement-group-name"
image_id: "{{ ec2_ami_id }}"
placement:
group_name: "{{ ec2_placement_group_name }}"
tags:
Name: "{{ resource_prefix }}-test-placement-group-name"
TestId: "{{ ec2_instance_tag_TestId }}"
security_group: default
instance_type: "{{ ec2_instance_type }}"
wait: true
ignore_errors: true
register: instance_creation_group_name

- name: Gather ec2 facts to check placement group options
amazon.aws.ec2_instance_info:
filters:
tag:Name: "{{ resource_prefix }}-test-placement-group-name"
tag:TestId: "{{ ec2_instance_tag_TestId }}"
instance-state-name: running
ignore_errors: true
register: instance_facts

- name: Validate instance with placement group name
ansible.builtin.assert:
that:
- instance_creation_group_name is success
- instance_creation_group_name is changed
- instance_facts.instances[0].placement.group_name == ec2_placement_group_name

- ansible.builtin.include_tasks: select_availability_zone.yml

- name: New instance with dedicated tenancy
amazon.aws.ec2_instance:
state: running
name: "{{ resource_prefix }}-test-dedicated-tenancy"
image_id: "{{ ec2_ami_id }}"
placement:
tenancy: "{{ ec2_tenancy }}"
tags:
TestId: "{{ ec2_instance_tag_TestId }}"
security_group: default
instance_type: "{{ ec2_instance_type }}"
availability_zone: "{{ ec2_availability_zone }}"
wait: true
ignore_errors: true
register: instance_creation_tenancy

- name: Gather ec2 facts to check placement tenancy
amazon.aws.ec2_instance_info:
filters:
tag:Name: "{{ resource_prefix }}-test-dedicated-tenancy"
tag:TestId: "{{ ec2_instance_tag_TestId }}"
instance-state-name: running
ignore_errors: true
register: instance_facts

- name: Validate instance with dedicated tenancy
ansible.builtin.assert:
that:
- instance_creation_tenancy is success
- instance_creation_tenancy is changed
- instance_facts.instances[0].placement.tenancy == ec2_tenancy
# - instance_creation is failed
# - '"You are not authorized to perform this operation." in instance_creation.msg'

always:
- name: Delete instances created with placement group name
amazon.aws.ec2_instance:
state: absent
instance_ids: "{{ instance_creation_group_name.instance_ids }}"
wait: false
ignore_errors: true
when: instance_creation_group_name is defined

- name: Delete instances created with placement tenancy
amazon.aws.ec2_instance:
state: absent
instance_ids: "{{ instance_creation_tenancy.instance_ids }}"
wait: false
ignore_errors: true
when: instance_creation_tenancy is defined

- name: Delete placement group.
amazon.aws.ec2_placement_group:
name: "{{ ec2_placement_group_name }}"
state: absent
ignore_errors: true
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# aws regions supporting 't3.micro' instance type
- ansible.builtin.set_fact:
av_zones:
- us-east-1a
- us-east-1b
- us-east-1c
- us-east-1d
- us-east-1f

- name: List t3.micro instances
amazon.aws.ec2_instance_info:
filters:
instance-type: t3.micro
instance-state-name:
- pending
- running
register: _instances

- ansible.builtin.set_fact:
instances_zones: "{{ _instances.instances | map(attribute='placement.availability_zone') | list | ansible.builtin.unique }}"

- ansible.builtin.set_fact:
ec2_availability_zone: "{{ av_zones | ansible.builtin.difference(instances_zones) | list | ansible.builtin.random }}"

0 comments on commit 79b9f3d

Please sign in to comment.