aboutsummaryrefslogtreecommitdiff
path: root/roles/ca
diff options
context:
space:
mode:
Diffstat (limited to 'roles/ca')
-rw-r--r--roles/ca/files/ca.yaml32
-rw-r--r--roles/ca/files/lets-encrypt-dev.yaml18
-rw-r--r--roles/ca/files/lets-encrypt-prod.yaml18
-rw-r--r--roles/ca/tasks/main.yaml32
4 files changed, 100 insertions, 0 deletions
diff --git a/roles/ca/files/ca.yaml b/roles/ca/files/ca.yaml
new file mode 100644
index 0000000..a77b415
--- /dev/null
+++ b/roles/ca/files/ca.yaml
@@ -0,0 +1,32 @@
+---
+apiVersion: cert-manager.io/v1
+kind: ClusterIssuer
+metadata:
+ name: selfsigned-issuer
+spec:
+ selfSigned: {}
+---
+apiVersion: cert-manager.io/v1
+kind: Certificate
+metadata:
+ name: selfsigned-ca
+ namespace: cert-manager
+spec:
+ isCA: true
+ commonName: selfsigned-ca
+ secretName: root-secret
+ privateKey:
+ algorithm: ECDSA
+ size: 256
+ issuerRef:
+ name: selfsigned-issuer
+ kind: ClusterIssuer
+ group: cert-manager.io
+---
+apiVersion: cert-manager.io/v1
+kind: ClusterIssuer
+metadata:
+ name: ca-issuer
+spec:
+ ca:
+ secretName: root-secret
diff --git a/roles/ca/files/lets-encrypt-dev.yaml b/roles/ca/files/lets-encrypt-dev.yaml
new file mode 100644
index 0000000..e84120d
--- /dev/null
+++ b/roles/ca/files/lets-encrypt-dev.yaml
@@ -0,0 +1,18 @@
+apiVersion: cert-manager.io/v1
+kind: ClusterIssuer
+metadata:
+ name: letsencrypt-staging
+spec:
+ acme:
+ # The ACME server URL
+ server: https://acme-staging-v02.api.letsencrypt.org/directory
+ # Email address used for ACME registration
+ # Name of a secret used to store the ACME account private key
+ privateKeySecretRef:
+ name: letsencrypt-staging
+ # Enable the HTTP-01 challenge provider
+ solvers:
+ - http01:
+ ingress:
+ ingressClassName: traefik
diff --git a/roles/ca/files/lets-encrypt-prod.yaml b/roles/ca/files/lets-encrypt-prod.yaml
new file mode 100644
index 0000000..fb9b541
--- /dev/null
+++ b/roles/ca/files/lets-encrypt-prod.yaml
@@ -0,0 +1,18 @@
+apiVersion: cert-manager.io/v1
+kind: ClusterIssuer
+metadata:
+ name: letsencrypt-prod
+spec:
+ acme:
+ # The ACME server URL
+ server: https://acme-v02.api.letsencrypt.org/directory
+ # Email address used for ACME registration
+ # Name of a secret used to store the ACME account private key
+ privateKeySecretRef:
+ name: letsencrypt-prod
+ # Enable the HTTP-01 challenge provider
+ solvers:
+ - http01:
+ ingress:
+ ingressClassName: traefik
diff --git a/roles/ca/tasks/main.yaml b/roles/ca/tasks/main.yaml
new file mode 100644
index 0000000..36b17e1
--- /dev/null
+++ b/roles/ca/tasks/main.yaml
@@ -0,0 +1,32 @@
+- name: Setup Cert-manager chart
+ kubernetes.core.helm_repository:
+ name: jetstack
+ repo_url: "https://charts.jetstack.io"
+
+- name: Deploy Cert manager
+ kubernetes.core.helm:
+ name: cert-manager
+ chart_ref: jetstack/cert-manager
+ release_namespace: cert-manager
+ create_namespace: true
+ set_values:
+ - value: installCRDs=true
+ value_type: string
+
+- name: Create CA
+ kubernetes.core.k8s:
+ state: "{%- if servers.ca.enabled -%} present {%- else -%} absent {%- endif -%}"
+ src: "{{ lookup('env', 'PWD') }}/roles/ca/files/ca.yaml"
+ namespace: cert-manager
+
+- name: Add Lets Encrypt Dev
+ kubernetes.core.k8s:
+ state: "{%- if roles/ca.ca.enabled -%} present {%- else -%} absent {%- endif -%}"
+ src: "{{ lookup('env', 'PWD') }}/roles/ca/files/lets-encrypt-dev.yaml"
+ namespace: cert-manager
+
+- name: Add Lets Encrypt Dev
+ kubernetes.core.k8s:
+ state: "{%- if roles/ca.ca.enabled -%} present {%- else -%} absent {%- endif -%}"
+ src: "{{ lookup('env', 'PWD') }}/roles/ca/files/lets-encrypt-prod.yaml"
+ namespace: cert-manager