Concourse Lab Creation

Aprenda hacking em AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

Ambiente de Teste

Executando o Concourse

Com Docker-Compose

Este arquivo docker-compose simplifica a instalação para fazer alguns testes com o concourse:

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

Você pode baixar a linha de comando fly para o seu sistema operacional da web em 127.0.0.1:8080

Com Kubernetes (Recomendado)

Você pode facilmente implantar o concourse no Kubernetes (no minikube, por exemplo) usando o 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

Após gerar o ambiente concourse, você poderia gerar um segredo e conceder acesso ao SA executando no concourse web para acessar os segredos 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 -

Criar Pipeline

Um pipeline é composto por uma lista de Jobs que contém uma lista ordenada de Steps.

Steps

Diversos tipos de steps podem ser utilizados:

Cada step em um job plan é executado em seu próprio container. Você pode executar o que quiser dentro do container (ou seja, executar meus testes, rodar este script bash, construir esta imagem, etc.). Então, se você tem um job com cinco steps, o Concourse criará cinco containers, um para cada step.

Portanto, é possível indicar o tipo de container que cada step precisa para ser executado.

Exemplo de Pipeline Simples

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

Verifique 127.0.0.1:8080 para ver o fluxo do pipeline.

Script Bash com pipeline de entrada/saída

É possível salvar os resultados de uma tarefa em um arquivo e indicar que é uma saída e depois indicar a entrada da próxima tarefa como a saída da tarefa anterior. O que o concourse faz é montar o diretório da tarefa anterior na nova tarefa onde você pode acessar os arquivos criados pela tarefa anterior.

Triggers

Você não precisa acionar os jobs manualmente todas as vezes que precisar executá-los, você também pode programá-los para serem executados sempre que:

Confira um exemplo de pipeline YAML que é acionado por novos commits na master em https://concourse-ci.org/tutorial-resources.html

Aprenda AWS hacking do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

Última actualización