Concourse CIでGitHub認証機能をBOSHによるデプロイ時に有効にするやり方
最近業務でConcourse CIを使ったCI環境の構築・運用の調査をしていて、その際にドキュメントを読んでもよく分からず結構詰まってしまった所をメモして残しておきたいというのが書いた動機。
Concourse CIがどんなものなのかを日本語でざっくり知りたい人は以下の記事を読むのがいいと思います。
あと、BOSHが何かとか、BOSHでどうやってConcourse CIをデプロイするのかとかは以下の記事を読んで貰った方が圧倒的に分かりやすいと思うので省略します。
GitHubログイン機能
Standalone binary使用の際
まずBOSH版の前に軽くStandalone binaryの場合について。
Concourse CIのStandalone binaryを使用した時にGitHubログイン機能を追加したい時は concourse web
コマンドのヘルプを見れば分かるはず。他の起動オプションに関しては公式ドキュメントを参照すること。
$ concourse web --help
(いろいろ省略)
GitHub Authentication:
--github-auth-client-id= Application client ID for enabling GitHub OAuth.
--github-auth-client-secret= Application client secret for enabling GitHub OAuth.
--github-auth-organization=ORG GitHub organization whose members will have access.
--github-auth-team=ORG/TEAM GitHub team whose members will have access.
--github-auth-user=LOGIN GitHub user to permit access.
--github-auth-auth-url= Override default endpoint AuthURL for Github Enterprise
--github-auth-token-url= Override default endpoint TokenURL for Github Enterprise
--github-auth-api-url= Override default API endpoint URL for Github Enterprise
要するに公式ドキュメントのこの辺りを読んで、OAuthの項目の1まで設定した(=OAuth app on GitHubを作成して設定した)後 --github-auth-cliend-id
とか必要なオプションに適切な値を設定して起動すれば問題ないです。
BOSHによるインストール、デプロイの際
公式ドキュメントのRestricting Accessの項をちゃんと読めばヒントはあるのですが、いくつか罠に陥るポイントがある(と自分は思った)のでメモします。
その罠とは以下の通り。
- BOSHの知識
- Concourse CIを構成しているコンポーネントであるATCがConcourse CIのWeb UIとスケジューラーを担当しているということ
- GitHub認証機能はWeb UIに関わってくるので、ATCに対して設定をする必要があるということ
私自身もBOSHとかConcourse CIのアーキテクチャをそこまでしっかり理解しているわけではないので、あとは実際の設定ファイルをどう書くかだけ提示して終わりにします。
最初の方に紹介したBOSHでConcourse CIをAWSにインストールするという記事の記述をそのまま引き継いで説明します。
この記事の中で concourse.yml
というファイルを記述する箇所がありますが、そのファイル内の atc
という名前のjobの中の properties
という箇所を例えば以下のように設定してやればGitHub認証機能が追加されます。
---
name: concourse
# replace with `bosh status --uuid`
director_uuid: <%= `bosh status --uuid` %>
(色々省略)
instance_groups:
- name: web
instances: 1
vm_type: web
stemcell: trusty
azs: [z1]
networks: [{name: public}]
jobs:
- name: atc
release: concourse
properties:
# replace with your CI's externally reachable URL, e.g. https://ci.foo.com
# Elastic IPで払い出したIPを使用
external_url: <your url>
# ここからがGitHub認証に関わる部分
github_auth:
client_id: <reducted>
client_secret: <reducted>
authorize:
- organization: <your organization>
teams: all
(以下省略)
公式ドキュメントの該当箇所をよく読めば、OAuthの項目で以下のように書かれています。
In BOSH you would set the
atc.github_auth.authorize
property with something like the following:
つまり、 properties
以下に github_auth
以降の値をYAMLの形式で書いてやればいいということです。
上の例だと <reducted>
とか <your organization>
となっているところを各自の値を設定してやれば、設定したorganizationに属するメンバー全員がConcourse CIのWeb UI上でGitHub認証でログインできるようになります。
正直ドキュメントの書き方が分かりづらくて何回も失敗しましたが、とりあえずBOSHでもちゃんと設定できるということだけは残しておきます。
Author And Source
この問題について(Concourse CIでGitHub認証機能をBOSHによるデプロイ時に有効にするやり方), 我々は、より多くの情報をここで見つけました https://qiita.com/takuan_osho/items/e6d544fd88e40b6efe3e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .