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

スポンサーリンク
Git

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

 

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

 

その後、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のプロジェクトのマニュアルはコチラです。

Welcome to python-gitlab’s documentation! — python-gitlab 1.6.0 documentation

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

 

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

python-gitlab/python-gitlab
Python wrapper for the GitLab API. Contribute to python-gitlab/python-gitlab development by creating an account on GitHub.

 

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

 

 

コメント