Skip to content

Instantly share code, notes, and snippets.

@tanwald
Last active November 14, 2023 15:43
Show Gist options
  • Save tanwald/df04a9dfff1fa777aec821ad74907193 to your computer and use it in GitHub Desktop.
Save tanwald/df04a9dfff1fa777aec821ad74907193 to your computer and use it in GitHub Desktop.
tekton-dbaas
---
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: dbaas-create
labels:
app.kubernetes.io/component: tekton
spec:
description: 'Task to create an Exoscale DBAAS.'
workspaces:
- name: exoscale-config
description: 'Workspace containing Exoscale-CLI config.'
params:
- name: DATABASE
description: 'Database to create.'
- name: DATABASE_NAME
description: 'Name of the database to create.'
stepTemplate:
env:
- name: EXOSCALE_CONFIG
value: $(workspaces.exoscale-config.path)/exoscale.toml
steps:
- name: create
image: docker.io/exoscale/cli:latest
args:
- dbaas
- create
- $(params.DATABASE)
- startup-4
- $(params.DATABASE_NAME)
- --$(params.DATABASE)-ip-filter=0.0.0.0/0
- --termination-protection=false
---
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
name: dbaas-create
spec:
description: 'Pipeline to create an Exoscale DBAAS.'
params:
- name: DATABASE
description: 'Database to create.'
- name: DATABASE_NAME
description: 'Name of the database to create.'
workspaces:
- name: exoscale-config
tasks:
- name: dbaas-create
taskRef:
name: dbaas-create
kind: Task
params:
- name: DATABASE
value: $(params.DATABASE)
- name: DATABASE_NAME
value: $(params.DATABASE_NAME)
workspaces:
- name: exoscale-config
workspace: exoscale-config
- name: dbaas-wait
taskRef:
name: dbaas-wait
kind: Task
runAfter:
- dbaas-create
params:
- name: DATABASE
value: $(params.DATABASE)
- name: DATABASE_NAME
value: $(params.DATABASE_NAME)
workspaces:
- name: exoscale-config
workspace: exoscale-config
---
apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
generateName: dbaas-create-
spec:
params:
- name: DATABASE
value: 'pg'
- name: DATABASE_NAME
value: 'pg-test'
pipelineRef:
name: dbaas-create
serviceAccountName: pipelines
workspaces:
- name: exoscale-config
secret:
secretName: exoscale-config
---
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: dbaas-fork
labels:
app.kubernetes.io/component: tekton
spec:
description: 'Task to fork an Exoscale DBAAS.'
workspaces:
- name: exoscale-config
description: 'Workspace containing Exoscale-CLI config.'
params:
- name: DATABASE
description: 'Database to create.'
- name: DATABASE_NAME
description: 'Name of the database to create.'
- name: DATABASE_FROM
description: 'Name of the database to fork from.'
stepTemplate:
env:
- name: EXOSCALE_CONFIG
value: $(workspaces.exoscale-config.path)/exoscale.toml
steps:
- name: fork
image: docker.io/exoscale/cli:latest
args:
- dbaas
- create
- $(params.DATABASE)
- startup-4
- $(params.DATABASE_NAME)
- --$(params.DATABASE)-fork-from=$(params.DATABASE_FROM)
- --$(params.DATABASE)-ip-filter=0.0.0.0/0
- --termination-protection=false
---
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
name: dbaas-fork
spec:
description: 'Pipeline to fork an Exoscale DBAAS.'
params:
- name: DATABASE
description: 'Database to create.'
- name: DATABASE_NAME
description: 'Name of the database to create.'
- name: DATABASE_FROM
description: 'Name of the database to fork from.'
workspaces:
- name: exoscale-config
tasks:
- name: dbaas-fork
taskRef:
name: dbaas-fork
kind: Task
params:
- name: DATABASE
value: $(params.DATABASE)
- name: DATABASE_NAME
value: $(params.DATABASE_NAME)
- name: DATABASE_FROM
value: $(params.DATABASE_FROM)
workspaces:
- name: exoscale-config
workspace: exoscale-config
- name: dbaas-wait
taskRef:
name: dbaas-wait
kind: Task
runAfter:
- dbaas-fork
params:
- name: DATABASE
value: $(params.DATABASE)
- name: DATABASE_NAME
value: $(params.DATABASE_NAME)
workspaces:
- name: exoscale-config
workspace: exoscale-config
---
apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
generateName: dbaas-fork-
spec:
params:
- name: DATABASE
value: 'pg'
- name: DATABASE_NAME
value: 'pg-test-fork'
- name: DATABASE_FROM
value: 'pg-test'
pipelineRef:
name: dbaas-fork
serviceAccountName: pipelines
workspaces:
- name: exoscale-config
secret:
secretName: exoscale-config
---
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: dbaas-wait
labels:
app.kubernetes.io/component: tekton
spec:
description: 'Task that waits for an Exoscale DBAAS to become ready.'
workspaces:
- name: exoscale-config
description: 'Workspace containing Exoscale-CLI config.'
params:
- name: DATABASE
description: 'Database to wait for.'
- name: DATABASE_NAME
description: 'Name of the database to wait for.'
stepTemplate:
env:
- name: EXOSCALE_CONFIG
value: $(workspaces.exoscale-config.path)/exoscale.toml
steps:
- name: wait
image: docker.io/exoscale/cli:latest
args:
- $(params.DATABASE_NAME)
script: |
until [[ "$(/exo dbaas show $1 --output-template '{{.State}}')" == "running" ]]; do
echo "Waiting for $1 to become ready..."
sleep 3s
done
/exo dbaas show $1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment