Concourse Lab Creation

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Тестове середовище

Запуск Concourse

З 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 в Kubernetesminikube, наприклад) за допомогою helm-чарту: 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, для доступу до секретів 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 -

Створення конвеєра

Конвеєр складається зі списку завдань, які містять упорядкований список кроків.

Кроки

Можна використовувати кілька різних типів кроків:

  • крок task step виконує завдання

  • крок get отримує ресурс

  • крок put оновлює ресурс

  • крок set_pipeline налаштовує конвеєр

  • крок load_var завантажує значення в локальну змінну

  • крок in_parallel виконує кроки паралельно

  • крок do виконує кроки послідовно

  • модифікатор кроку across виконує крок кілька разів; один раз для кожної комбінації значень змінних

  • крок try намагається виконати крок і успішно завершується навіть якщо крок не вдається

Кожен крок у плані завдань виконується у власному контейнері. Ви можете запустити все, що завгодно всередині контейнера (тобто запустити мої тести, виконати цей bash-скрипт, побудувати цей образ тощо). Таким чином, якщо у вас є завдання з п'ятьма кроками, Concourse створить п'ять контейнерів, по одному для кожного кроку.

Отже, можна вказати тип контейнера, у якому потрібно виконати кожен крок.

Приклад простого конвеєра

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 робить так, що підключає каталог попереднього завдання до нового завдання, де ви можете отримати доступ до файлів, створених попереднім завданням.

Тригери

Вам не потрібно запускати роботи вручну кожного разу, коли вам потрібно їх запустити, ви також можете запрограмувати їх на автоматичний запуск кожного разу:

Перевірте приклад YAML конвеєра, який спрацьовує при нових комітах у гілку master за посиланням https://concourse-ci.org/tutorial-resources.html

Last updated