GitLabでGUI画面からでなく、python-gitlabを使ってバルクでユーザー登録する方法

シェアする

  • このエントリーをはてなブックマークに追加

GitLabのセットアップが以下の記事の通り完了しました。
CentOS 7にGitHubライクなGitLabを2分でインストールしてみた
その後、GitLabでGUI画面から1人1人ユーザー登録するのではなくて、コマンドからバルクでユーザー登録する方法を調べました。

スポンサードリンク

GitLabのユーザー登録

GitLabでは、Linuxのユーザーではなくて、独自にユーザー管理を行っています。
GUIからユーザー登録することは、一般ユーザーには便利でも、サーバー管理者からは一度にたくさんのユーザーを登録したいものです。
方法が分からずに悩んで、Stack Overflowに質問したところ、以下のように回答が寄せられました。
恐るべきStack Overflow、なんと便利なんでしょう。
世界のITユーザーコミュニティは助け合いの精神がすごいですね。

Gitlab offers multiple authentication methods. Gitlab can manage the user accounts itself or can use external services such as LDAP. For a full list and how to configure it, please take a look on GitLab Integration documentation.

GitLab offers an API which can be used to automatically add new users. You need to create a script for that, but its worth if you have dozens of users. There is actually a python module pyapi-gitlab for this API. I also stumbled on a quick search over a tool called python-gitlab I haven't heard about before. Might be worth a try.

This documentation might be helpful when it comes to adding existing users to already available groups

一言では「python-gitlabというプロジェクトがあるのでそれを使ってみて」ってことでした。

スポンサードリンク

python-gitlabをインストール

それでは、さっそくpython-gitlabをインストールしてみます。
python-gitlabのインストールはとても簡単です。
以下の手順通りに実行します。
http://fedir.github.io/web/2014/01/06/gitlab-projects-management-from-shell/

インストールはこれで完了です。

次に、設定を行います。

中身として以下の内容を記述します。

ここで、PRIVATE_TOKEN_FROM_YOUR_ACCOUNTの値は、以下の通りGitLabのAccount settingsから取得します。

image

スポンサードリンク

python-gitlabを使ってみた

さっそく、python-gitlabを使ってみました。
以下のコマンド操作を行うことが出来ます。

この中でも、gitlab userがユーザーに関する操作で、gitlab projectがプロジェクトに関する操作です。
まず、helpを表示してみます。

たくさんオプションがあることが分かります。

ユーザーを作ってから削除してみます。

とても簡単にユーザーを追加したり削除したりすることが出来ます。
バルクでユーザー登録するには、gitlab user create を使えばよいことがわかりました。

GitLabでsshのキー作成

ユーザーを追加できたので今度はGitLabで管理しているリポジトリからcloneしたり、pushしたりしてみます。
まず、sshのキーを作成ししてみます。

 

/var/opt/gitlab/.ssh/authorized_keys の中身を見てみても

となっていて空のままです。

 

よく分からないので以下を参考にクライアント側のパソコンのcygwinからsshキーを生成してみます。

image

 

結果を以下の画面にコピー&ペーストします。
image

「Add key」を押すとなんかうまくいったような表示になりました。
/var/opt/gitlab/.ssh/authorized_keys にも値が入りました。

git cloneしてみます。

なんかうまくいった。

ただ、ローカルで変更後にリポジトリにpushしてもうまくいきません。

remote: GitLab: No such user or key

うーん。。。

という訳でいったんここで断念しました。

2015.02.23追記 GitLabなしのユーザー管理とGitLabありのユーザー管理

Stack Overflowで質問したら、回答が返ってきました。
どうやら、sshで接続する際の接続先とか、ユーザー管理について勘違いしていました。

GitLabで追加したユーザーは、GitLabでsshキーを登録後、リポジトリへのアクセス権限が付与されていれば、誰であっても以下のコマンドでcloneするようです。

 

 

GitLabなしでユーザー管理するときとGitLabありでユーザー管理するときの違いは以下の通りです。

GitLabなしで管理 GitLabありで管理
ユーザー Linuxで定義したユーザー
通常は/homeにホームディレクトリがある
GitLabで定義したユーザー
Linuxで定義ユーザーとは完全に無関係
リポジトリをsshで取得する際のパス $ git clone ssh://(ユーザー名)@aa.bb.cc.dd/var/lib/git/reponame.git

(Linuxのファイルシステムとしては、/var/lib/git/reponame.git というGitのbareリポジトリが存在していると仮定し、ユーザーがこのフォルダへのLinuxのパーミッションがあるとき)

$ git clone ssh://git@aa.bb.cc.dd:/root/reponame.git

(Linuxのファイルシステムとしては、/var/opt/gitlab/git-data/repositories/root/reponame.git というGitのbareリポジトリが存在していると仮定し、GitLabでこのリポジトリへのアクセス権が付与されているとき)

sshでログインする際の管理方法 sshのキーを交換していない場合は、sshでアクセスする場合、必ず、パスワード入力が必要になる。

自宅、会社など様々なパソコンでもgitがインストールされている環境から、リポジトリへのアクセスが可能となる。

使用するパソコンのsshキーをGitLabに登録する必要がある。

自宅、会社などパソコンが異なれば、パソコンごとにsshキーを作成して登録する必要がある。

リポジトリの権限管理 Linuxでのパーミッション管理。
単純な権限管理のみ行うことが出来る。
管理者からGUIで設定可能。
master、Developer、Reporter、Guestの権限を設定することが可能。

10人ぐらいでリポジトリを管理するなら、GitLabを導入するとかえってわずらわしそうな気がします。
GitWebやGinatraのようにリポジトリのGUIインターフェースだけ導入できればいいんですけどね。。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です