Creazione del Laboratorio Concourse
Reading time: 6 minutes
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.
Ambiente di Test
Esecuzione di Concourse
Con Docker-Compose
Questo file docker-compose semplifica l'installazione per eseguire alcuni test con concourse:
wget https://raw.githubusercontent.com/starkandwayne/concourse-tutorial/master/docker-compose.yml
docker-compose up -d
Puoi scaricare la riga di comando fly
per il tuo sistema operativo dal web in 127.0.0.1:8080
Con Kubernetes (Consigliato)
Puoi facilmente distribuire concourse in Kubernetes (in minikube ad esempio) utilizzando il helm-chart: concourse-chart.
brew install helm
helm repo add concourse https://concourse-charts.storage.googleapis.com/
helm install concourse-release concourse/concourse
# concourse-release will be the prefix name for the concourse elements in k8s
# After the installation you will find the indications to connect to it in the console
# If you need to delete it
helm delete concourse-release
Dopo aver generato l'ambiente concourse, puoi generare un segreto e dare accesso al SA in esecuzione nel concourse web per accedere ai segreti K8s:
echo 'apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: read-secrets
rules:
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: read-secrets-concourse
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: read-secrets
subjects:
- kind: ServiceAccount
name: concourse-release-web
namespace: default
---
apiVersion: v1
kind: Secret
metadata:
name: super
namespace: concourse-release-main
type: Opaque
data:
secret: MWYyZDFlMmU2N2Rm
' | kubectl apply -f -
Crea Pipeline
Un pipeline è composto da un elenco di Jobs che contiene un elenco ordinato di Steps.
Steps
Possono essere utilizzati diversi tipi di passaggi:
- il
task
step esegue un task - il
get
step recupera una resource - il
put
step aggiorna una resource - il
set_pipeline
step configura un pipeline - il
load_var
step carica un valore in una local var - il
in_parallel
step esegue i passaggi in parallelo - il
do
step esegue i passaggi in sequenza - il
across
step modifier esegue un passaggio più volte; una volta per ogni combinazione di valori delle variabili - il
try
step tenta di eseguire un passaggio e ha successo anche se il passaggio fallisce
Ogni step in un job plan viene eseguito nel proprio container. Puoi eseguire qualsiasi cosa tu voglia all'interno del container (cioè eseguire i miei test, eseguire questo script bash, costruire questa immagine, ecc.). Quindi, se hai un job con cinque passaggi, Concourse creerà cinque container, uno per ogni passaggio.
Pertanto, è possibile indicare il tipo di container in cui ogni passaggio deve essere eseguito.
Esempio di Pipeline Semplice
jobs:
- name: simple
plan:
- task: simple-task
privileged: true
config:
# Tells Concourse which type of worker this task should run on
platform: linux
image_resource:
type: registry-image
source:
repository: busybox # images are pulled from docker hub by default
run:
path: sh
args:
- -cx
- |
sleep 1000
echo "$SUPER_SECRET"
params:
SUPER_SECRET: ((super.secret))
fly -t tutorial set-pipeline -p pipe-name -c hello-world.yml
# pipelines are paused when first created
fly -t tutorial unpause-pipeline -p pipe-name
# trigger the job and watch it run to completion
fly -t tutorial trigger-job --job pipe-name/simple --watch
# From another console
fly -t tutorial intercept --job pipe-name/simple
Controlla 127.0.0.1:8080 per vedere il flusso della pipeline.
Script Bash con pipeline di output/input
È possibile salvare i risultati di un'attività in un file e indicare che è un output e poi indicare l'input della successiva attività come l'output della precedente attività. Quello che fa concourse è montare la directory della precedente attività nella nuova attività dove puoi accedere ai file creati dalla precedente attività.
Trigger
Non è necessario attivare manualmente i lavori ogni volta che devi eseguirli, puoi anche programmarli per essere eseguiti ogni volta:
- Passa del tempo: Time resource
- Su nuovi commit nel ramo principale: Git resource
- Nuovi PR: Github-PR resource
- Recupera o invia l'immagine più recente della tua app: Registry-image resource
Controlla un esempio di pipeline YAML che si attiva su nuovi commit nel master in https://concourse-ci.org/tutorial-resources.html
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.