Concourse Lab Creation
Reading time: 5 minutes
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.
Testing Environment
Running Concourse
With 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.
Steps
Можна використовувати кілька різних типів кроків:
- the
task
step виконує task get
step отримує resourceput
step оновлює resourceset_pipeline
step налаштовує pipelineload_var
step завантажує значення в local varin_parallel
step виконує кроки паралельноdo
step виконує кроки послідовноacross
step modifier виконує крок кілька разів; один раз для кожної комбінації значень зміннихtry
step намагається виконати крок і вважається успішним, навіть якщо крок не вдався
Кожен step у job plan виконується у своєму контейнері. Ви можете виконувати все, що хочете, всередині контейнера (тобто виконати мої тести, запустити цей bash-скрипт, зібрати це зображення тощо). Тому, якщо у вас є job з п'ятьма кроками, 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, щоб побачити потік конвеєра.
Bash скрипт з вихідним/вхідним конвеєром
Можливо зберегти результати одного завдання у файл і вказати, що це вихід, а потім вказати вхід наступного завдання як вихід попереднього завдання. Що робить concourse, так це монтує каталог попереднього завдання в новому завданні, де ви можете отримати доступ до файлів, створених попереднім завданням.
Тригери
Вам не потрібно вручну запускати завдання щоразу, коли вам потрібно їх виконати, ви також можете запланувати їх виконання щоразу:
- Пройшов деякий час: Time resource
- При нових комітах до основної гілки: Git resource
- Нові PR: Github-PR resource
- Отримати або надіслати останній образ вашого додатку: Registry-image resource
Перевірте приклад YAML конвеєра, який спрацьовує на нові коміти в 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)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.