Skip to content

Commit a502bf1

Browse files
committed
Add bgp-l3-xl-adoption job
1 parent e97a352 commit a502bf1

15 files changed

+1545
-4
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
---
2+
# Copyright Red Hat, Inc.
3+
# All Rights Reserved.
4+
#
5+
# Licensed under the Apache License, Version 2.0 (the "License"); you may
6+
# not use this file except in compliance with the License. You may obtain
7+
# a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing, software
12+
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13+
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14+
# License for the specific language governing permissions and limitations
15+
# under the License.
16+
17+
- name: BGP post_overcloud hook
18+
hosts: "{{ cifmw_target_host | default('localhost') }}"
19+
gather_facts: false
20+
tasks:
21+
- name: Remove default route from OC nodes
22+
delagate_to: "{{ _vm }}"
23+
become: true
24+
ansible.builtin.command:
25+
cmd: ip route del default via 192.168.111.1
26+
failed_when: false
27+
loop: >-
28+
{{
29+
_vm_groups['osp-r0-computes'] | list +
30+
_vm_groups['osp-r0-controllers'] | list +
31+
_vm_groups['osp-r1-computes'] | list +
32+
_vm_groups['osp-r1-controllers'] | list +
33+
_vm_groups['osp-r2-computes'] | list +
34+
_vm_groups['osp-r2-controllers'] | list
35+
}}
36+
loop_control:
37+
loop_var: _vm
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
---
2+
# Copyright Red Hat, Inc.
3+
# All Rights Reserved.
4+
#
5+
# Licensed under the Apache License, Version 2.0 (the "License"); you may
6+
# not use this file except in compliance with the License. You may obtain
7+
# a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing, software
12+
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13+
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14+
# License for the specific language governing permissions and limitations
15+
# under the License.
16+
17+
- name: BGP pre_overcloud hook
18+
hosts: "{{ cifmw_target_host | default('localhost') }}"
19+
gather_facts: false
20+
tasks:
21+
- name: Add default route to OC nodes
22+
delagate_to: "{{ _vm }}"
23+
become: true
24+
ansible.builtin.command:
25+
cmd: ip route add default via 192.168.111.1
26+
loop: >-
27+
{{
28+
_vm_groups['osp-r0-computes'] | list +
29+
_vm_groups['osp-r0-controllers'] | list +
30+
_vm_groups['osp-r1-computes'] | list +
31+
_vm_groups['osp-r1-controllers'] | list +
32+
_vm_groups['osp-r2-computes'] | list +
33+
_vm_groups['osp-r2-controllers'] | list
34+
}}
35+
loop_control:
36+
loop_var: _vm

playbooks/bgp/prepare-bgp-spines-leaves.yaml

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,59 @@
11
---
2+
- name: Start spines and leafs and add them to inventory
3+
hosts: localhost
4+
vars:
5+
leafs_list:
6+
- leaf-0
7+
- leaf-1
8+
- leaf-2
9+
- leaf-3
10+
- leaf-4
11+
- leaf-5
12+
spines_list:
13+
- spine-0
14+
- spine-1
15+
routers_list:
16+
- router-0
17+
fabric_list: "{{ leafs_list | list }} + {{ spines_list | list }} + {{ routers_list | list }}"
18+
tasks:
19+
- name: Start spine and leaf VMs
20+
delegate_to: hypervisor
21+
become: true
22+
community.libvirt.virt:
23+
name: "cifmw-{{ item }}"
24+
state: running
25+
loop: "{{ fabric_list }}"
26+
27+
- name: Add leafs group to inventory
28+
when: '"leafs" not in groups'
29+
ansible.builtin.add_host:
30+
name: "{{ item }}.utility"
31+
group: leafs
32+
loop: "{{ leafs_list }}"
33+
34+
- name: Add spines group to inventory
35+
when: '"spines" not in groups'
36+
ansible.builtin.add_host:
37+
name: "{{ item }}.utility"
38+
group: spines
39+
loop: "{{ spines_list }}"
40+
41+
- name: Add routers group to inventory
42+
when: '"routers" not in groups'
43+
ansible.builtin.add_host:
44+
name: "{{ item }}.utility"
45+
group: routers
46+
loop: "{{ routers_list }}"
47+
48+
- name: Check SSH connectivity
49+
ansible.builtin.wait_for:
50+
port: 22
51+
host: "{{ item }}.utility"
52+
search_regex: OpenSSH
53+
delay: 10
54+
timeout: 120
55+
loop: "{{ fabric_list }}"
56+
257
- name: Common spines and leaves configuration
358
hosts: "spines,leafs{{ router_bool | default(false) | ternary(',routers', '') }}"
459
tasks:

roles/adoption_osp_deploy/tasks/config_files.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,16 @@
3434
register: _original_config_download
3535
delegate_to: "localhost"
3636

37+
- name: Copy config download file as is (bgp)
38+
when: bgp
39+
delegate_to: "osp-undercloud-0"
40+
ansible.builtin.copy:
41+
content: "{{ _original_config_download['content'] |b64decode | from_yaml | to_nice_yaml(indent=2, sort_keys=false) }}"
42+
dest: "{{ ansible_user_dir }}/config_download_{{ _stack.stackname }}.yaml"
43+
mode: "0644"
44+
3745
- name: Generate config download file
46+
when: not bgp
3847
vars:
3948
_ctlplane_net: "{{ cifmw_networking_env_definition.networks.ctlplane }}"
4049
_hostname_map_translation: >-

roles/adoption_osp_deploy/tasks/generate_adoption_vars.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
- user_dir
2323

2424
- name: Generate adoption vars file
25+
when: not bgp
2526
delegate_to: "controller-0"
2627
vars:
2728
_undercloud_name: "{{ _vm_groups['osp-underclouds'] | first }}"
@@ -44,3 +45,22 @@
4445
src: "adoption_vars.yaml.j2"
4546
dest: "{{ ansible_user_dir }}/adoption_vars.yaml"
4647
mode: "0644"
48+
49+
50+
- name: Generate adoption vars file (BGP)
51+
when: bgp
52+
delegate_to: "controller-0"
53+
vars:
54+
_undercloud_name: "{{ _vm_groups['osp-underclouds'] | first }}"
55+
_undercloud_net: "{{ cifmw_networking_env_definition.instances[_undercloud_name] }}"
56+
_undercloud_ip: "{{ _undercloud_net.networks.ctlplaner0[ip_version|default('ip_v4')] }}"
57+
_controller_1_name: "{{ _vm_groups['osp-r0-controllers'] | first }}"
58+
_controller_1_net: "{{ cifmw_networking_env_definition.instances[_controller_1_name] }}"
59+
_controller_1_internalapi_ip: "99.99.0.29"
60+
_compute_1_name: "{{ _vm_groups['osp-r0-computes'] | first }}"
61+
_compute_1_net: "{{ cifmw_networking_env_definition.instances[_compute_1_name] }}"
62+
_compute_1_ip: "{{ _compute_1_net.networks.ctlplaner0[ip_version|default('ip_v4')] }}"
63+
ansible.builtin.template:
64+
src: "adoption_vars_bgp.yaml.j2"
65+
dest: "{{ ansible_user_dir }}/adoption_vars.yaml"
66+
mode: "0644"

roles/adoption_osp_deploy/tasks/prepare_overcloud.yml

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,12 +137,21 @@
137137
script: "{{ _source_cmd }}; {{ _vip_provision_cmd }}"
138138

139139
- name: Create tripleo ansible inventory
140+
when: not bgp
140141
delegate_to: "osp-undercloud-0"
141142
ansible.builtin.template:
142143
src: "tripleo-ansible-inventory.yaml.j2"
143144
dest: "{{ ansible_user_dir }}/overcloud-deploy/{{ _overcloud_name }}/tripleo-ansible-inventory.yaml"
144145
mode: "0644"
145146

147+
- name: Create tripleo ansible inventory (BGP)
148+
when: bgp
149+
delegate_to: "osp-undercloud-0"
150+
ansible.builtin.template:
151+
src: "tripleo-ansible-inventory_bgp.yaml.j2"
152+
dest: "{{ ansible_user_dir }}/overcloud-deploy/{{ _overcloud_name }}/tripleo-ansible-inventory.yaml"
153+
mode: "0644"
154+
146155
- name: Ensure os-net-config and openvswitch is installed in overcloud nodes
147156
become: true
148157
delegate_to: "{{ overcloud_vm }}"
@@ -184,6 +193,78 @@
184193
loop: "{{ _tripleo_nodes_stack[_overcloud_name] }}"
185194
loop_control:
186195
loop_var: overcloud_vm
196+
when: not bgp
197+
198+
- name: Generate os-net-config file for overcloud nodes (bgp)
199+
become: true
200+
delegate_to: "{{ overcloud_vm }}"
201+
vars:
202+
_node_net: "{{ cifmw_networking_env_definition.instances[overcloud_vm] }}"
203+
_dns_server: "{{ _ctlplane_net.[dns_version|default('dns_v4')] }}"
204+
_interface_mtu: 1500
205+
vms:
206+
osp-r0-compute-0:
207+
ctlplane: '192.168.122.100'
208+
left: '100.64.0.2'
209+
right: '100.65.0.2'
210+
main: '99.99.0.2'
211+
main6: 'f00d:f00d:f00d:f00d:f00d:f00d:f00d:0004'
212+
osp-r0-compute-1:
213+
ctlplane: '192.168.122.101'
214+
left: '100.64.0.6'
215+
right: '100.65.0.6'
216+
main: '99.99.0.6'
217+
main6: 'f00d:f00d:f00d:f00d:f00d:f00d:f00d:0005'
218+
osp-r1-compute-0:
219+
ctlplane: '192.168.123.105'
220+
left: '100.64.1.2'
221+
right: '100.65.1.2'
222+
main: '99.99.1.2'
223+
main6: 'f00d:f00d:f00d:f00d:f00d:f00d:f00d:0006'
224+
osp-r1-compute-1:
225+
ctlplane: '192.168.123.106'
226+
left: '100.64.1.6'
227+
right: '100.65.1.6'
228+
main: '99.99.1.6'
229+
main6: 'f00d:f00d:f00d:f00d:f00d:f00d:f00d:0007'
230+
osp-r2-compute-0:
231+
ctlplane: '192.168.124.110'
232+
left: '100.64.2.2'
233+
right: '100.65.2.2'
234+
main: '99.99.2.2'
235+
main6: 'f00d:f00d:f00d:f00d:f00d:f00d:f00d:0008'
236+
osp-r2-compute-1:
237+
ctlplane: '192.168.124.111'
238+
left: '100.64.2.6'
239+
right: '100.65.2.6'
240+
main: '99.99.2.6'
241+
main6: 'f00d:f00d:f00d:f00d:f00d:f00d:f00d:0009'
242+
osp-r0-controller-0:
243+
ctlplane: '192.168.122.140'
244+
left: '100.64.0.30'
245+
right: '100.65.0.30'
246+
main: '99.99.0.29'
247+
main6: 'f00d:f00d:f00d:f00d:f00d:f00d:f00d:0001'
248+
osp-r1-controller-0:
249+
ctlplane: '192.168.123.142'
250+
left: '100.64.1.30'
251+
right: '100.65.1.30'
252+
main: '99.99.1.29'
253+
main6: 'f00d:f00d:f00d:f00d:f00d:f00d:f00d:0002'
254+
osp-r2-controller-0:
255+
ctlplane: '192.168.124.144'
256+
left: '100.64.2.30'
257+
right: '100.65.2.30'
258+
main: '99.99.2.29'
259+
main6: 'f00d:f00d:f00d:f00d:f00d:f00d:f00d:0003'
260+
ansible.builtin.template:
261+
src: "os_net_config_overcloud_bgp.yml.j2"
262+
dest: /etc/os-net-config/tripleo_config.yaml
263+
mode: "0644"
264+
loop: "{{ _tripleo_nodes_stack[_overcloud_name] }}"
265+
loop_control:
266+
loop_var: overcloud_vm
267+
when: bgp
187268

188269
- name: Configure network interfaces for overcloud nodes
189270
become: true

roles/adoption_osp_deploy/tasks/prepare_undercloud.yml

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@
106106
mode: '0755'
107107

108108
- name: Generate os-net-config file
109+
when: not bgp
109110
become: true
110111
vars:
111112
_undercloud_name: "{{ _vm_groups['osp-underclouds'] | first }}"
@@ -122,6 +123,42 @@
122123
dest: /etc/os-net-config/tripleo_config.yaml
123124
mode: "0644"
124125

126+
- name: Obtain IPs whose routes need to be added to the undercloud (bgp)
127+
when: bgp
128+
ansible.builtin.shell: |
129+
getent ahosts {{ item }} | grep STREAM | awk '{print $1}' | grep -v :
130+
register: _ips_for_uc_routes_output
131+
loop:
132+
- registry.redhat.io
133+
- cdn.redhat.com
134+
- access.redhat.com
135+
- cdn01.quay.io
136+
137+
- name: Create list with the previous IPs
138+
when: bgp
139+
ansible.builtin.set_fact:
140+
ips_for_uc_routes_list: "{{ (ips_for_uc_routes_list | default([]) + item.stdout_lines) | ansible.builtin.unique }}"
141+
loop: "{{ _ips_for_uc_routes_output.results }}"
142+
143+
- name: Generate os-net-config file (bgp)
144+
when: bgp
145+
become: true
146+
vars:
147+
_undercloud_name: "{{ _vm_groups['osp-underclouds'] | first }}"
148+
_undercloud_net: "{{ cifmw_networking_env_definition.instances[_undercloud_name] }}"
149+
_ctlplane_ip: "{{ _undercloud_net.networks.ctlplaner0[ip_version|default('ip_v4')] }}"
150+
_ctlplane_vip: "{{ cifmw_adoption_osp_deploy_scenario.undercloud.ctlplane_vip }}"
151+
_ctlplane_net: "{{ cifmw_networking_env_definition.networks.ctlplaner0}}"
152+
_dns_server: "{{ _ctlplane_net[dns_version|default('dns_v4')] }}"
153+
_gateway_ip: "{{ _ctlplane_net[gw_version|default('gw_v4')] }}"
154+
_interface_mtu: "{{ _undercloud_net.networks.ctlplaner0.mtu }}"
155+
_ctlplane_cidr: "{{ _undercloud_net.networks.ctlplaner0[prefix_length_version|default('prefix_length_v4')] }}"
156+
_ips_for_uc_routes_list: "{{ ips_for_uc_routes_list }}"
157+
ansible.builtin.template:
158+
src: "os_net_config_undercloud_bgp.yml.j2"
159+
dest: /etc/os-net-config/tripleo_config.yaml
160+
mode: "0644"
161+
125162
- name: Copy undercloud.conf file to location to edit it
126163
ansible.builtin.copy:
127164
src: "/usr/share/python-tripleoclient/undercloud.conf.sample"
@@ -130,6 +167,7 @@
130167
mode: "0644"
131168

132169
- name: Add environment specific vars for undercloud
170+
when: not bgp
133171
vars:
134172
_undercloud_name: "{{ _vm_groups['osp-underclouds'] | first }}"
135173
_undercloud_net: "{{ cifmw_networking_env_definition.instances[_undercloud_name] }}"
@@ -185,6 +223,33 @@
185223
combine(_env_undercloud, recursive=true, list_merge="append_rp")
186224
}}
187225
226+
- name: Add environment specific vars for undercloud (bgp)
227+
when: bgp
228+
vars:
229+
_undercloud_name: "{{ _vm_groups['osp-underclouds'] | first }}"
230+
_undercloud_net: "{{ cifmw_networking_env_definition.instances[_undercloud_name] }}"
231+
_undercloud_ip: "{{ _undercloud_net.networks.ctlplaner0[ip_version|default('ip_v4')] }}"
232+
_undercloud_net_prefix: "{{ _undercloud_net.networks.ctlplaner0[prefix_length_version|default('prefix_length_v4')] }}"
233+
_ctlplane_cidr: "{{ cifmw_networking_env_definition.networks.ctlplaner0[network_version|default('network_v4')] }}"
234+
_interface_mtu: "{{ _undercloud_net.networks.ctlplaner0.mtu }}"
235+
_env_undercloud:
236+
config:
237+
- section: DEFAULT
238+
option: undercloud_ntp_servers
239+
value: "{{ cifmw_adoption_osp_deploy_ntp_server }}"
240+
- section: DEFAULT
241+
option: container_images_file
242+
value: "{{ ansible_user_dir }}/containers-prepare-parameters.yaml"
243+
- section: DEFAULT
244+
option: net_config_override
245+
value: "/etc/os-net-config/tripleo_config.yaml"
246+
ansible.builtin.set_fact:
247+
_undercloud_conf: >-
248+
{{
249+
cifmw_adoption_osp_deploy_scenario.undercloud |
250+
combine(_env_undercloud, recursive=true, list_merge="append_rp")
251+
}}
252+
188253
- name: Copy undercloud overrides file if present and amend undercloud conf
189254
when: cifmw_adoption_osp_deploy_scenario.undercloud.undercloud_parameters_override is defined
190255
vars:

0 commit comments

Comments
 (0)