プロジェクト

全般

プロフィール

20220930 gitbucket

概要

etckeepeの中身を見やすくするためにgitbucketを立てた話。

動機・背景

etckeeperでサーバの設定情報を一応は履歴も含めて保存しているが履歴や中身をちょっと読みたいときにコンソールはちょっと不便(不慣れの間違いかもしれないが)。
gitリポジトリなのでそれを管理するツール、例えばgithubやbitbucket、を使えばちょっとはマシになるかと思うが、自分のサーバー設定を他人に渡すのが気持ち悪い。
機能やセキュリティはどう考えてもgithubのほうが上だが趣味でやる上で「気持ち悪い」は譲れない点。

ということで自分で上記のツールを運用すれば解決するはず。ちなみにサーバは非力なのでgitlabは選択肢にない。

やりたい事

ということでやりたいことをまとめると以下になるのかな。

  1. サーバーの設定情報・履歴を見やすくする。
  2. gitbucketを建てる。URLは既存のWebサーバと統合。
  3. gitbucketにetckeeperが管理しているリポジトリを追加。自動で追随できるようにする
  4. gitbucketへはsshでpushする。パスワード入力なんて自動化せん。

データベースも統合したいとかいろいろあるけどいったんパス。とりあえず動かす。

作業概容

  1. gitbucketの導入と基本的な設定
  2. etckeeper管理のリポジトリを自動でgitbucketにpushする設定
  3. sshdのインスタンスを二つ用意(思い込み。いらなかった)

gitbucketの導入と基本的な設定

まぁ公式サイト見ながら実施。gitbucketはjetty内蔵しているので単独で動かせるソフトウェアだけど、tomcatの勉強もかねて。管理者ユーザーのパスワード設定ミ→再インストールするも戻らないとかで焦った。/usr/share/tomcat/配下に発見。そういや/usr/shareってよく知らんディレクトリだ。
その他いくつか詰まったところメモ:

  • 初期ユーザーのID:PASSはroot:root
    • きっちり無効化
  • データベースは/usr/share/tomcat/配下に設置された
  • warファイルは/var/lib/tomcat/配下
  • tomcatはloocalhostをlistenしてユーザーとのやり取りリバースプロキシ。なのでCookieのドメイン書き換えとか必要。しないとログインできない。
    • ポートフォワードで一時しのぎはできるけど
  • 8080は大人気ポートなのであらかじめ考えておくと吉
  • gitbucketはそのままだと日本語化できない。非エンジニア層含めて社内利用するにはそのままだとキツいかもなー。
  • そのままだとgitbucketに表示されるリポジトリURLのドメイン部分がlocalhostになる。gitbucketのbaseURLを変えること。

etckeeper管理のリポジトリを自動でgitbucketにpushする設定

etckeeper管理のgitリポジトリにremoteブランチ追加とかはなんか嫌な感じなので一旦適当なディレクトリ配下にリポジトリをclone。そこからgitbucketにpushする形に。なんかもっときれいにできるかもしれんが簡単だし似たような経験もあったし。etckeeperからのcloneとgitbucketへのpushはcronで設定。想定漏れてたのは以下のこと:

  • sshでpushできるようにしないとpush時にパスワード入力を求められてcronからのpushが面倒になる
  • etckeeper管理下のリポジトリは当然rootユーザー用のパーミッションなのでrootユーザでpushまでしたい。gitbucket側にサーバを表現するユーザーを作成して解決(?)

sshdのインスタンスを二つ用意

これは単純に勘違いしてやった作業。想定外が起こるとこういうこと始めるから怖い。gitbucketでsshでのやりとりするにあたり専用のインスタンスを用意しなければいかんかと思って作業実施。以前OpenSSHの本で「こんなことができる」ということは見てたけどやっててみたのは初。ざっくりとやったのは

  • systemdのunitファイル(serviceファイル)の追加
  • sshdのconfigファイルの追加

あたい、これもWebで見つけた情報。詳細は参考のURL。よくわかる内容だったけど/usr/lib配下にunitファイルを新規作成は気持ち悪い。/etc/systemd/system`にunitファイル作成。

増えた知識と疑問

  • 知識
    • /usr/lib、/usr/local、/optの使い分け
    • sshdの複数インスタンス
    • tomcatでのwarのデプロイ
    • gitbucketいろいろ
    • ssh-keygenは.sshディレクトリを作ってくれる。
  • 疑問
    • /usr/share ディレクトリの役割

参考