blob: e6516ab4fb0477e47bf6a76d623666b363fe08a0 [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
Mohammed Naserc8e1a452022-08-11 16:16:13 -040015- name: Deploy Helm chart
16 kubernetes.core.k8s:
17 state: present
18 definition:
Mohammed Naserc8e1a452022-08-11 16:16:13 -040019 - apiVersion: helm.toolkit.fluxcd.io/v2beta1
20 kind: HelmRelease
21 metadata:
22 name: cert-manager
23 namespace: cert-manager
24 spec:
25 interval: 60s
26 chart:
27 spec:
28 chart: cert-manager
29 version: v1.7.1
30 sourceRef:
31 kind: HelmRepository
32 name: jetstack
33 install:
34 crds: CreateReplace
35 upgrade:
36 crds: CreateReplace
37 values:
38 installCRDs: true
39 volumes:
40 - name: etc-ssl-certs
41 hostPath:
42 path: /etc/ssl/certs
43 volumeMounts:
44 - name: etc-ssl-certs
45 mountPath: /etc/ssl/certs
46 readOnly: true
47 nodeSelector:
48 openstack-control-plane: enabled
49 webhook:
50 nodeSelector:
51 openstack-control-plane: enabled
52 cainjector:
53 nodeSelector:
54 openstack-control-plane: enabled
55 startupapicheck:
56 nodeSelector:
57 openstack-control-plane: enabled
58
59- name: Create Issuer
Mohammed Naserb7b97d62022-03-12 16:30:00 -050060 kubernetes.core.k8s:
61 state: present
62 definition:
63 apiVersion: cert-manager.io/v1
64 kind: Issuer
65 metadata:
66 name: openstack
67 namespace: openstack
68 spec: "{{ cert_manager_issuer }}"
Mohammed Naserc8e1a452022-08-11 16:16:13 -040069 # NOTE(mnaser): Since we haven't moved to the operator pattern yet, we need to
70 # keep retrying a few times as the CRDs might not be installed
71 # yet.
72 retries: 60
73 delay: 5
74 register: _result
75 until: _result is not failed
okozachenko05a72ed2022-04-12 23:01:43 +100076
okozachenko674f9b72022-04-19 01:28:33 +100077- name: Bootstrap self-signed PKI
78 block:
79 - name: Create self-signed issuer
80 kubernetes.core.k8s:
81 state: present
82 definition:
83 apiVersion: cert-manager.io/v1
okozachenko05a72ed2022-04-12 23:01:43 +100084 kind: ClusterIssuer
okozachenko674f9b72022-04-19 01:28:33 +100085 metadata:
86 name: selfsigned-issuer
87 spec:
88 selfSigned: {}
89
90 - name: Bootstrap a custom root certificate for a private PKI
91 kubernetes.core.k8s:
92 state: present
93 definition:
94 apiVersion: cert-manager.io/v1
95 kind: Certificate
96 metadata:
97 name: selfsigned-ca
98 namespace: openstack
99 spec:
100 isCA: true
101 commonName: selfsigned-ca
102 secretName: root-secret
103 duration: 86400h # 3600d
104 renewBefore: 360h # 15d
105 privateKey:
106 algorithm: ECDSA
107 size: 256
108 issuerRef:
109 name: selfsigned-issuer
110 kind: ClusterIssuer
111 group: cert-manager.io
112
113 - name: Wait till the root secret is created
114 kubernetes.core.k8s_info:
115 api_version: v1
116 kind: Secret
117 wait: true
118 name: root-secret
119 namespace: openstack
120 wait_sleep: 10
121 wait_timeout: 300
122 register: _openstack_helm_root_secret
123
124 - name: Copy CA certificate on host
125 ansible.builtin.copy:
126 content: "{{ _openstack_helm_root_secret.resources[0].data['tls.crt'] | b64decode }}"
127 dest: "/usr/local/share/ca-certificates/self-signed-osh-ca.crt"
128 mode: "0644"
129
130 - name: Update ca certificates on host
131 ansible.builtin.command:
132 cmd: update-ca-certificates
133 changed_when: false
134 when:
135 - cert_manager_issuer.ca.secretName is defined
136 - cert_manager_issuer.ca.secretName == "root-secret"