> cd /etc/ansible/roles
> mkdir vpc-roles
> cd vpc-roles
> mkdir defaults files vars templates test tasks
> cd tasks
> vim main.yml
---
- name: create VPC
ec2_vpc_net:
name: "{{ vpc_name }}"
cidr_block: "{{ vpc_cidr }}"
region: "{{ region }}"
state: present
aws_access_key: "{{ aws_access_key }}"
aws_secret_key: "{{ aws_secret_key }}"
register: vpc
- name: Set VPC ID in variable
set_fact:
vpc_id: "{{ vpc.vpc.id }}"
- name: associate subnet to the VPC
ec2_vpc_subnet:
state: present
vpc_id: "{{ vpc_id }}"
region: "{{ region }}"
cidr: "{{ subnet_cidr }}"
aws_access_key: "{{ aws_access_key }}"
aws_secret_key: "{{ aws_secret_key }}"
map_public: yes
resource_tags:
Name: "{{ subnet_name }}"
register: subnet
- name: create IGW
ec2_vpc_igw:
vpc_id: "{{ vpc_id }}"
region: "{{ region }}"
aws_access_key: "{{ aws_access_key }}"
aws_secret_key: "{{ aws_secret_key }}"
state: "present"
tags:
Name: "{{ igw_name }}"
register: igw
- name: Route IGW
ec2_vpc_route_table:
vpc_id: "{{ vpc_id }}"
region: "{{ region }}"
aws_access_key: "{{ aws_access_key }}"
aws_secret_key: "{{ aws_secret_key }}"
subnets:
- "{{ subnet.subnet.id }}"
routes:
- dest: 0.0.0.0/0
gateway_id: "{{ igw.gateway_id }}"
tags:
Name: "{{ route_name }}"
- name: Create Security Group
ec2_group:
name: Web DMZ
description: DMZ Security Group
vpc_id: "{{ vpc_id }}"
region: "{{ region }}"
aws_access_key: "{{ aws_access_key }}"
aws_secret_key: "{{ aws_secret_key }}"
rules:
- proto: tcp
ports:
- 80
cidr_ip: 0.0.0.0/0
- proto: tcp
ports:
- 22
cidr_ip: 0.0.0.0/0
register: security_group
- name: create a new ec2 key pair, returns generated private key
ec2_key:
aws_access_key: "{{ aws_access_key }}"
aws_secret_key: "{{ aws_secret_key }}"
name: "{{ keypair_name }}"
region: "{{ region }}"
register: keypair
tags:
- ec2_key
- debug:
var: keypair
tags:
- ec2_key
- name: Copy EC2 Key Pair private key locally
copy: content="{{ keypair.key.private_key }}" dest={{ ec2_key_directory }}key.ppk
when: keypair.changed == true
tags:
- ec2_key
- name: Create EC2 Instance
ec2:
image: ami-087c17d1fe0178315
wait: yes
instance_type: t2.small
region: "{{ region }}"
group_id: "{{ security_group.group_id }}"
vpc_subnet_id: "{{ subnet.subnet.id }}"
key_name: "{{ keypair.key.name }}"
count_tag: "{{ ec2_tag }}"
exact_count: 1
aws_access_key: "{{ aws_access_key }}"
aws_secret_key: "{{ aws_secret_key }}"
______________________________________________________________
> cd vars
> vim main.yml
---
hosts: all
vars:
ansible_python_interpreter: /usr/bin/python3
aws_access_key: AA2YKZL3BBPLMX7X2F
aws_secret_key: :wqXl9LJ7KRtyR05fgdSOV/GeQFsViCzM0ClwQPMiP
region: us-east-1
# VPC
vpc_cidr: 10.10.0.0/24
vpc_name: "Ansible VPC3"
# Subnet
subnet_name: "Ansible Subnet"
subnet_cidr: 10.10.0.0/26
igw_name: "Traffic IGW"
#route table name
route_name: "Public Ansible"
securitygroup_name: "Ansible Security Group"
ec2_tag: "WebServer"
#key storage location
ec2_key_directory: "/home/abidmoon/"
____________________________________
> cd tests
> vim tests.yml
---
- hosts: localhost
remote_user: root
roles:
- vpc-roles
__________________________
ansible-playbook test.yml
done
No comments:
Post a Comment