blob: f37f6a5f9e66108a70a52ac6336c9a4f3a4ce817 [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
Mohammed Naserb7b97d62022-03-12 16:30:00 -050048- name: Deploy Helm chart
guilhermesteinmuller6f6bf702023-01-24 19:00:19 +000049 run_once: true
50 kubernetes.core.helm:
Mohammed Naser2145fc32023-01-29 23:23:03 +000051 name: "{{ neutron_helm_release_name }}"
52 chart_ref: "{{ neutron_helm_chart_ref }}"
53 release_namespace: "{{ neutron_helm_release_namespace }}"
guilhermesteinmuller6f6bf702023-01-24 19:00:19 +000054 create_namespace: true
55 kubeconfig: /etc/kubernetes/admin.conf
Mohammed Naser2145fc32023-01-29 23:23:03 +000056 values: "{{ _neutron_helm_values | combine(neutron_helm_values, recursive=True) }}"
Mohammed Naserb7b97d62022-03-12 16:30:00 -050057
58- name: Create Ingress
59 ansible.builtin.include_role:
60 name: openstack_helm_ingress
61 vars:
62 openstack_helm_ingress_endpoint: network
63 openstack_helm_ingress_service_name: neutron-server
64 openstack_helm_ingress_service_port: 9696
Mohammed Naser2145fc32023-01-29 23:23:03 +000065 openstack_helm_ingress_annotations: "{{ neutron_ingress_annotations }}"
Mohammed Naserb7b97d62022-03-12 16:30:00 -050066
Mohammed Naserb7b97d62022-03-12 16:30:00 -050067- name: Create networks
Mohammed Naser2145fc32023-01-29 23:23:03 +000068 when: neutron_networks | length > 0
Mohammed Naserc8e1a452022-08-11 16:16:13 -040069 block:
70 - name: Wait until network service ready
71 kubernetes.core.k8s_info:
72 api_version: apps/v1
73 kind: Deployment
74 name: neutron-server
75 namespace: openstack
76 wait_sleep: 10
77 wait_timeout: 600
78 wait: true
79 wait_condition:
80 type: Available
81 status: true
Mohammed Naserb7b97d62022-03-12 16:30:00 -050082
Mohammed Naserc8e1a452022-08-11 16:16:13 -040083 - name: Create networks
84 openstack.cloud.network:
85 cloud: atmosphere
86 # Network settings
87 name: "{{ item.name }}"
88 external: "{{ item.external | default(omit) }}"
89 shared: "{{ item.shared | default(omit) }}"
90 mtu_size: "{{ item.mtu_size | default(omit) }}"
91 port_security_enabled: "{{ item.port_security_enabled | default(omit) }}"
92 provider_network_type: "{{ item.provider_network_type | default(omit) }}"
93 provider_physical_network: "{{ item.provider_physical_network | default(omit) }}"
94 provider_segmentation_id: "{{ item.provider_segmentation_id | default(omit) }}"
Mohammed Naser2145fc32023-01-29 23:23:03 +000095 loop: "{{ neutron_networks }}"
Mohammed Naser52c3a702023-02-02 02:03:34 +000096 # NOTE(mnaser): This often fails since the SSL certificates are not
97 # ready yet. We need to wait for them to be ready.
98 retries: 60
99 delay: 5
100 register: _result
101 until: _result is not failed
Mohammed Naserc8e1a452022-08-11 16:16:13 -0400102
103 - name: Create subnets
104 openstack.cloud.subnet:
105 cloud: atmosphere
106 # Subnet settings
107 network_name: "{{ item.0.name }}"
108 name: "{{ item.1.name }}"
109 ip_version: "{{ item.1.ip_version | default(omit) }}"
110 cidr: "{{ item.1.cidr | default(omit) }}"
111 gateway_ip: "{{ item.1.gateway_ip | default(omit) }}"
112 no_gateway_ip: "{{ item.1.no_gateway_ip | default(omit) }}"
113 allocation_pool_start: "{{ item.1.allocation_pool_start | default(omit) }}"
114 allocation_pool_end: "{{ item.1.allocation_pool_end | default(omit) }}"
115 dns_nameservers: "{{ item.1.dns_nameservers | default(omit) }}"
116 enable_dhcp: "{{ item.1.enable_dhcp | default(omit) }}"
117 host_routes: "{{ item.1.host_routes | default(omit) }}"
118 ipv6_address_mode: "{{ item.1.ipv6_address_mode | default(omit) }}"
119 ipv6_ra_mode: "{{ item.1.ipv6_ra_mode | default(omit) }}"
120 with_subelements:
Mohammed Naser2145fc32023-01-29 23:23:03 +0000121 - "{{ neutron_networks }}"
Mohammed Naserc8e1a452022-08-11 16:16:13 -0400122 - subnets
Mohammed Naser52c3a702023-02-02 02:03:34 +0000123 # NOTE(mnaser): This often fails since the SSL certificates are not
124 # ready yet. We need to wait for them to be ready.
125 retries: 60
126 delay: 5
127 register: _result
128 until: _result is not failed