Concourse Lab Creation

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Środowisko testowe

Uruchamianie Concourse

Za pomocą Docker-Compose

Ten plik docker-compose upraszcza instalację do przeprowadzenia testów z Concourse:

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

Możesz pobrać wiersz poleceń fly dla swojego systemu operacyjnego ze strony internetowej 127.0.0.1:8080.

Z użyciem Kubernetes (zalecane)

Możesz łatwo wdrożyć Concourse w Kubernetes (na przykład w minikube) za pomocą 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ć tajemnicę i udzielić dostępu SA działającemu w przeglądarce Concourse, aby uzyskać dostęp do tajemnic 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 potok

Potok składa się z listy Zadań, które zawierają uporządkowaną listę Kroków.

Kroki

Można użyć kilku różnych typów kroków:

Każdy krok w planie zadania uruchamiany jest w własnym kontenerze. Możesz uruchamiać w kontenerze cokolwiek chcesz (np. uruchamiać moje testy, uruchamiać ten skrypt bash, budować ten obraz itp.). Jeśli masz zadanie składające się z pięciu kroków, Concourse utworzy pięć kontenerów, po jednym dla każdego kroku.

Dlatego możliwe jest określenie typu kontenera, w którym ma być uruchamiany każdy krok.

Przykład prostego potoku

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 potoku.

Skrypt Bash z potokiem wyjściowym/wejściowym

Możliwe jest zapisanie wyników jednego zadania w pliku i wskazanie, że jest to wynik, a następnie wskazanie wejścia następnego zadania jako wynik poprzedniego zadania. Co robi Concourse, to montuje katalog poprzedniego zadania w nowym zadaniu, gdzie można uzyskać dostęp do plików utworzonych przez poprzednie zadanie.

Wyzwalacze

Nie musisz uruchamiać zadań ręcznie za każdym razem, gdy chcesz je uruchomić, możesz również zaprogramować je, aby uruchamiały się za każdym razem:

Sprawdź przykład potoku YAML, który wyzwalany jest przez nowe commity do mastera na stronie https://concourse-ci.org/tutorial-resources.html

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated