Concourse Lab Creation
Reading time: 7 minutes
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
テスト環境
Concourseの実行
Docker-Composeを使用して
このdocker-composeファイルは、concourseでいくつかのテストを行うためのインストールを簡素化します:
wget https://raw.githubusercontent.com/starkandwayne/concourse-tutorial/master/docker-compose.yml
docker-compose up -d
コマンドライン fly
をあなたのOS用にウェブから 127.0.0.1:8080
でダウンロードできます。
Kubernetesを使用して(推奨)
Kubernetes(例えばminikube)でhelm-chartを使用してconcourseを簡単にデプロイできます: 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環境を生成した後、秘密を生成し、concourse webで実行されているSAに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 -
パイプラインの作成
パイプラインは、順序付きのジョブのリストで構成されています。
ステップ
いくつかの異なるタイプのステップを使用できます:
- the
task
step は task を実行します - the
get
step は resource を取得します - the
put
step は resource を更新します - the
set_pipeline
step は pipeline を構成します - the
load_var
step は local var に値をロードします - the
in_parallel
step はステップを並行して実行します - the
do
step はステップを順番に実行します - the
across
step modifier はステップを複数回実行します;変数の値の組み合わせごとに1回 - the
try
step はステップを実行しようとし、ステップが失敗しても成功します
各ステップは、ジョブプラン内で独自のコンテナで実行されます。コンテナ内で何でも実行できます (つまり、テストを実行する、bashスクリプトを実行する、このイメージをビルドするなど)。 したがって、5つのステップを持つジョブがある場合、Concourseは各ステップのために5つのコンテナを作成します。
したがって、各ステップが実行される必要があるコンテナのタイプを指定することが可能です。
シンプルなパイプラインの例
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スクリプト
1つのタスクの結果をファイルに保存し、それを出力として示し、次のタスクの入力を前のタスクの出力として示すことが可能です。Concourseが行うことは、前のタスクのディレクトリを新しいタスクにマウントし、前のタスクによって作成されたファイルにアクセスできるようにすることです。
トリガー
ジョブを手動で毎回トリガーする必要はなく、毎回実行されるようにプログラムすることもできます:
- しばらく時間が経過したとき: Time resource
- メインブランチへの新しいコミット時: Git resource
- 新しいPR: Github-PR resource
- アプリの最新イメージを取得またはプッシュ: Registry-image resource
https://concourse-ci.org/tutorial-resources.html で、マスターへの新しいコミットでトリガーされるYAMLパイプラインの例を確認してください。
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。