Δημιουργία Εργαστηρίου Concourse
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Περιβάλλον Δοκιμών
Εκτέλεση Concourse
Με Docker-Compose
Αυτό το αρχείο docker-compose απλοποιεί την εγκατάσταση για να κάνετε μερικές δοκιμές με το concourse:
wget https://raw.githubusercontent.com/starkandwayne/concourse-tutorial/master/docker-compose.yml
docker-compose up -d
Μπορείτε να κατεβάσετε τη γραμμή εντολών fly για το λειτουργικό σας σύστημα από το διαδίκτυο στο 127.0.0.1:8080
Με Kubernetes (Συνιστάται)
Μπορείτε να αναπτύξετε εύκολα το concourse σε Kubernetes (π.χ. σε minikube) χρησιμοποιώντας το 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
Αφού δημιουργήσετε το περιβάλλον concourse, μπορείτε να δημιουργήσετε ένα μυστικό και να δώσετε πρόσβαση στο SA που εκτελείται στο concourse web για να έχει πρόσβαση στα μυστικά 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 -
Δημιουργία Pipeline
Ένα pipeline αποτελείται από μια λίστα Jobs που περιέχει μια ταξινομημένη λίστα Steps.
Βήματα
Μπορούν να χρησιμοποιηθούν διάφοροι τύποι βημάτων:
- το
taskβήμα εκτελεί μια εργασία - το
getβήμα ανακτά μια πόρο - το
putβήμα ενημερώνει μια πόρο - το
set_pipelineβήμα ρυθμίζει ένα pipeline - το
load_varβήμα φορτώνει μια τιμή σε μια τοπική μεταβλητή - το
in_parallelβήμα εκτελεί βήματα παράλληλα - το
doβήμα εκτελεί βήματα διαδοχικά - ο
acrossτροποποιητής βήματος εκτελεί ένα βήμα πολλές φορές; μία φορά για κάθε συνδυασμό τιμών μεταβλητών - το
tryβήμα προσπαθεί να εκτελέσει ένα βήμα και επιτυγχάνει ακόμη και αν το βήμα αποτύχει
Κάθε βήμα σε ένα σχέδιο εργασίας εκτελείται σε δικό του κοντέινερ. Μπορείτε να εκτελέσετε οτιδήποτε θέλετε μέσα στο κοντέινερ (δηλαδή, να εκτελέσετε τις δοκιμές μου, να εκτελέσετε αυτό το bash script, να κατασκευάσετε αυτή την εικόνα, κ.λπ.). Έτσι, αν έχετε μια εργασία με πέντε βήματα, το Concourse θα δημιουργήσει πέντε κοντέινερ, ένα για κάθε βήμα.
Επομένως, είναι δυνατόν να υποδείξετε τον τύπο κοντέινερ που χρειάζεται να εκτελείται κάθε βήμα.
Απλό Παράδειγμα Pipeline
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
Ελέγξτε 127.0.0.1:8080 για να δείτε τη ροή της pipeline.
Bash script με ροή εξόδου/εισόδου
Είναι δυνατόν να αποθηκεύσετε τα αποτελέσματα μιας εργασίας σε ένα αρχείο και να δηλώσετε ότι είναι μια έξοδος και στη συνέχεια να δηλώσετε την είσοδο της επόμενης εργασίας ως την έξοδο της προηγούμενης εργασίας. Αυτό που κάνει το concourse είναι να τοποθετεί τον κατάλογο της προηγούμενης εργασίας στην νέα εργασία όπου μπορείτε να έχετε πρόσβαση στα αρχεία που δημιουργήθηκαν από την προηγούμενη εργασία.
Triggers
Δεν χρειάζεται να ενεργοποιείτε τις εργασίες χειροκίνητα κάθε φορά που χρειάζεται να τις εκτελέσετε, μπορείτε επίσης να τις προγραμματίσετε να εκτελούνται κάθε φορά:
- Κάποιος χρόνος περνά: Time resource
- Σε νέες commits στο κύριο branch: Git resource
- Νέα PR’s: Github-PR resource
- Λάβετε ή σπρώξτε την τελευταία εικόνα της εφαρμογής σας: Registry-image resource
Ελέγξτε ένα παράδειγμα YAML pipeline που ενεργοποιείται σε νέες commits στο master στο https://concourse-ci.org/tutorial-resources.html
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
HackTricks Cloud

