blob: 18266f6aeb43f3126c0590343e9561626ed67b9e [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
39- name: Deploy Helm chart
guilhermesteinmuller6f6bf702023-01-24 19:00:19 +000040 run_once: true
41 kubernetes.core.helm:
Mohammed Naser2145fc32023-01-29 23:23:03 +000042 name: "{{ neutron_helm_release_name }}"
43 chart_ref: "{{ neutron_helm_chart_ref }}"
44 release_namespace: "{{ neutron_helm_release_namespace }}"
guilhermesteinmuller6f6bf702023-01-24 19:00:19 +000045 create_namespace: true
46 kubeconfig: /etc/kubernetes/admin.conf
Mohammed Naser2145fc32023-01-29 23:23:03 +000047 values: "{{ _neutron_helm_values | combine(neutron_helm_values, recursive=True) }}"
Mohammed Naserb7b97d62022-03-12 16:30:00 -050048
49- name: Create Ingress
50 ansible.builtin.include_role:
51 name: openstack_helm_ingress
52 vars:
53 openstack_helm_ingress_endpoint: network
54 openstack_helm_ingress_service_name: neutron-server
55 openstack_helm_ingress_service_port: 9696
Mohammed Naser2145fc32023-01-29 23:23:03 +000056 openstack_helm_ingress_annotations: "{{ neutron_ingress_annotations }}"
Mohammed Naserb7b97d62022-03-12 16:30:00 -050057
Mohammed Naserb7b97d62022-03-12 16:30:00 -050058- name: Create networks
Mohammed Naser2145fc32023-01-29 23:23:03 +000059 when: neutron_networks | length > 0
Mohammed Naserc8e1a452022-08-11 16:16:13 -040060 block:
61 - name: Wait until network service ready
62 kubernetes.core.k8s_info:
63 api_version: apps/v1
64 kind: Deployment
65 name: neutron-server
66 namespace: openstack
67 wait_sleep: 10
68 wait_timeout: 600
69 wait: true
70 wait_condition:
71 type: Available
72 status: true
Mohammed Naserb7b97d62022-03-12 16:30:00 -050073
Mohammed Naserc8e1a452022-08-11 16:16:13 -040074 - name: Create networks
75 openstack.cloud.network:
76 cloud: atmosphere
77 # Network settings
78 name: "{{ item.name }}"
79 external: "{{ item.external | default(omit) }}"
80 shared: "{{ item.shared | default(omit) }}"
81 mtu_size: "{{ item.mtu_size | default(omit) }}"
82 port_security_enabled: "{{ item.port_security_enabled | default(omit) }}"
83 provider_network_type: "{{ item.provider_network_type | default(omit) }}"
84 provider_physical_network: "{{ item.provider_physical_network | default(omit) }}"
85 provider_segmentation_id: "{{ item.provider_segmentation_id | default(omit) }}"
Mohammed Naser2145fc32023-01-29 23:23:03 +000086 loop: "{{ neutron_networks }}"
Mohammed Naser52c3a702023-02-02 02:03:34 +000087 # NOTE(mnaser): This often fails since the SSL certificates are not
88 # ready yet. We need to wait for them to be ready.
89 retries: 60
90 delay: 5
91 register: _result
92 until: _result is not failed
Mohammed Naserc8e1a452022-08-11 16:16:13 -040093
94 - name: Create subnets
95 openstack.cloud.subnet:
96 cloud: atmosphere
97 # Subnet settings
98 network_name: "{{ item.0.name }}"
99 name: "{{ item.1.name }}"
100 ip_version: "{{ item.1.ip_version | default(omit) }}"
101 cidr: "{{ item.1.cidr | default(omit) }}"
102 gateway_ip: "{{ item.1.gateway_ip | default(omit) }}"
103 no_gateway_ip: "{{ item.1.no_gateway_ip | default(omit) }}"
104 allocation_pool_start: "{{ item.1.allocation_pool_start | default(omit) }}"
105 allocation_pool_end: "{{ item.1.allocation_pool_end | default(omit) }}"
106 dns_nameservers: "{{ item.1.dns_nameservers | default(omit) }}"
107 enable_dhcp: "{{ item.1.enable_dhcp | default(omit) }}"
108 host_routes: "{{ item.1.host_routes | default(omit) }}"
109 ipv6_address_mode: "{{ item.1.ipv6_address_mode | default(omit) }}"
110 ipv6_ra_mode: "{{ item.1.ipv6_ra_mode | default(omit) }}"
111 with_subelements:
Mohammed Naser2145fc32023-01-29 23:23:03 +0000112 - "{{ neutron_networks }}"
Mohammed Naserc8e1a452022-08-11 16:16:13 -0400113 - subnets
Mohammed Naser52c3a702023-02-02 02:03:34 +0000114 # NOTE(mnaser): This often fails since the SSL certificates are not
115 # ready yet. We need to wait for them to be ready.
116 retries: 60
117 delay: 5
118 register: _result
119 until: _result is not failed