とある 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 パッケージ管理として。 何かご質問ありますか?
© Copyright 2024 Paperzz