Concourse Lab Creation
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
Test Ortamı
Concourse’u Çalıştırma
Docker-Compose ile
Bu docker-compose dosyası, concourse ile bazı testler yapmak için kurulumu basitleştirir:
wget https://raw.githubusercontent.com/starkandwayne/concourse-tutorial/master/docker-compose.yml
docker-compose up -d
fly komut satırını işletim sisteminiz için 127.0.0.1:8080 adresinden indirebilirsiniz.
Kubernetes ile (Tavsiye Edilen)
Kubernetes’te (örneğin minikube’da) helm-chart kullanarak concourse’u kolayca dağıtabilirsiniz: 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 ortamını oluşturduktan sonra, bir gizli anahtar oluşturabilir ve concourse web’de çalışan SA’ya K8s gizli anahtarlarına erişim verebilirsiniz:
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 Oluştur
Bir pipeline, sıralı bir Jobs listesi ile yapılır ve bu liste bir Steps listesi içerir.
Adımlar
Birçok farklı türde adım kullanılabilir:
taskadımıtaskçalıştırırgetadımı bir resource alırputadımı bir resource güncellerset_pipelineadımı bir pipeline yapılandırırload_varadımı bir değeri local var içine yüklerin_paralleladımı adımları paralel olarak çalıştırırdoadımı adımları sırayla çalıştırıracrossadım modifikasyonu bir adımı birden fazla kez çalıştırır; her bir değişken değeri kombinasyonu için bir keztryadımı bir adımı çalıştırmayı dener ve adım başarısız olsa bile başarılı olur
Her step bir job plan içinde kendi konteynerinde çalışır. Konteyner içinde istediğiniz her şeyi çalıştırabilirsiniz (yani testlerimi çalıştır, bu bash scriptini çalıştır, bu resmi oluştur, vb.). Dolayısıyla, beş adımı olan bir işiniz varsa, Concourse her adım için bir tane olmak üzere beş konteyner oluşturacaktır.
Bu nedenle, her adımın çalıştırılması gereken konteyner türünü belirtmek mümkündür.
Basit Pipeline Örneği
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 adresini kontrol edin, pipeline akışını görmek için.
Çıktı/girdi pipeline’ı ile Bash scripti
Bir görevin sonuçlarını bir dosyada kaydetmek ve bunun bir çıktı olduğunu belirtmek, ardından bir sonraki görevin girdisini önceki görevin çıktısı olarak belirtmek mümkündür. Concourse’un yaptığı şey, önceki görevin dizinini yeni görevde monte etmek ve önceki görev tarafından oluşturulan dosyalara erişmektir.
Tetikleyiciler
Görevleri her seferinde manuel olarak tetiklemek zorunda değilsiniz, bunları her seferinde çalışacak şekilde programlayabilirsiniz:
- Bir süre geçtikten sonra: Time resource
- Ana dalda yeni commitler olduğunda: Git resource
- Yeni PR’ler: Github-PR resource
- Uygulamanızın en son görüntüsünü almak veya göndermek: Registry-image resource
Ana dalda yeni commitler tetikleyen bir YAML pipeline örneğini kontrol edin: https://concourse-ci.org/tutorial-resources.html
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
HackTricks Cloud

