168 lines
5.5 KiB
YAML
168 lines
5.5 KiB
YAML
---
|
|
- name: Deploy gitlab on OCP
|
|
hosts: localhost
|
|
gather_facts: false
|
|
|
|
tasks:
|
|
- name: Create cert-manager-operator namespace
|
|
redhat.openshift.k8s:
|
|
name: cert-manager-operator
|
|
api_version: v1
|
|
kind: Namespace
|
|
state: present
|
|
|
|
- name: Create OperatorGroup object for cert-manager-operator
|
|
redhat.openshift.k8s:
|
|
state: present
|
|
definition:
|
|
apiVersion: operators.coreos.com/v1
|
|
kind: OperatorGroup
|
|
metadata:
|
|
name: cert-manager-operator-operatorgroup
|
|
namespace: cert-manager-operator
|
|
spec:
|
|
targetNamespaces:
|
|
- cert-manager-operator
|
|
|
|
- name: Create cert-manager-operator subscription
|
|
redhat.openshift.k8s:
|
|
state: present
|
|
definition:
|
|
apiVersion: operators.coreos.com/v1alpha1
|
|
kind: Subscription
|
|
metadata:
|
|
labels:
|
|
operators.coreos.com/openshift-cert-manager-operator.cert-manager-operator: ''
|
|
name: openshift-cert-manager-operator
|
|
namespace: cert-manager-operator
|
|
spec:
|
|
channel: stable-v1
|
|
installPlanApproval: Automatic
|
|
name: openshift-cert-manager-operator
|
|
source: redhat-operators
|
|
sourceNamespace: openshift-marketplace
|
|
|
|
- name: Create gitlab-system namespace
|
|
redhat.openshift.k8s:
|
|
name: gitlab-system
|
|
api_version: v1
|
|
kind: Namespace
|
|
state: present
|
|
|
|
- name: Create OperatorGroup object for gitlab-operator-kubernetes
|
|
redhat.openshift.k8s:
|
|
state: present
|
|
definition:
|
|
apiVersion: operators.coreos.com/v1
|
|
kind: OperatorGroup
|
|
metadata:
|
|
name: gitlab-operator-kubernetes-operatorgroup
|
|
namespace: gitlab-system
|
|
spec:
|
|
targetNamespaces:
|
|
- gitlab-system
|
|
|
|
- name: Create gitlab subscription
|
|
redhat.openshift.k8s:
|
|
state: present
|
|
definition:
|
|
apiVersion: operators.coreos.com/v1alpha1
|
|
kind: Subscription
|
|
metadata:
|
|
labels:
|
|
operators.coreos.com/gitlab-operator-kubernetes.gitlab-system: ''
|
|
name: gitlab-operator-kubernetes
|
|
namespace: gitlab-system
|
|
spec:
|
|
channel: stable
|
|
installPlanApproval: Automatic
|
|
name: gitlab-operator-kubernetes
|
|
source: community-operators
|
|
sourceNamespace: openshift-marketplace
|
|
|
|
- name: Wait for gitlab operator to install
|
|
kubernetes.core.k8s_info:
|
|
api_version: apiextensions.k8s.io/v1
|
|
kind: CustomResourceDefinition
|
|
name: gitlabs.apps.gitlab.com
|
|
register: crd_gitlab
|
|
until: crd_gitlab.resources | list | length == 1
|
|
retries: 10
|
|
delay: 30
|
|
|
|
- name: Wait until gitlab-operator is up
|
|
kubernetes.core.k8s_info:
|
|
api_version: v1
|
|
kind: Deployment
|
|
name: gitlab-controller-manager
|
|
namespace: gitlab-system
|
|
register: pod_list
|
|
until: pod_list | json_query('resources[*].status.readyReplicas') | unique >= [1]
|
|
retries: 10
|
|
delay: 30
|
|
|
|
- name: Get available charts from gitlab operator repo
|
|
register: gitlab_chart_versions
|
|
ansible.builtin.uri:
|
|
url: https://gitlab.com/gitlab-org/cloud-native/gitlab-operator/-/raw/master/CHART_VERSIONS?ref_type=heads
|
|
method: GET
|
|
return_content: true
|
|
|
|
- name: Debug gitlab_chart_versions
|
|
ansible.builtin.debug:
|
|
var: gitlab_chart_versions.content | from_yaml
|
|
|
|
- name: Get latest chart from available_chart_versions
|
|
ansible.builtin.set_fact:
|
|
gitlab_chart_version: "{{ (gitlab_chart_versions.content | split())[0] }}"
|
|
|
|
- name: Grab url for Gitlab spec
|
|
ansible.builtin.set_fact:
|
|
cluster_domain: "apps{{ lookup('ansible.builtin.env', 'K8S_AUTH_HOST') | regex_search('\\.[^:]*') }}"
|
|
when: cluster_domain is undefined
|
|
|
|
- name: Deploy a GitLab instance
|
|
redhat.openshift.k8s:
|
|
state: present
|
|
definition:
|
|
apiVersion: apps.gitlab.com/v1beta1
|
|
kind: GitLab
|
|
metadata:
|
|
name: gitlab
|
|
namespace: gitlab-system
|
|
spec:
|
|
chart:
|
|
version: "{{ gitlab_chart_version }}"
|
|
values:
|
|
nginx-ingress:
|
|
enabled: false
|
|
certmanager:
|
|
install: false
|
|
global:
|
|
hosts:
|
|
domain: "{{ cluster_domain }}" # apps.cluster-9xrlv.9xrlv.sandbox644.opentlc.com
|
|
ingress:
|
|
class: none
|
|
configureCertmanager: true
|
|
annotations:
|
|
route.openshift.io/termination: "edge"
|
|
certmanager-issuer:
|
|
email: "{{ cert_email | default('nobody@nowhere.nosite') }}"
|
|
|
|
- name: Print out warning and initial details about deployment
|
|
vars:
|
|
msg: |
|
|
If not immediately successful be aware that the Gitlab instance can take
|
|
a couple minutes to come up, so be patient.
|
|
|
|
URL for Gitlab instance:
|
|
https://gitlab.{{ cluster_domain }}
|
|
|
|
The initial login user is 'root', and the password can be found by logging
|
|
into the OpenShift cluster portal, and on the left hand side of the administrator
|
|
portal, under workloads, select Secrets and look for 'gitlab-gitlab-initial-root-password'
|
|
ansible.builtin.debug:
|
|
msg: "{{ msg.split('\n') }}"
|
|
|
|
...
|