blob: 397a64d0cfb28c6555f421d308f26d9ba27caebc [file] [log] [blame]
Mohammed Naserb7b97d62022-03-12 16:30:00 -05001# Copyright (c) 2022 VEXXHOST, Inc.
2#
3# Licensed under the Apache License, Version 2.0 (the "License"); you may
4# not use this file except in compliance with the License. You may obtain
5# a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12# License for the specific language governing permissions and limitations
13# under the License.
14
guilhermesteinmuller6f6bf702023-01-24 19:00:19 +000015- name: Uninstall the legacy HelmRelease
16 run_once: true
17 block:
18 - name: Suspend the existing HelmRelease
Mohammed Naserf0314a82023-04-11 18:53:30 +000019 failed_when: false
guilhermesteinmuller6f6bf702023-01-24 19:00:19 +000020 kubernetes.core.k8s:
21 state: patched
22 api_version: helm.toolkit.fluxcd.io/v2beta1
23 kind: HelmRelease
Mohammed Naser2145fc32023-01-29 23:23:03 +000024 name: "{{ neutron_helm_release_name }}"
25 namespace: "{{ neutron_helm_release_namespace }}"
guilhermesteinmuller6f6bf702023-01-24 19:00:19 +000026 definition:
27 spec:
28 suspend: true
29
30 - name: Remove the existing HelmRelease
Mohammed Naserf0314a82023-04-11 18:53:30 +000031 failed_when: false
guilhermesteinmuller6f6bf702023-01-24 19:00:19 +000032 kubernetes.core.k8s:
33 state: absent
34 api_version: helm.toolkit.fluxcd.io/v2beta1
35 kind: HelmRelease
Mohammed Naser2145fc32023-01-29 23:23:03 +000036 name: "{{ neutron_helm_release_name }}"
37 namespace: "{{ neutron_helm_release_namespace }}"
Mohammed Naserb7b97d62022-03-12 16:30:00 -050038
Mohammed Naser54ee9922023-07-22 18:40:25 +000039- name: Generate Helm values
40 ansible.builtin.set_fact:
41 _neutron_helm_values: "{{ __neutron_helm_values }}"
42
Mohammed Naser1d75a922023-07-23 19:24:49 +000043- name: Append Helm values
44 when: atmosphere_network_backend == 'ovn'
45 ansible.builtin.set_fact:
46 _neutron_helm_values: "{{ _neutron_helm_values | combine(__neutron_ovn_helm_values, recursive=True) }}"
Mohammed Naser54ee9922023-07-22 18:40:25 +000047
Oleksandr Ka45c0e72023-12-11 15:13:00 +010048- name: Set external_dns_driver
49 ansible.builtin.set_fact:
50 _neutron_external_dns_driver: "designate"
51 when: neutron_designate_integration_enabled | bool
52
Mohammed Naserb7b97d62022-03-12 16:30:00 -050053- name: Deploy Helm chart
guilhermesteinmuller6f6bf702023-01-24 19:00:19 +000054 run_once: true
55 kubernetes.core.helm:
Mohammed Naser2145fc32023-01-29 23:23:03 +000056 name: "{{ neutron_helm_release_name }}"
57 chart_ref: "{{ neutron_helm_chart_ref }}"
58 release_namespace: "{{ neutron_helm_release_namespace }}"
guilhermesteinmuller6f6bf702023-01-24 19:00:19 +000059 create_namespace: true
60 kubeconfig: /etc/kubernetes/admin.conf
Mohammed Naser2145fc32023-01-29 23:23:03 +000061 values: "{{ _neutron_helm_values | combine(neutron_helm_values, recursive=True) }}"
Mohammed Naserb7b97d62022-03-12 16:30:00 -050062
63- name: Create Ingress
64 ansible.builtin.include_role:
65 name: openstack_helm_ingress
66 vars:
67 openstack_helm_ingress_endpoint: network
68 openstack_helm_ingress_service_name: neutron-server
69 openstack_helm_ingress_service_port: 9696
Mohammed Naser2145fc32023-01-29 23:23:03 +000070 openstack_helm_ingress_annotations: "{{ neutron_ingress_annotations }}"
Mohammed Naserb7b97d62022-03-12 16:30:00 -050071
Mohammed Naserb7b97d62022-03-12 16:30:00 -050072- name: Create networks
Mohammed Naser2145fc32023-01-29 23:23:03 +000073 when: neutron_networks | length > 0
Mohammed Naserc8e1a452022-08-11 16:16:13 -040074 block:
75 - name: Wait until network service ready
76 kubernetes.core.k8s_info:
77 api_version: apps/v1
78 kind: Deployment
79 name: neutron-server
80 namespace: openstack
81 wait_sleep: 10
82 wait_timeout: 600
83 wait: true
84 wait_condition:
85 type: Available
86 status: true
Mohammed Naserb7b97d62022-03-12 16:30:00 -050087
Mohammed Naserc8e1a452022-08-11 16:16:13 -040088 - name: Create networks
89 openstack.cloud.network:
90 cloud: atmosphere
91 # Network settings
92 name: "{{ item.name }}"
93 external: "{{ item.external | default(omit) }}"
94 shared: "{{ item.shared | default(omit) }}"
95 mtu_size: "{{ item.mtu_size | default(omit) }}"
96 port_security_enabled: "{{ item.port_security_enabled | default(omit) }}"
97 provider_network_type: "{{ item.provider_network_type | default(omit) }}"
98 provider_physical_network: "{{ item.provider_physical_network | default(omit) }}"
99 provider_segmentation_id: "{{ item.provider_segmentation_id | default(omit) }}"
Mohammed Naser2145fc32023-01-29 23:23:03 +0000100 loop: "{{ neutron_networks }}"
Mohammed Naser52c3a702023-02-02 02:03:34 +0000101 # NOTE(mnaser): This often fails since the SSL certificates are not
102 # ready yet. We need to wait for them to be ready.
103 retries: 60
104 delay: 5
105 register: _result
106 until: _result is not failed
Mohammed Naserc8e1a452022-08-11 16:16:13 -0400107
108 - name: Create subnets
109 openstack.cloud.subnet:
110 cloud: atmosphere
111 # Subnet settings
112 network_name: "{{ item.0.name }}"
113 name: "{{ item.1.name }}"
114 ip_version: "{{ item.1.ip_version | default(omit) }}"
115 cidr: "{{ item.1.cidr | default(omit) }}"
116 gateway_ip: "{{ item.1.gateway_ip | default(omit) }}"
117 no_gateway_ip: "{{ item.1.no_gateway_ip | default(omit) }}"
118 allocation_pool_start: "{{ item.1.allocation_pool_start | default(omit) }}"
119 allocation_pool_end: "{{ item.1.allocation_pool_end | default(omit) }}"
120 dns_nameservers: "{{ item.1.dns_nameservers | default(omit) }}"
121 enable_dhcp: "{{ item.1.enable_dhcp | default(omit) }}"
122 host_routes: "{{ item.1.host_routes | default(omit) }}"
123 ipv6_address_mode: "{{ item.1.ipv6_address_mode | default(omit) }}"
124 ipv6_ra_mode: "{{ item.1.ipv6_ra_mode | default(omit) }}"
125 with_subelements:
Mohammed Naser2145fc32023-01-29 23:23:03 +0000126 - "{{ neutron_networks }}"
Mohammed Naserc8e1a452022-08-11 16:16:13 -0400127 - subnets
Mohammed Naser52c3a702023-02-02 02:03:34 +0000128 # NOTE(mnaser): This often fails since the SSL certificates are not
129 # ready yet. We need to wait for them to be ready.
130 retries: 60
131 delay: 5
132 register: _result
133 until: _result is not failed