diff --git a/ansible/create_ec2.yml b/ansible/create_ec2.yml new file mode 100644 index 0000000..2b29075 --- /dev/null +++ b/ansible/create_ec2.yml @@ -0,0 +1,10 @@ +--- + +- name: Create EC2 instance + hosts: localhost + + vars_files: + - "host_vars/{{initiative_name}}.yml" + + roles: + - ec2_instance diff --git a/ansible/delete_ec2.yml b/ansible/delete_ec2.yml new file mode 100644 index 0000000..5d88cc5 --- /dev/null +++ b/ansible/delete_ec2.yml @@ -0,0 +1,10 @@ +--- + +- name: Create EC2 instance + hosts: localhost + + vars_files: + - "host_vars/{{initiative_name}}.yml" + + roles: + - delete_ec2_instance diff --git a/ansible/host_vars/arc-test.yml b/ansible/host_vars/arc-test.yml new file mode 100644 index 0000000..3a761c2 --- /dev/null +++ b/ansible/host_vars/arc-test.yml @@ -0,0 +1,11 @@ +ami_id: ami-01efb339f953fdf36 #Fedora33 cloud image us-east-1 +ssh_key_name: 'Ansible Key' +instance_name: "arc-{{initiative_name}}" +disk_size: 30 +subnet_id: subnet-0ebb9d7d8e4db80df +security_group_name: arc_default +vpc_id: vpc-0fe7ead908f270a09 +aws_region: us-east-1 +open_ports: 22 +instance_type: t2.medium + diff --git a/ansible/roles/delete_ec2_instance/tasks/main.yml b/ansible/roles/delete_ec2_instance/tasks/main.yml new file mode 100644 index 0000000..c7dc747 --- /dev/null +++ b/ansible/roles/delete_ec2_instance/tasks/main.yml @@ -0,0 +1,40 @@ +--- + +- name: Get instance id for termination + ec2_instance_info: + region: "{{ aws_region }}" + filters: + "tag:Name": "{{ instance_name }}" + register: ec2_instance + +- debug: msg="{{ec2_instance.instances[0].instance_id}}" + +- name: Get security group id for deletion + ec2_group_info: + region: "{{ aws_region }}" + filters: + group_name: "{{ security_group_name }}" + register: security_group + +- debug: msg="{{security_group.security_groups[0].group_id}}" + +- pause: + prompt: "Are yout sure you want to delete {{ instance_name }} and {{ security_group_name }} (yes/no)?" + register: my_pause + delegate_to: localhost + +- name: terminate instance + ec2_instance: + state: absent + region: "{{ aws_region }}" + instance_ids: + - "{{ec2_instance.instances[0].instance_id}}" + wait: yes + when: hostvars['localhost'].my_pause.user_input | bool + +- name: create security group + ec2_group: + name: "{{security_group.security_groups[0].group_id}}" + region: "{{ aws_region }}" + state: absent + when: hostvars['localhost'].my_pause.user_input | bool diff --git a/ansible/roles/ec2_instance/tasks/main.yml b/ansible/roles/ec2_instance/tasks/main.yml new file mode 100644 index 0000000..49ef7fe --- /dev/null +++ b/ansible/roles/ec2_instance/tasks/main.yml @@ -0,0 +1,38 @@ +--- + +- name: create security group + ec2_group: + name: "{{ security_group_name }}" + description: "Security group for {{initiative_name}}" + vpc_id: "{{ vpc_id }}" + region: "{{ aws_region }}" + rules: + - proto: tcp + ports: + - "{{item}}" + cidr_ip: 0.0.0.0/0 + rule_desc: allow all on port {{item}} + with_items: "{{ open_ports }}" + register: security_group + + +- name: create instance + ec2_instance: + state: present + region: "{{ aws_region }}" + instance_type: "{{ instance_type }}" + image_id: "{{ ami_id }}" + instance_role: "{{ instance_role | default(omit) }}" + key_name: "{{ ssh_key_name }}" + name: "{{ instance_name }}" + security_group: "{{ security_group.results[0].group_id }}" + tags: + FedoraGroup: "Infra" + Owner: "ARC" + Initiative: "{{ initiative_name }}" + volumes: + - device_name: /dev/sda1 + ebs: + volume_size: "{{ disk_size }}" + delete_on_termination: true + vpc_subnet_id: "{{ subnet_id }}"