python-gitlab使うとAPI経由でアカウント作成が簡単にできるよ
皆さま, こんにちわ(^^)
最近私の周りでは既にインフルエンザが流行り始めてます. 今年は流行るのが早いですねぇ...
インフル流行って, 毎回gitlabにログインして画面からアカウント作成するのが面倒になって来た今日この頃, いい加減API使って楽しようということでやってみました.
やりたいこと
検証環境
クライアント
サーバ
- OS: CentOS 6.7
- GitLab(omnibus): v11.0.3
手順
まずはgitlabにログインして, APIに設定するための Access Token を生成する.
画面右上のアイコン > settings > access token
選択できる権限の範囲が4つあるが, 今回は①を選択してみる.
①api Access the authenticated user's API
- すべてのグループとプロジェクトの読み書きを含む、ユーザとしてのGitLabへのフルアクセス
②read_user Read the authenticated user's personal information
- ユーザー名、一般のメールアドレス、フルネームなど、ユーザーのプロフィール情報への読み取り専用アクセス
③sudo Perform API actions as any user in the system (if the authenticated user is an admin)
- Sudo機能へのアクセス、システム内の任意のユーザーとしてAPIアクションを実行する(管理者のみ利用可能)
④read_repository Read Repository
- リポジトリ情報の読み込み
ここからはクライアント側Macでの作業.
ターミナルからpython-gitlabをinstallする.
$ sudo pip install python-gitlab
installされたことを確認する.
$ gitlab --version 1.6.0
公式サイトも参考にしつつ,
https://python-gitlab.readthedocs.io/en/stable/cli.html#configuration
Mac上に生成したAccess Tokenを元にconfigを作成.
$ vim ~/.python-gitlab.cfg [global] default = gitlab ssl_verify = false timeout = 30 [gitlab] url = http://sample.com ※gitlabのURLを設定する private_token = Fia7Periue6qj_Lipvtd
設定したら, 試しに下記コマンド叩いてみてgroup情報を取得できればOK(あとでuserをgroup登録する時に必要なのでmemoしておく)
$ gitlab group list
gitlabアカウントを作成してみる(アカウントが作成されるとメールが飛ぶ. もし送られてない場合は, postfixが起動していないか宛先がおかしいか疑う)
気にしておく点としては以下の辺り
- メールアドレスが他アカウントで使用されていると作成不可
- パスワードオプション必須
- デフォルトだとadmin権限は無効
$ gitlab user create --email testuser@example.com --username testuser --name testuser --password PASSWORD id: 327 username: testuser
作成したgitlabアカウントをgroupに登録してみる
- user-idは,user create時に出力されたidを指定
- group-idは先程取得した
gitlab group list
で確認しておいたものから選択) - アクセス権のパラメータ一覧はこちらの通り
$ gitlab group-member create --group-id 5 --user-id 327 --access-level 20 id: 327 username: testuser
GitLabから Confirmation instructions
という件名でメールが来ているので確認する.
Confirm your accountのリンクをクリックして, ログインページへ遷移する.
ログインが成功することを確認したらアカウント作成は完了〜
とりあえずAPIで作成することは出来るようになったので, これを利用してスクリプト化すればもっと楽になりそうですね.
以上.