/
swift_calculate_addresses.yml
147 lines (132 loc) · 4.57 KB
/
swift_calculate_addresses.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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
---
# Copyright 2016, Rackspace US, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Set swift_storage_address fact so it is consumable in hostvars (for ring.contents template)
- name: Set swift_storage_address fact if defined
set_fact:
swift_storage_address: "{{ swift_storage_address }}"
when:
- swift_storage_address is defined
tags:
- always
# swift_vars.storage_ip always takes precedence
- name: Get swift_vars.storage_ip if defined
set_fact:
swift_storage_address: "{{ swift_vars.storage_ip }}"
when:
- swift_vars.storage_ip is defined
tags:
- always
# Get the swift storage bridge
- name: Get swift storage bridge
set_fact:
swift_storage_bridge: "{{ swift.storage_network | replace('-', '_') }}"
when:
- swift.storage_network is defined
- swift_storage_address is not defined
tags:
- always
- name: Gather facts for storage_bridge
setup:
filter: "{{ swift_storage_bridge }}"
when:
- swift_storage_bridge is defined
- ansible_facts[swift_storage_bridge] is defined
- swift_storage_address is not defined
- name: Swift storage address not found
fail:
msg: "{{ swift.storage_network }} not found on host, can't find storage address."
when:
- swift.storage_network is defined
- swift_storage_bridge is defined
- ansible_facts[swift_storage_bridge] is not defined
- swift_storage_address is not defined
- name: Get swift storage address (with storage_network)
set_fact:
swift_storage_address: "{{ ansible_facts[swift_storage_bridge]['ipv4']['address'] }}"
when:
- swift_storage_bridge is defined
- ansible_facts[swift_storage_bridge] is defined
- swift_storage_address is not defined
tags:
- always
- name: Get swift storage address (no storage_network)
set_fact:
swift_storage_address: "{{ ansible_host }}"
when:
- swift.storage_network is not defined
- swift_storage_address is not defined
tags:
- always
# Set swift_replication_address fact so it is consumable in hostvars (for ring.contents template)
- name: Set swift_replication_address fact if defined
set_fact:
swift_replication_address: "{{ swift_replication_address }}"
when:
- swift_replication_address is defined
tags:
- always
# swift_vars.repl_ip always takes precedence
- name: Get swift_vars.repl_ip if defined
set_fact:
swift_replication_address: "{{ swift_vars.repl_ip }}"
when:
- swift_vars.repl_ip is defined
tags:
- always
- name: Get swift replication bridge
set_fact:
swift_replication_bridge: "{{ swift.replication_network | replace('-', '_') }}"
when:
- swift.replication_network is defined
- swift_replication_address is not defined
tags:
- always
- name: Gather facts for storage_bridge
setup:
filter: "{{ swift_replication_bridge }}"
when:
- swift_replication_bridge is defined
- ansible_facts[swift_replication_bridge] is defined
- swift_replication_address is not defined
- name: Swift replication address not found
fail:
msg: "{{ swift.replication_network }} not found on host, can't find swift_replication_address"
when:
- swift.replication_network is defined
- swift_replication_bridge is defined
- ansible_facts[swift_replication_bridge] is not defined
- swift_replication_address is not defined
- name: Get swift replication address (with replication_network)
set_fact:
swift_replication_address: "{{ ansible_facts[swift_replication_bridge]['ipv4']['address'] }}"
when:
- swift_replication_bridge is defined
- ansible_facts[swift_replication_bridge] is defined
- swift_replication_address is not defined
tags:
- always
- name: Get swift replication address (no replication_network)
set_fact:
swift_replication_address: "{{ swift_storage_address }}"
when:
- swift.replication_network is not defined
- swift_replication_address is not defined
tags:
- always
- name: Set swift_dedicated_replication network if storage and replication addresses differ
set_fact:
swift_dedicated_replication: "{{ swift_storage_address != swift_replication_address }}"
tags:
- always