-
Notifications
You must be signed in to change notification settings - Fork 3
/
provision.yml
92 lines (84 loc) · 2.66 KB
/
provision.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
- name: Configuring environment
hosts: localhost
connection: local
vars_files:
- group_vars/postgresql/vars
- group_vars/postgresql/secret_vars
vars:
count: 2
tasks:
- name: creating postgresql cluster
linode.cloud.instance:
label: '{{ instance_prefix }}{{ item | int + 1 }}'
api_token: '{{ token }}'
type: '{{ type }}'
region: '{{ region }}'
image: '{{ image }}'
root_pass: '{{ root_pass }}'
authorized_keys: '{{ ssh_keys }}'
private_ip: true
stackscript_id: 1146322
ua_prefix: 'marketplace-postgresql-occ'
tags: '{{ linode_tags }}'
state: present
register: linode
with_sequence: count='{{ count }}'
- name: Get info about an instance by label
linode.cloud.instance_info:
api_token: '{{ token }}'
label: '{{ instance_prefix }}{{ item | int + 1 }}'
register: info
with_sequence: count='{{ count }}'
- name: set facts
set_fact:
pg1_hostname: '{{ instance_prefix }}1.{{ cluster_name }}'
pg2_hostname: '{{ info.results.0.instance.label }}.{{ cluster_name }}'
pg3_hostname: '{{ info.results.1.instance.label }}.{{ cluster_name }}'
# public ips
pg1_ip1: '{{ ansible_all_ipv4_addresses[0] }}'
pg2_ip1: '{{ info.results.0.instance.ipv4[0] }}'
pg3_ip1: '{{ info.results.1.instance.ipv4[0] }}'
# private ips
pg1_priv1: '{{ ansible_all_ipv4_addresses[1] }}'
pg2_priv1: '{{ info.results.0.instance.ipv4[1] }}'
pg3_priv1: '{{ info.results.1.instance.ipv4[1] }}'
- name: update group_vars
blockinfile:
path: ./group_vars/postgresql/vars
marker: "# {mark} INSTANCE VARS"
block: |
# hostnames
pg1_hostname: {{ pg1_hostname | replace('_', '-') }}
pg2_hostname: {{ pg2_hostname |replace('_', '-') }}
pg3_hostname: {{ pg3_hostname | replace('_', '-')}}
# public ips
pg1_ip1: {{ pg1_ip1 }}
pg2_ip1: {{ pg2_ip1 }}
pg3_ip1: {{ pg3_ip1 }}
# private ips
pg1_priv1: {{ pg1_priv1 }}
pg2_priv1: {{ pg2_priv1 }}
pg3_priv1: {{ pg3_priv1 }}
- name: test connectivity
ping:
with_items: "{{ info.results }}"
- name: update inventory
blockinfile:
path: ./hosts
marker: "# {mark} POSTGRESQL LINODES"
block: |
[postgresql]
localhost ansible_connection=local user=root
{{ pg2_ip1 }}
{{ pg3_ip1 }}
- name: wait for port 22 to become open
wait_for:
port: 22
host: '{{ item }}'
search_regex: OpenSSH
delay: 10
connection: local
with_items:
- '{{ pg1_ip1 }}'
- '{{ pg2_ip1 }}'
- '{{ pg3_ip1 }}'