とあるWeb企業での Debianシステムの使い方。

とある Web 企業での
Debian システムの使い方。
大統一 Debian 勉強会 2013
株式会社サイバーエージェント
前田耕平
2013 年 6 月 29 日
自己紹介
株式会社サイバーエージェント所属
主に DC 運用関連のソフトウェアの開発やってます
Debian JP Project 2011, 2012 年度会長でした
趣味で Python でツール開発や、Python 関連の Debian
パッケージのメンテナンスやってます
仕事と趣味がほぼ一致
一児(おまめ 1 )と一匹(こまめ)の父親です
1
ネットでの通称
今回お話しする内容
RHEL 系メインの環境で Debian システム増えてるって?
社内向けの Debian パッケージの作成、配布方法は?
RPM の配布も Debain でやっちゃうって?
私からの質問です。
皆さんの職場はどんな環境?
A.
B.
C.
D.
もちろん Debian メイン
メインじゃないけど Debian も使ってる
RHEL 系メインで Debian 使えれば使いたい
いや、Unix, GNU/Linuxって何?
今回お話しする内容
RHEL 系メインの環境で Debian システム増えてるって?
社内向けの Debian パッケージの作成、配布方法は?
RPM の配布も Debain でやっちゃうって?
サイバーエージェントでは?
1. CentOS メイン。(今もね)
2. 転職時は所属チームのみで Ubuntu 10.04 LTS を利用
3. 今年 2 月リリースした DC はユーザ向け 2 のサービスに
Ubuntu 12.04 LTS を利用 3
4. 今月 Wheezy も利用可能にした
5. 今後リリースするサービスは Wheezy を利用予定
2
3
私達のチームから見たユーザ= 社内&グループ会社のエンジニア
仮想マシンのホストや、コンシューマ向けサービスは主に CentOS
Q. どうやって増やしたの?
A. ワシが使いたいから
自分で増やした。
具体的には?
OpenStack 環境提供期
0. OpenStack(Cactus, Diablo, Essex) Nova, Glance,
Keystone, Horizon の環境として Lucid, Precise を利用
1. アメーバ環境の内部 DNS4 用に Lucid, Precise 利用 5
※前提:この時期まではアメーバ向けの環境だけが対象
4
5
PowerDNS & TonicDNS を使用
OpenStack 用のインスタンス名の自動登録が主目的
新 DC プロジェクト期
Precise を前提に、必要な機能 6 を検証&構築&開発
チームメンバーに Ubuntu の利用薦める
基本公式パッケージを利用
Sid にも無いソフトウェアや開発したツールは基本全
て、Debian パッケージ化
5. 作成したパッケージはローカルアーカイブで提供&公
式パッケージ化も目指す
2.
3.
4.
4.
※前提:新 DC からアメーバだけでなく、他事業部やグルー
プ会社向けの環境も対象
6
認証, 監視, 監視用アラートメール, パッケージ管理, ログ管理, サー
バ構成管理,NW 機器管理,SCM, etc.
リリース後∼現在
6. チーム内でハンズオンでの勉強会 7
& 4,5 の繰り返し
7
Python パッケージ作成、Debian パッケージ作成, Git 関連など
身も蓋も無いけど、特別なことは何もない
地道にできることをちょっと
ずつ増やしているだけ
今回お話しする内容
RHEL 系メインの環境で Debian システム増えてるって?
社内向けの Debian パッケージの作成、配布方法は?
RPM の配布も Debain でやっちゃうって?
開発および本番環境
(VirtualBox 上の)Sid で開発 8
Precise や Wheezy は、Sid 上で pbuilder を利用
本番環境は Clover9 で物理及び VM に OS インストール
8
9
毎日スナップショット取ると便利
社内開発のツール。Nova & cobbler & DNS &ラック管理などを提供
開発とパッケージメンテナンスの流れ
1.
2.
3.
4.
5.
使用するミドルウェアも Sid のパッケージを利用
使用する Python パッケージも Sid のパッケージを利用
パッケージが無ければ、PyPI にあるものを利用
PyPI になければ自分でツールやライブラリ開発
上記いずれも Debian パッケージ化
Sid での Debian パッケージ作成
Python で開発したツールの例 10
$
$
$
$
$
$
$
$
$
$
$
$
$
$
$
$
cd ~/devel/hoge
python setup.py sdist ← (1)
cp -i dist/hoge-x.x.tar.gz ~/debpkg/hoge/
cd ~/devpkg/hoge
tar xvf hoge-x.x.tar.gz
cd hoge-x.x
dh_make --createorig -s ← (2)
rm -rf debian
cp -a ~/devel/hoge/debian . ← (3)
debuild -us -uc ← (4)
cd sudo pbuilder --build hoge_x.x-x.dsc ← (4)
cd /var/cache/pbuilder/result
sudo piuparts hoge_x.x-x_amd64.changes ← (5)
debsign hoge_x.x-x_amd64.changes ← (6)
sudo debi hoge_x.x-x_amd64.changes ← (7)
10
主に Python で開発しているので
precise, wheezy 向けのパッケージメンテナンス
(開発 and パッケージ化)したツール
A) の ソースパッケージをリビルドする
B) が 依存するモジュールがパッケージにない
C) が 依存するモジュールがパッケージにはあるが古い
パターン A の場合
pbuilder の base.tgz イメージを2つ用意
precise の場合、precise 上で作成したものを Sid にコピー
wheezy の場合、Sid 上でそのまま作成
一つはシェルログインでの作業環境用
もう一つは最小構成でのクリーンビルド用
パターン B, C の場合
1. 作業環境で依存パッケージ 11 と最終目的のパッケージ
をリビルド
2. 最小構成の base.tgz から別途コピーしたイメージイン
ストールしておく
3. 2 の base.tgz を使い、最終目的のパッケージをビルド
※ Tips は配布資料を参照。
11
依存パッケージが Sid の公式パッケージにあればそれ使用を、なけ
れば自分で作っておきます
内部のパッケージアーカイブ
公式パッケージのアーカイブミラーには apt-mirror12
カスタムビルドおよび独自パッケージには reprepro13
※ reprepro の細かい手順は配布資料を参照。
12
http://apt-mirror.github.io/
http://mirrorer.alioth.debian.org/
14
python-apt で車輪の再開発やりかけたのは内緒
https://github.com/mkouhei/createapt
13
14
今回お話しする内容
RHEL 系メインの環境で Debian システム増えてるって?
社内向けの Debian パッケージの作成、配布方法は?
RPM の配布も Debain でやっちゃうって?
おまけの RPM リポジトリの
作成
いや、CentOS メインなんだ
からおまけではない
RPM のリポジトリ
公式リポジトリミラーは rsync するだけ
カスタムビルドパッケージにはパッケージアップロー
ド用の Web UI を提供
Web UI には Flask
アップロード時の RPM のメタ情報取得には python-rpm
リポジトリの作成には Debian の createrepo パッケージ
テストデータ用の RPM は Debian 上で作成
※ Debian 上でも RPM は作れるんですよ
まとめというか言いたいこと
Debian 使いたければ自分で動くしかない
使うパッケージ管理システムは一つに決めて運用する
もっと良いやり方 15 が合ればぜひ教えてください :)
Debian でだって RPM 作れるし、管理できるんですよ
15
Debian パッケージ管理として。
何かご質問ありますか?