読者です 読者をやめる 読者になる 読者になる

気ままなつぶやき

おべんきょしたこととか

【maven】帰ってきたnexusの設定いろいろ

アカウントの設定

Security > LDAP Configurationで設定する

LDAP認証

ユーザはLDAPアカウントでログインできるようにする。
LDAPのログイン条件は、こんな感じ

$ldapsearch -x -h xxx.xxx.xxx.xxx "(&(uid=*)(description=maven))"

LDAPアカウントを持っていればOKではなくて、descriptionでフィルタをかけている

LDAP Configuration

「Connection」項目でLDAPサーバの設定をする。
f:id:pnsk:20150210190339p:plain

「Check Authentication」ボタンでConnectionの確認
f:id:pnsk:20150210190425p:plain

ユーザとグループのマッピング

設定内容はこんなかんじ
f:id:pnsk:20150210190655p:plain

User Element Mapping

ここでは、LDAPデータからNexusのユーザ情報をマッピングして登録するのと、ログインするときのフィルターの設定をしている

ldapsearchコマンドで返却された項目から、必要なものを紐づければいい。
今回はNexus上のユーザIDを、LDAPのuid項目に当てはめたかったのでそう設定している。

今回は、description=mavenのフィルターを付けている。

Group Element Mapping

Group側の設定では、今回LDAPのfilterでグループを作っておく。
このGroupの設定で、あとでrole(権限)を付けるために作成しているけれど、roleをグループで管理したくない場合は、Groupの設定はしなくて問題ない

※ここでdescriptionっていうグループがあるわけではなくて、LDAP上のdescription項目でグループ作るよって決めただけ。


「Check User Mapping」ボタンをクリックして、対象のユーザが表示されれば、設定は正しい。

f:id:pnsk:20150210191647p:plain

LDAPアカウントでログイン

上記のLDAPマッピング設定をしただけだとLDAPアカウントでログインはできない。

Administration > Serverの「Security Settings」で「OSS LDAP Authentication Realm」をSeleceted Realmsの方に移動してやる必要がある
f:id:pnsk:20150210192130p:plain

個別アカウントの設定

CIツール経由でmvn deployする場合等を想定して、ユーザアカウントとは別でアカウントを作成する

Security>Usersから
f:id:pnsk:20150216123733p:plain

「Nexus User」を選択してアカウントを作成する。

roleの制御

さてはて。作成したユーザに権限(role)を設定する
Security>Rolesから、権限の指定をできる

結構細かく権限の付与をすることができる

roleのカスタマイズ

「Nexus Role」を選択
f:id:pnsk:20150225021138p:plain

「Add」から好きなのを組み合わせる。
f:id:pnsk:20150225021211p:plain
今回は、deployの権限と、artifact uploadを組み合わせた権限を作ったお

LDAPで紐づけたアカウント群にroleを付与

「External Role Mapping」を選択する
f:id:pnsk:20150225015628p:plain

LDAPで設定されているdescriptionたちが沢山出てくる(なんか色々あれなので一部モザイク・・)
f:id:pnsk:20150225015822p:plain

これはユーザ作成時にGroupMappingでdescriptionを指定したから、出てくる。

今回はmavenを選択して、descriptionがmaven(本当はhogehoge.mavenだけど)に該当するユーザに権限を付けていく
f:id:pnsk:20150225020652p:plain

最初はこんな感じで作成されるから「add」を選択して、権限つけて「save」すれば完成
f:id:pnsk:20150225020859p:plain

今回はあらかじめ作成しておいた、カスタマイズしたroleを追加した。

jvmの設定変更

wrapper.confで変更できるよ。

${NEXUS_HOME}/nexus/bin/jsw/conf/wrapper.conf

ポートの変更

nexus.propertiesで変更できる。

${NEXUS_HOME}/nexus/conf/nexus.properties

でも80とかにはできないお。nexusさんjetty使ってるので。

リポジトリの設定

リポジトリは大枠で3つ管理するイメージ

  1. nexusに直接あげた内部ライブラリ
  2. 3rdpartyのライブラリ単体
  3. 外部mavenリポジトリ

nexusに直接あげた内部ライブラリ

標準で用意されている「Releases」と「Snapshot」を利用する。
nexusにログインして直接アップロードしても良いし、pom.xmlに設定してアップロードしても良い。
アップロードは、ユーザにアップロード用のroleが設定されている必要がある

3rdpartyのライブラリ単体

標準で用意されている「3rdparty」を利用する。
但し、なるべくライブラリ単体ではなくて、リポジトリが存在するならそれを指定すべき。

外部mavenリポジトリの登録

外部のmavenリポジトリは、proxyリポジトリとして登録する

例えば、Springframeworkのmavenリポジトリを登録する場合

http://maven.springframework.org/release/

Views/Repositories>Repositoriesから

f:id:pnsk:20150217152952p:plain

設定内容
f:id:pnsk:20150217153039p:plain

Repository Policyは登録するリポジトリに合わせる(snapshotとか)

トラブルシューティング

データ上存在するのに検索にでてこない

データ移行してきたときによくある。

springframeworkのmavenリポジトリを例にとる

こんな感じに、データ上は存在する
f:id:pnsk:20150223154553p:plain

でもインデックスでは存在しない(勿論、検索にも引っかかってこない;;)
f:id:pnsk:20150223154626p:plain

そんなときは、リポジトリを選択して「右クリック」!!!

「Repair Index」で元通りやで
f:id:pnsk:20150223154703p:plain