summaryrefslogtreecommitdiff
path: root/src/three-minute-demo/demo.yaml
diff options
context:
space:
mode:
Diffstat (limited to 'src/three-minute-demo/demo.yaml')
-rw-r--r--src/three-minute-demo/demo.yaml101
1 files changed, 101 insertions, 0 deletions
diff --git a/src/three-minute-demo/demo.yaml b/src/three-minute-demo/demo.yaml
new file mode 100644
index 0000000..985f265
--- /dev/null
+++ b/src/three-minute-demo/demo.yaml
@@ -0,0 +1,101 @@
1- hosts: localhost
2 gather_facts: false
3 tasks:
4
5 - name: Read in cloud config
6 os_client_config:
7
8 - name: Add fake host for each cloud region so we can parallelize
9 add_host:
10 name: "{{ item.name }}-{{ item.region_name }}"
11 ansible_host: localhost
12 ansible_connection: local
13 groups: clouds
14 cloud: "{{ item.name }}"
15 region_name: "{{ item.region_name }}"
16 with_items: "{{ openstack.clouds }}"
17
18- hosts: clouds
19 gather_facts: false
20 tasks:
21
22 - name: Upload ssh public key
23 os_keypair:
24 public_key_file: "{{ ansible_user_dir }}/.ssh/id_rsa.pub"
25 name: "three_minute_demo"
26 cloud: "{{ cloud }}"
27 region_name: "{{ region_name }}"
28
29 - name: Add wide-open security group
30 os_security_group:
31 name: three-minute-demo-group
32 description: Open security group
33
34 - name: Add rules to group
35 os_security_group_rules:
36 ethertype: "{{ item.ethertype }}"
37 remote_group: "{{ item.remote_group|default(omit) }}"
38 remote_ip_prefix: "{{ item.remote_ip_prefix|default(omit) }}"
39 security_group: three-minute-demo-group
40 with_items:
41 - ethertype: IPv4
42 remote_group: default
43 state: absent
44 - ethertype: IPv6
45 remote_group: default
46 state: absent
47 - ethertype: IPv4
48 remote_ip_prefix: 0.0.0.0/0
49 - ethertype: IPv6
50 remote_ip_prefix: ::/0
51
52 - name: Create a small VM
53 os_server:
54 auto_ip: true
55 key_name: three_minute_demo
56 name: three_minute_demo_server
57 cloud: "{{ cloud }}"
58 region_name: "{{ region_name }}"
59 wait: true
60 register: created_server
61
62 - name: Add VM to inventory
63 add_host:
64 name: "{{ cloud }}.{{ region_name }}.demo"
65 ansible_host: "{{ created_server.interface_ip }}"
66 group: demo_servers
67
68 - name: Print Interface IP for created server
69 debug:
70 var: created_server.interface_ip
71
72- hosts: demo_servers
73 tasks:
74
75 - name: Install webserver
76 package:
77 name: apache2
78 state: installed
79 become: yes
80
81 - name: Write content
82 template:
83 src: templates/setup.json.j2
84 dest: /var/www/html/setup.json
85 become: yes
86
87 - name: Ensure webserver is running
88 service:
89 name: apache2
90 state: started
91 become: yes
92
93 - name: Get Info from Server
94 uri:
95 url: "http://{{ ansible_host }}/setup.json"
96 register: server_info
97 delegate_to: localhost
98
99 - name: Print FQDN information about host
100 debug:
101 var: server_info.json.ansible_fqdn