DCD-1123: Add roles to support creating multiple basic EC2 instances into a VPC.

This commit is contained in:
Steve Smith
2020-10-20 15:27:45 +11:00
parent fc39d2bb23
commit 1b56944f97
4 changed files with 153 additions and 0 deletions

View File

@@ -0,0 +1,16 @@
---
- hosts: localhost
connection: local
gather_facts: True
become: False
vars:
vpc_name: "DCD-Migration-Video"
business_unit: "Engineering-Server"
resource_owner: "{{ ansible_user_id }}"
aws_region: "us-west-2"
roles:
- { role: aws-vpc }
- { role: ec2-instance, vars: { instance_name: "Jira Software Migration Source Instance" } }
- { role: ec2-instance, vars: { instance_name: "Jira ServiceDesk Migration Source Instance" } }

View File

@@ -0,0 +1,91 @@
---
- name: Setup VPC
ec2_vpc_net:
name: "{{ vpc_name }}-vpc"
cidr_block: 10.20.0.0/16
region: "{{ aws_region }}"
resource_tags:
Name: "{{ vpc_name }}-vpc"
name: "{{ vpc_name }}-vpc"
business_unit: "{{ business_unit }}"
service_name: "{{ vpc_name }}"
resource_owner: "{{ resource_owner }}"
register: vpc
- name: Setup VPC Internet Gateway
ec2_vpc_igw:
vpc_id: "{{ vpc.vpc.id }}"
region: "{{ aws_region }}"
state: present
register: igw
- name: Create subnet for resources
ec2_vpc_subnet:
vpc_id: "{{ vpc.vpc.id }}"
cidr: "10.20.30.0/24"
region: "{{ aws_region }}"
state: present
resource_tags:
Name: "{{ vpc_name }}-subnet"
name: "{{ vpc_name }}-vpc"
business_unit: "{{ business_unit }}"
service_name: "{{ vpc_name }}"
resource_owner: "{{ resource_owner }}"
register: subnet
- name: Set up VPC route table
ec2_vpc_route_table:
vpc_id: "{{ vpc.vpc.id }}"
tags:
Name: "{{ vpc_name }}-vpc-routes"
subnets:
- "{{ subnet.subnet.id }}"
routes:
- dest: 0.0.0.0/0
gateway_id: "{{ igw.gateway_id }}"
region: "{{ aws_region }}"
resource_tags:
Name: "{{ vpc_name }}-routes"
name: "{{ vpc_name }}"
business_unit: "{{ business_unit }}"
service_name: "{{ vpc_name }}"
resource_owner: "{{ resource_owner }}"
register: public_route_table
- name: Setup security group
ec2_group:
name: "{{ vpc_name }}-sg"
description: "Hosting group"
vpc_id: "{{ vpc.vpc.id }}"
region: "{{ aws_region }}"
state: present
purge_rules: true
rules:
# External: Allow SSH, HTTP/HTTPS
- proto: tcp
from_port: 22
to_port: 22
cidr_ip: 0.0.0.0/0
- proto: tcp
from_port: 80
to_port: 80
cidr_ip: 0.0.0.0/0
- proto: tcp
from_port: 443
to_port: 443
cidr_ip: 0.0.0.0/0
# Internal-only traffic
- proto: icmp
from_port: -1
to_port: -1
cidr_ip: 10.20.0.0/16
purge_rules_egress: true
rules_egress:
- proto: all
from_port: 0
to_port: 65535
cidr_ip: 0.0.0.0/0
register: sg

View File

@@ -0,0 +1,8 @@
---
ec2_ami_owner: "amazon"
ec2_ami_description: "Amazon Linux 2 AMI 2.0.* x86_64 HVM gp2"
ec2_type: "t3a.xlarge"
ec2_disk_size: "512"
ec2_keypair: "taskcat-ci-key"

View File

@@ -0,0 +1,38 @@
---
- name: Fetch AMI list for region
ec2_ami_facts:
region: "{{ aws_region }}"
owner: "{{ ec2_ami_owner }}"
filters:
description: "{{ ec2_ami_description }}"
register: amis
- name: Find the latest version of the AMI
set_fact:
latest_ami: "{{ amis.images | selectattr('name', 'defined') | sort(attribute='creation_date') | last }}"
- name: Provision EC2 host
ec2:
exact_count: 1
count_tag:
Name: "{{instance_name}}"
keypair: "{{ ec2_keypair }}"
region: "{{ aws_region }}"
instance_type: "{{ ec2_type }}"
image: "{{ latest_ami.image_id }}"
group_id: "{{ sg.group_id }}"
vpc_subnet_id: "{{ subnet.subnet.id }}"
assign_public_ip: True
volumes:
- device_name: /dev/xvda
volume_type: gp2
volume_size: "{{ ec2_disk_size }}"
wait: true
instance_tags:
Name: "{{ instance_name }}"
name: "{{ instance_name }}"
business_unit: "{{ business_unit }}"
service_name: "{{ instance_name}}"
resource_owner: "{{ resource_owner }}"
register: ec2_instance