オープンソース資料館
Subversion1.14のコンテナを作成
2023.8.19 Apache Subversion 1.14をコンテナで
弊社ではSubversionなどのサーバを構築する場合、通常単独のサーバになりますのでOSネイティブに構築してきました。今回お客様の要望でPodman上のコンテナとして動かす、ということでやってみました、というお話です。
DockerやPodmanの知識があれば技術的に難しいところはあまりないのですが、メリットや注意点など書いてみたいと思います。
環境等
OSはRHEL8。PodmanでLinux(RockyLinux9)のコンテナを動かしそこにSubversion1.14をインストールしました。RockyLinuxはRHELとの運用の共通性を考慮して選択しました。
メリット:
オフラン環境にインストールできることです。サーバが「インターネット不可」でも、ローカルでコンテナイメージを制作し持ち込むことでインストールすることができます。このメリットは大きいと思いました。また、本番環境やテスト環境などに構築済み環境そっくりコピーもできるため、その点もよいです。
注意点
まず、設計が複雑になります。ネイティブで動かしている場合には意識しなくても良いコンテナ自身の運用を考慮した運用設計をしなければなりません。永続化する部分はリポジトリ、ログファイルになりますが、設定ファイルをどうするかは考慮の必要があります。パスワードファイルやAuthzファイルは永続化する必要があります。
運用シェルとしてバックアップのシェルスクリプトを書いたりすると思いますが、それを「どこで」実行するのかも重要です。Subversionをコンテナ内に入れちゃうとコンテナの外ではsvn/svnadminコマンドが実行できません。
ターミナルで作業をしていると「今、コンテナの外?内?」がわからなくなって作業が混乱しやすい点も注意が必要です。
その他、1.6から最新にするには注意点があります。
おまけ
今回はSubversion1.6系からのバージョンアップでしたが、svnadmin dump/loadでデータを引越しました。時間はかかりましたが問題なく変換もできました(中間ファイルなどはなく、直接1.6->1.14に変換)。なお、当該コマンドはリポジトリごとになり、リポジトリが多いと手で打つのは現実的ではありません。そのため、専用の移行スクリプトを制作しました。また、dump/loadではフックスクリプトなどは移行できないので、移行スクリプト内で同様なスクリプトを生成・配置するようにしました。
最近は新しくバージョン管理するとなるとGitだと思いますが、以前作られてずっと現役で使い続けられているSubversionサーバもまだまだたくさんあります。古いバージョンをお使いの方はバージョンアップを検討されてもいいかもしれません。
ご相談ください
OSSPlazaへのお問い合わせは、お問合せはこちらへ。