Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ---
- - name: Provision an EC2 Instance
- hosts: local
- connection: local
- gather_facts: False
- tags: provisioning
- # Necessary Variables for creating/provisioning the EC2 Instance
- vars:
- instance_type: t2.micro
- security_group: ansible-webserver # Change the security group name here
- image: ami-719fb712 # This is an AMI i created myself
- keypair: agix-key # This is one of my keys that i already have in AWS
- region: ap-southeast-2 # Change the Region
- count: 1
- # Task that will be used to Launch/Create an EC2 Instance
- tasks:
- - name: Create a security group
- local_action:
- module: ec2_group
- name: "{{ security_group }}"
- description: Security Group for webserver Servers
- region: "{{ region }}"
- rules:
- - 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
- rules_egress:
- - proto: all
- cidr_ip: 0.0.0.0/0
- register: basic_firewall
- - name: Launch the new EC2 Instance
- local_action: ec2
- group={{ security_group }}
- instance_type={{ instance_type}}
- image={{ image }}
- wait=true
- region={{ region }}
- keypair={{ keypair }}
- count={{count}}
- register: ec2
- - name: Add the newly created EC2 instance(s) to the local host group (located inside the directory)
- local_action: lineinfile
- dest="./hosts"
- regexp={{ item.public_ip }}
- insertafter="[webserver]" line={{ item.public_ip }}
- with_items: ec2.instances
- - name: Wait for SSH to come up
- local_action: wait_for
- host={{ item.public_ip }}
- port=22
- state=started
- with_items: ec2.instances
- - name: Add tag to Instance(s)
- local_action: ec2_tag resource={{ item.id }} region={{ region }} state=present
- with_items: ec2.instances
- args:
- tags:
- Name: webserver
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement