#15 gitolite 備忘録

  Git  [公開]
icon Kenichi TAGI が 2018/07/23 7:16 に投稿
  投稿を編集(サインイン)
  ストック
  アンケート回答

  目次

はじめに

ひょんなことから gitolite をセットアップする事になり、せっかくなので手順を残しておきます。

gitolite とは、git で共有リポジトリのユーザ管理やアクセス制御を行うためのツールであり、gitサーバ としての機能を有します。ウェブベースでの操作はありませんが、コンフィグは管理用に提供される gitolite-admin リポジトリへの操作に集約されるので、扱いがシンプルで見通しの良いツールです。

環境

ここでは以下の環境にセットアップしました。が、Linux であれば手順にそれほどの違いはないと思います。

$ cat /etc/redhat-release
CentOS Linux release 7.5.1804 (core)

予め git のインストールが必要です。ここでは minimal 構成でセットアップしたためか、さらに perl-Data-Dumper が必要でした。

$ sudo yum install git perl-Data-Dumper

gitolite は現時点で最新の v3.6.8 を使用する事にします。

セットアップ

gitolite は git クライアントとの接続に SSH プロトコルを使用し、さらに公開鍵認証を使用します。予め管理者となるユーザを決め、管理者の秘密鍵/公開鍵を準備しておきます。ここでは管理者用の公開鍵を admin.pub として話を進めます。

インストール

まず、インストールするサーバにリポジトリのホスティングユーザを作成します。ここでは git ユーザを作成します。

$ sudo useradd -m git
$ sudo passwd git

次に git ユーザになり、~/bin/ ディレクトリを作成します。このパスは環境変数 PATH にセットされている必要があります。たぶん、今時の?環境であれば通っているはず。

$ su - git
$ mkdir -p ~/bin

gitolite を GitHub からクローンします。クローン後、v3.6.8 をチェックアウトします。

$ git clone https://github.com/sitaramc/gitolite
$ cd gitolite
$ git checkout v3.6.8
$ cd ..

先に作ったディレクトリに gitolite コマンドをセットアップします。セットアップ後、管理者の公開鍵を登録します。

$ gitolite/install -ln ~/bin
$ gitolite setup -pk admin.pub

セットアップはこれで完了です。管理者が git サーバにアクセスする準備は整いました。

動作確認

管理者アカウントで gitolite-admin リポジトリをクローンしてみましょう。~/.ssh/config はこんな感じにしておくと良いです。

host gitserver
    user git
    hostname gitolite.mydomain.com   # gitサーバのアドレス
    port 22
    identityfile ~/.ssh/id_rsa       # 管理者の秘密鍵(admin.pub のペア)
$ git clone gitserver:gitolite-admin
Cloning into 'gitolite-admin'...
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 6 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (6/6), done.

クローンできればOKです。

使い方

管理情報は gitolite-admin リポジトリで管理されています。

$ tree gitolite-admin
gitolite-admin
├── conf
│   └── gitolite.conf
└── keydir
    └── admin.pub

2 directories, 2 files

リポジトリやユーザの管理、アクセス制御はこのリポジトリを更新し、サーバに push することで適用します。

リポジトリの登録

リポジトリを登録するには、gitoltie-admin リポジトリに格納された conf/gitolite.conf に追記します。試しに foo リポジトリを登録してみます。

conf/gitolite.conf の内容:

repo gitolite-admin                                                                         
    RW+     =   admin

repo testing
    RW+     =   @all
repo foo                   # 新たに追加した foo リポジトリ
    RW+     =   @all

これを git サーバに push する事により、新たな foo リポジトリが作成されます。push 後、クライアント側でクローンしてみましょう。

$ git clone gitserver:foo
Cloning into 'foo'...
warning: You appear to have cloned an empty repository.

空っぽなので警告が出ますがクローンできました。

ユーザの登録

ユーザを登録するには、keydir/ に登録するユーザの公開鍵を配置します。bob を登録してみます。

$ tree gitolite-admin
gitolite-admin
├── conf
│   └── gitolite.conf
└── keydir
    ├── admin.pub
    └── bob.pub              # 新たに登録した bob の公開鍵

2 directories, 3 files

これを git サーバに push する事により、bob が登録されます。bob の端末でクローンしてみましょう。~/.ssh/config は先の管理者用のものを参考にしてください。

$ git clone gitserver:foo
Cloning into 'foo'...
warning: You appear to have cloned an empty repository.

空っぽなので警告が出ますがクローンすることができました。

おわりに

gitolite には他にもリポジトリやファイルに対するアクセス制御を行うことができますが、上記手順と同じく gitolite-admin リポジトリの更新で実現できます。詳しくは こちら を。

昨今のリッチな git サーバ に比べると派手さは欠けますが、軽く git ごっこを楽しみたいというグループには手軽で使いやすいのではないでしょうか。

 添付ファイル     - [0]


 コメント追加