You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

145 lines
3.0 KiB

apiVersion: v1
kind: Namespace
metadata:
labels:
kubernetes.io/metadata.name: os-builder
name: os-builder
spec:
finalizers:
- kubernetes
---
apiVersion: image.openshift.io/v1
kind: ImageStream
metadata:
labels:
app: ssh-client
name: ssh-client
namespace: os-builder
spec:
lookupPolicy:
local: false
---
apiVersion: image.openshift.io/v1
kind: ImageStream
metadata:
labels:
app: ssh-client
name: ubi9-minimal
namespace: os-builder
spec:
lookupPolicy:
local: false
tags:
- name: '9.3'
from:
kind: DockerImage
name: >-
registry.access.redhat.com/ubi9/ubi-minimal:9.3
generation: 1
importPolicy:
scheduled: true
importMode: Legacy
referencePolicy:
type: Source
---
apiVersion: build.openshift.io/v1
kind: BuildConfig
metadata:
labels:
app: ssh-client
name: ssh-client
namespace: os-builder
spec:
failedBuildsHistoryLimit: 5
nodeSelector: null
output:
to:
kind: ImageStreamTag
name: ssh-client:latest
postCommit: {}
resources: {}
runPolicy: Serial
source:
dockerfile: |-
FROM registry.access.redhat.com/ubi9/ubi-minimal:9.3
RUN microdnf install -y openssh-clients \
&& microdnf clean all \
&& useradd -m tekton
USER tekton
strategy:
dockerStrategy:
from:
kind: ImageStreamTag
name: ubi9-minimal:9.3
namespace: os-builder
successfulBuildsHistoryLimit: 5
triggers:
- type: ConfigChange
- imageChange: {}
type: ImageChange
---
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: ssh-client
namespace: os-builder
spec:
params:
- name: sshKey
type: string
default: ssh-privatekey
- name: sshUsername
type: string
- name: sshHostname
type: string
- name: sshCommand
type: string
volumes:
- name: ssh
secret:
secretName: os-builder-ssh-config
defaultMode: 0600
steps:
- name: ssh
image: image-registry.openshift-image-registry.svc:5000/os-builder/ssh-client:latest
workingDir: /home/tekton
volumeMounts:
- name: ssh
mountPath: /home/tekton/.ssh
env:
- name: SSH_USERNAME
value: "$(params.sshUsername)"
- name: SSH_KEY
value: "$(params.sshKey)"
- name: SSH_HOSTNAME
value: "$(params.sshHostname)"
- name: SSH_COMMAND
value: "$(params.sshCommand)"
script: |
#!/bin/bash
set -Eeuo pipefail
echo "========================================================="
echo " Executing OS Builder on $SSH_HOSTNAME"
echo "========================================================="
echo
ssh -i "~/.ssh/$SSH_KEY" "$SSH_USERNAME@$SSH_HOSTNAME" "$SSH_COMMAND"
---
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
name: os-builder
namespace: os-builder
spec:
tasks:
- name: ssh-client
params:
- name: sshUsername
value: "john"
- name: sshHostname
value: "os-builder.acme.tld"
- name: sshCommand
value: "/home/john/build.sh"
taskRef:
name: ssh-client