diff options
author | Monty Taylor <mordred@inaugust.com> | 2017-11-05 13:24:37 +1100 |
---|---|---|
committer | Monty Taylor <mordred@inaugust.com> | 2017-11-05 17:07:06 +1100 |
commit | 4ac60cf090af9618bd52b4b30cac4ee31b5d5967 (patch) | |
tree | 7dda33747456c3b806d25c4318bef9b717f8aa3e /src/three-minute-demo/demo.yaml | |
parent | 2f5dfc495113c6dadf66fc7d5d395f90118514ca (diff) |
Add ansible playbooks for 3 minute multi-cloud demo
Diffstat (limited to 'src/three-minute-demo/demo.yaml')
-rw-r--r-- | src/three-minute-demo/demo.yaml | 101 |
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 | ||