Concourse Lab Creation
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
Środowisko testowe
Uruchamianie Concourse
Z Docker-Compose
Ten plik docker-compose upraszcza instalację, aby przeprowadzić kilka testów z concourse:
wget https://raw.githubusercontent.com/starkandwayne/concourse-tutorial/master/docker-compose.yml
docker-compose up -d
Możesz pobrać linię poleceń fly dla swojego systemu operacyjnego z sieci pod adresem 127.0.0.1:8080
Z Kubernetes (Zalecane)
Możesz łatwo wdrożyć concourse w Kubernetes (na przykład w minikube) używając 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
Po wygenerowaniu środowiska concourse, możesz wygenerować sekret i przyznać dostęp do SA działającego w concourse web, aby uzyskać dostęp do sekretów 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 -
Utwórz Pipeline
Pipeline składa się z listy Jobs, która zawiera uporządkowaną listę Steps.
Kroki
Można użyć kilku różnych typów kroków:
- krok
taskuruchamia zadanie - krok
getpobiera zasób - krok
putaktualizuje zasób - krok
set_pipelinekonfiguruje pipeline - krok
load_varładuje wartość do zmiennej lokalnej - krok
in_paralleluruchamia kroki równolegle - krok
douruchamia kroki w sekwencji - modyfikator kroku
acrossuruchamia krok wielokrotnie; raz dla każdej kombinacji wartości zmiennych - krok
trypróbuje uruchomić krok i odnosi sukces, nawet jeśli krok się nie powiedzie
Każdy krok w planie zadania działa w swoim własnym kontenerze. Możesz uruchomić wszystko, co chcesz wewnątrz kontenera (tzn. uruchomić moje testy, uruchomić ten skrypt bash, zbudować ten obraz itp.). Więc jeśli masz zadanie z pięcioma krokami, Concourse utworzy pięć kontenerów, po jednym dla każdego kroku.
Dlatego możliwe jest wskazanie, w jakim typie kontenera każdy krok musi być uruchomiony.
Przykład prostego pipeline’a
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
Sprawdź 127.0.0.1:8080, aby zobaczyć przepływ pipeline’u.
Skrypt Bash z potokiem wejścia/wyjścia
Możliwe jest zapisanie wyników jednego zadania w pliku i wskazanie, że jest to wyjście, a następnie wskazanie wejścia następnego zadania jako wyjścia poprzedniego zadania. To, co robi concourse, to zamontowanie katalogu poprzedniego zadania w nowym zadaniu, gdzie możesz uzyskać dostęp do plików utworzonych przez poprzednie zadanie.
Wyzwalacze
Nie musisz ręcznie wyzwalać zadań za każdym razem, gdy chcesz je uruchomić, możesz również zaprogramować je do uruchamiania za każdym razem:
- Mija trochę czasu: Time resource
- Przy nowych commitach do głównej gałęzi: Git resource
- Nowe PR: Github-PR resource
- Pobierz lub wypchnij najnowszy obraz swojej aplikacji: Registry-image resource
Sprawdź przykład pipeline’u YAML, który wyzwala się przy nowych commitach do mastera w https://concourse-ci.org/tutorial-resources.html
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
HackTricks Cloud

