Concourse Lab Creation

Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Ambiente di test

Esecuzione di Concourse

Con Docker-Compose

Questo file docker-compose semplifica l'installazione per effettuare alcuni test con Concourse:

wget https://raw.githubusercontent.com/starkandwayne/concourse-tutorial/master/docker-compose.yml
docker-compose up -d

Puoi scaricare la linea di comando fly per il tuo sistema operativo dal web all'indirizzo 127.0.0.1:8080

Con Kubernetes (Consigliato)

Puoi facilmente distribuire Concourse in Kubernetes (ad esempio in minikube) utilizzando il chart di Helm: 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 di Concourse, è possibile generare un segreto e concedere l'accesso all'account di servizio in esecuzione nel web di Concourse per accedere ai segreti di 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 -

Creazione del Pipeline

Un pipeline è composto da una lista di Jobs che contiene un elenco ordinato di Steps.

Steps

Possono essere utilizzati diversi tipi di steps:

Ogni step in un job plan viene eseguito nel suo proprio container. Puoi eseguire qualsiasi cosa desideri all'interno del container (ad esempio, eseguire i miei test, eseguire questo script bash, creare questa immagine, ecc.). Quindi, se hai un job con cinque steps, Concourse creerà cinque container, uno per ogni step.

Pertanto, è possibile indicare il tipo di container in cui ogni step 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 del pipeline.

Script Bash con pipeline di input/output

È possibile salvare i risultati di un task in un file e indicare che si tratta di un output, per poi indicare l'input del task successivo come l'output del task precedente. Ciò che fa Concourse è montare la directory del task precedente nel nuovo task, in modo da poter accedere ai file creati dal task precedente.

Trigger

Non è necessario attivare manualmente i job ogni volta che è necessario eseguirli, è anche possibile programmarli per essere eseguiti automaticamente:

Controlla un esempio di pipeline YAML che viene attivata alla ricezione di nuovi commit nel branch master su https://concourse-ci.org/tutorial-resources.html

Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Last updated