Concourse Lab Creation

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'i desteklemenin diğer yolları:

Test Ortamı

Concourse Ç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

Komut satırı fly'ı işletim sisteminize 127.0.0.1:8080 adresinden web üzerinden indirebilirsiniz.

Kubernetes ile (Tavsiye Edilen)

Helm-chart kullanarak Kubernetes üzerinde (örneğin minikube üzerinde) 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 sır oluşturabilir ve concourse web'de çalışan SA'ya K8s sırlarına erişim izni 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şturma

Bir pipeline, sıralı adımların (Steps) bir listesinden oluşur ve her bir adım bir işi (Job) temsil eder.

Adımlar

Farklı türde adımlar kullanılabilir:

Her adım, bir iş planında kendi konteynerında çalışır. Konteyner içinde istediğiniz her şeyi çalıştırabilirsiniz (örneğin testlerimi çalıştır, bu bash betiğini çalıştır, bu imajı oluştur, vb.). Bu nedenle, beş adımlı bir işiniz varsa, Concourse her adım için bir konteyner oluşturur.

Bu nedenle, her adımın hangi türde bir konteyner içinde çalışması gerektiğini belirtebilirsiniz.

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

Pipeline akışını görmek için 127.0.0.1:8080 adresini kontrol edin.

Çıktı/Giriş boru hattıyla Bash komut dosyası

Bir görevin sonuçlarını bir dosyada kaydetmek ve bunun bir çıktı olduğunu belirtmek, ardışık bir görevin girişini önceki görevin çıktısı olarak belirtmek mümkündür. Concourse, önceki görevin dizinini yeni göreve bağlar ve böylece önceki görev tarafından oluşturulan dosyalara erişebilirsiniz.

Tetikleyiciler

İşleri her seferinde manuel olarak tetiklemeniz gerekmez, aynı zamanda onları her seferinde çalıştırılacak şekilde programlayabilirsiniz:

Yeni taahhütlerde tetiklenen bir YAML boru hattı örneğini https://concourse-ci.org/tutorial-resources.html adresinde kontrol edin.

AWS hacklemeyi sıfırdan kahraman olmak için öğrenin htARTE (HackTricks AWS Red Team Expert)!

HackTricks'i desteklemenin diğer yolları:

Last updated