GitLabのpython-gitlabでコマンドラインでユーザーを一括で追加、アカウント登録、削除する方法

Git

GitLabのセットアップについて、以下の記事の通り完了しました。

CentOS 7にGitHubライクなオンプレミス GitLab CE (community edition) を2分でインストール・導入・構築してみた
GitのWebインターフェースを探している中で、GitWeb、Ginatraを試したのですが、イマイチでした。 ...

その後、GitLabでGUI画面から1人1人ユーザー登録するのはGUIから行えます。

一方で、コマンドラインから一括でバルクでユーザーを登録する方法を調べました。

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

GitLabのユーザー登録

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

GUIからユーザー登録することは、一般ユーザーには便利ですね。

ただ、サーバー管理者からは一度に100人とか、たくさんのユーザーを登録することがあります。

その際に、いちいち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://python-gitlab.readthedocs.io/en/stable/index.html

インストール方法や、使い方はここに詳しく書かれています。

また、GitHubにソースがあります。

https://github.com/python-gitlab/python-gitlab

python-gitlabのインストールはとても簡単です。

Linuxのrootユーザーで、以下の手順通りに実行します。

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

次に、設定を行います。

rootユーザーのホームディレクトリ /root 直下に .python-gitlab.cfg というファイルを作ります。

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

ここで、

PRIVATE_TOKEN_FROM_YOUR_ACCOUNTの値は、

以下の通りGitLabのAccount settingsから取得します。

image

これは、GitLabの管理者で行うべきでしょう。

コマンドラインから、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

うーん。。。

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

????どうなっているんだろうか?

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の権限を設定することが可能。

5人ぐらいでリポジトリを管理するなら、GitLabを導入すると、かえってわずらわしそうな気がします。

ただ、10人以上ならGitLabを導入してGitのサーバーを管理することを推奨します。

GitWebやGinatraのように、リポジトリのGUIインターフェースだけ導入できればいいんですが、GitWebやGinatra は、GitLabに比べるとかなり物足りないです。

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

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

Git