-
Notifications
You must be signed in to change notification settings - Fork 2
/
createvms.yml
106 lines (101 loc) · 4.01 KB
/
createvms.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
---
- name: Get instances info
hosts: localhost
connection: local
gather_facts: no
vars:
ec2_security_group_name: "{{vpc_name}}_SECGRP"
ec2_ansible_group: "{{user_name}}"
my_email_address: "{{user_name}}@redhat.com"
tasks:
- name: 'Preflight Varible check :: subnet_name'
fail: msg='Please include the subnet_name to the variable "subnet_name"'
run_once: true
when: 'subnet_name is not defined'
- name: 'Preflight Varible check :: key_name'
fail: msg='Please include the key_name to the variable "key_name"'
run_once: true
when: 'key_name is not defined'
- name: 'Preflight Varible check :: image'
fail: msg='Please include the image to the variable "image"'
run_once: true
when: 'image is not defined'
- name: 'Preflight Varible check :: count'
fail: msg='Please include the count to the variable "count"'
run_once: true
when: 'count is not defined'
- name: 'Preflight Varible check :: region'
fail: msg='Please include the region to the variable "region"'
run_once: true
when: 'region is not defined'
- name: 'Preflight Varible check :: assign_public_ip'
fail: msg='Please include the assign_public_ip to the variable "assign_public_ip"'
run_once: true
when: 'assign_public_ip is not defined'
- name: 'Preflight Varible check :: alwaysup'
fail: msg='Please include the alwaysup to the variable "alwaysup"'
run_once: true
when: 'alwaysup is not defined'
- name: 'Preflight Varible check :: server_pre_name'
fail: msg='Please include the server_pre_name to the variable "server_pre_name"'
run_once: true
when: 'server_pre_name is not defined'
- name: 'Preflight Varible check :: deleteby'
fail: msg='Please include the deleteby to the variable "deleteby"'
run_once: true
when: 'deleteby is not defined'
- name: 'Preflight Varible check :: group'
fail: msg='Please include the group to the variable "group"'
run_once: true
when: 'group is not defined'
# Gather the start time to use in a later playbook
- name: Record the machine_create_time
ansible.builtin.command:
cmd: "date '+%H:%M:%S'"
delegate_to: 127.0.0.1
register: machine_create_time_pre
run_once: true
# Make the start time available to other playbooks
- name: Capture machine instance start time
ansible.builtin.set_stats:
data:
machine_create_time: "{{ machine_create_time_pre.stdout }}"
run_once: true
- name: If vpc_subnet_id doesn't exist lookup by {{subnet_name}}
block:
- name: Looking Up Subnet_id for {{subnet_name}} if vpc_subnet_id doesn't exist
ec2_vpc_subnet_info:
region: "{{region}}"
filters:
"tag:Name": "{{subnet_name}}"
register: subnet_id
- name: Setting vpc_subnet_id based on Lookup of {{subnet_name}}
set_fact:
vpc_subnet_id: "{{subnet_id.subnets[0].id}}"
when: vpc_subnet_id is undefined
- name: Show Subnet_id
debug:
msg: "{{vpc_subnet_id}}"
# this is updated to newest module params as of 9/8/22
- name: Creating {{count}} AWS VMs in {{region}}
amazon.aws.ec2_instance:
key_name: "{{key_name}}"
instance_type: "{{instance_type}}"
image_id: "{{image}}"
wait: "{{wait}}"
security_group: "{{ec2_security_group_name}}"
wait_timeout: 500
count: "{{count}}"
region: "{{region}}"
vpc_subnet_id: "{{vpc_subnet_id}}"
network:
assign_public_ip: "{{ assign_public_ip | bool }}"
tags:
AlwaysUp: "{{alwaysup}}"
VPC: "{{vpc_name}}"
Name: "{{server_pre_name}}"
ansible_group: "{{ec2_ansible_group}}"
Createdby: Ansible Controller
Contact: "{{my_email_address}}"
DeletebBy: "{{deleteby}}"
Type: "{{group}}"