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

Git

GitLabのセットアップが以下の記事の通り完了しました。

CentOS 7にGitHubライクなGitLabを2分でインストールしてみた
GitのWebインターフェースを探している中で、GitWeb、Ginatraを試したのですが、イマイチでした。 ...

その後、GitLabでGUI画面から1人1人ユーザー登録するのではなくて、コマンドラインから一気にバルクでユーザーを登録する方法を調べました。

スポンサーリンク
スポンサーリンク

GitLabのユーザー登録

GitLabでは、Linuxのユーザーではなくて、独自にユーザー管理を行っています。

GUIからユーザー登録することは、一般ユーザーには便利でも、サーバー管理者からは一度にたくさんのユーザーを登録したいものです。

方法が分からずに悩んで、Stack Overflowに質問したところ、以下のように回答が寄せられました。

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

恐るべきStack Overflow、なんと便利なんでしょう。

世界のITユーザーコミュニティは助け合いの精神がすごいですね。

一言では

「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インターフェースだけ導入できればいいんですけどね。。

Gitについてのおすすめの本

↓Gitについてのおすすめの本はコチラ

Git