JenkinsのLDAP連携
はじめに
前回GitlabをLDAP連携したので今度はJenkinsでもLDAP連携してみる
こちらも例の如くDocker上で動かす
環境
- Docker version 17.03.1-ce
- Docker-compose version 1.12.0
- jenkinsci/jenkins:2.54-alpine
構築
Jenkinsの起動
何はともあれdocker-compose.ymlを書く
1version: "2"
2
3services:
4 jenkins:
5 restart: always
6 image: jenkinsci/jenkins:2.54-alpine
7 ports:
8 - "50000:50000"
9 - "8080:8080"
10 volumes:
11 - /home/jenkins:/var/jenkins_home
実行する
1$ docker-compose up -d
8080ポートをブラウザ上で開いたら初期登録のウィザードが始まるのでウィザードに従っていく
最初のパスワードはブラウザ上で指定された場所に一時キーが書き込まれたファイルがあるので確認する
1$ docker exec -it jenkins_jenkins_1 bash
2# cat /var/jenkins_home/secrets/initialAdminPassword
確認したキーをブラウザ上に貼り付けユーザー作成や各種プラグインのインストール等を済ませる
これでひとまず終わり
LDAP 設定
Jenkinsの管理 -> グローバルセキュリティの設定 と移動する
JenkinsのユーザーデータベースからLDAPに変更し
- サーバー
LDAP認証を提供しているサーバーを指定する
例)ldap://192.168.1.123
[高度な設定]ボタンをクリック - root DN
対象となるLDAPグループのDNを入力する
例)dc=hoge,dc=fuga,dc=com - User search base
ユーザーの検索に使われる
LDAP側の設定に合わせる
例)ou=people - User search filter
ユーザー名の検索に使用される
LDAP側の設定に合わせる
例)uid={0} - 権限管理
この時点ではまだ「全員に許可」にしておく
ログイン方式を1つしか選択出来ない?ようなので設定漏れがあった際にログイン出来なくなってしまうため
ここまで設定したら保存する
右上のログインからLDAPユーザーでログインし問題ないことを確認したら権限管理を「ログイン済みユーザー」等に変更する
トラブル
コンテナが立ち上がらない
ログを見てみると
1file.log: Permission denied
で権限がないのでコケている
コンテナ内の実行ユーザー(uid:1000)の書き込み権限がないため発生するとのこと
ボリュームに指定したディレクトリの所有者を変更するか権限を出す
1$ sudo chown 1000 /home/jenkins
設定が正しく行えずログイン出来なくなった
設定ファイルを編集し先程の設定を無効にしてコンテナを立ち上げ直す
1$ docker exec -it jenkins_jenkins_1 bash
2# vi /var/jenkins_home/config.xml
3- <useSecurity>true</useSecurity>
4+ <useSecurity>false</useSecurity>
5# exit
6$ docker-compose up -d
あとは再度設定すれば良い