S3上にyumリポジトリを構築した話(前編)
2年ほどやっているスクフェスが最近マンネリ気味だったから、気分転換に先週あたりからデレステを始めてみたら見事にハマって気がついたらアニメのデレマスまで全話消化していた。そんな近況。
ところで本題。
新卒 OJT で ngx_mruby の yumrepo 作ってもらったら便利だった
— SHIBATA Hiroshi (@hsbt) October 30, 2015
ということで先日弊社OJTでyumリポジトリを作った。それもS3上に。
OJT?
弊社の新卒OJTではいろいろなことをやってる。今回やった仕事もそのOJTのうちの一つ。詳しくは以下のリンクからどうぞ。
以前はこんな研修もやってた。
背景
以下のパッケージビルダーを落としてきて、 docker-toolbox でビルドすることで ngx_mruby の rpm パッケージが生成される。 でもいちいち手元でビルドしないといけないのは面倒だから yum install で生成される rpm をインストールできたらいいよね、というのがはじまり。
GitHub - hsbt/ngx_mruby-package-builder: Package Builder of ngx_mruby with Docker
検証手順
そこで今回やったのは、運用とかは考えずにS3上にリポジトリを立ててみて yum install できるか検証すること。 (検証だけなのは2日間しか時間がなかったため)
そのために以下の手順で検証を進めることにした。
- 必要なファイルやディレクトリ構成など、 rpm の配布方法について調査する
- Vagrant 上で2台 linux サーバを立ち上げて、一方を rpm を置いたリポジトリサーバにして、もう一方から yum でインストールしてみる
- S3 上にリポジトリサーバを構築、上で立ち上げた Vagrant サーバから同じように yum でインストールしてみる
では、1,2までやってみよう。
rpmの配布方法
ディレクトリの構成は特に指定は無さそうだけど、 nginx.org で公開されている rpm の構成がわかりやすくて良い気がする。 間違いがあったらごめんなさい :bow:
nginx.org/packages/centos/7/x86_64/RPMS/
そして、配布に必要なのは以下の3つ。
repomd.xml にはリポジトリの情報が、データベースファイルには rpm パッケージに関する情報がそれぞれ格納されている。
最低限必要そうなものはわかったので、Vagrant 上でリポジトリを構築して yum install できるかどうか検証してみる。
Vagrant 上の yum リポジトリで yum install
適当に Vagrantfile を用意してそこに httpd で Web サーバを立ててみる。今回は CentOS 7 。
vagrant up rpm-repo-server vagrant ssh rpm-repo-server yum install -y httpd rm -f /etc/httpd/conf.d/welcome.conf systemctl stop firewalld systemctl disable firewalld systemctl start httpd systemctl enable httpd exit vagrant reload
リポジトリの準備を行う。 配布に使う rpm パッケージは nginx.org ですでに配布されているパッケージを置いてみる。
mkdir -p /var/www/html/repos/cent7/{i386,i686,x86_64,SRPMS} yum install -y createrepo yum install -y wget wget http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.8.0-1.el7.ngx.x86_64.rpm mv nginx-1.8.0-1.el7.ngx.x86_64.rpm /var/www/html/repos/cent7/x86_64/ createrepo -v /var/www/html/repos/cent7/x86_64/
rpm を取ってくるための VM を用意する。 Vagrant 間で通信できるよう Vagrantfile にて virtualbox__intnet オプションを追記しておくこと。
vagrant up rpm-repo-client
立てた yum リポジトリから yum install してみる。 インストールするためには repo ファイルが必要。 repo ファイルは下みたいにセキュリティ云々気にしない方向ならこれでよさそう。
- /etc/yum.repos.d/nginx-test.repo
[nginx-test] name=nginx rpm repo test baseurl=http://192.168.33.10/cent7/$basearch/ gpgcheck=0 enabled=1
作ってみる。
vagrant ssh rpm-repo-client vi /etc/yum.repos.d/nginx-test.repo yum clean all yum list all | grep nginx yum install nginx
yum list installed | grep nginx
で確認して表示されていればとりあえずOK。
nginx.x86_64 1:1.8.0-1.el7.ngx @nginx-test
まとめ
雑に作業手順をまとめてみたけれどこれでできるはず。
長くなりそうだから S3 での yum リポジトリ構築は次回に。
後編も書けたぞ
YAPC::Asia Tokyo 2015に参加してきた話 (前夜祭+1日目)
ブログにするのがだいぶ遅くなってしまった。
8月20,21,22の3日間、YAPC::Asia Tokyo 2015というイベントに参加してきた。
最初で最後のYAPCの感想みたいなものを書いてく。
前夜祭
会社を早退して会場へ向かった。酒があった。 てっきりこうゆうイベントってレッドブルとかエナジードリンクがピラミッドの如く積まれているところを想像していたのだけれどそんなことはなかった。 自分はほろよいを飲んでた。
酒だ!酒があるぞ!
— わさびのり太郎 (@ku00_) August 20, 2015
以下、聴いたトーク。
言語開発の現場
Rubyがどんな風に開発されてるかなど裏側の話。
Rubyというと人によって示す範囲が違うことや、デベロッパーミーティングは対面でやってることだとか、とても人間味のある話が聴けた。
はてなブックマークのトピックページの裏側
はてブのトピックページの作り方の話。
Elasticsearchはインターンで多少触ったことがあったからスコア計算とかクエリあたりの話は理解しやすかった。トピックの妥当性についてはまだ開発者の主観で判断してるらしく、日本語を扱った自然言語処理技術はイメージ通り大変そうだなあという印象を受けた。
技術ブログを書くことについて語るときに僕の語ること
どうやったらブクマがつくかについて語るだけのトークだった。
タイトルが9割決まると言って、◯◯論とか、アメリカという単語を混ぜると釣れるなどのネタを混ぜつつ、残りの1割で結構大事な話をしていた気がする。この部分の話は弊社のキャリアキーノートでも何人かのエンジニアが話していた内容と重複していた。やっぱり大事らしい。
1日目
この日も朝から参加。普段会社に行く時間帯よりも早くに家を出なければならなかったため気持ち的に少しつらかった。
以下、聴いたトーク。
- メリークリスマス!
- 世界展開する大規模ウェブサービスのデプロイを支える技術
- どうしてもPerlでドローンを飛ばしたい人のためのハードウェアハック概論
- Yet Another Perl Cooking
- esa.io - 趣味から育てたWebサービスで生きていく
- LT
メリークリスマス!
英語のトークと聴いて理解できるかなと心配していたが、同時翻訳機があったため杞憂に終わった。むしろ心配するべきは英語ではなかった。
どういうことかというと、Pealの話かと思ったら『ホビットの冒険(Hobbit)』と『指輪物語(LotR)』の話が始まったのだ。どちらの作品も読んだことも映画で観たこともないので全く話についていけなかった、かなしい。
トークを聴いてる間、ずっと同時通訳機で話している翻訳者の人について考えていた。技術的な用語だったり、話のいたるところで出てくるHobbitやLotRのことまで翻訳をしていて、自分よりも技術力高いだろうなと思っていた。
世界展開する大規模ウェブサービスのデプロイを支える技術
任天堂が運営しているMiiverseというWebサービス、そのサービスのデプロイはどうやってるのという話。
ちょうど2,3週間前にインフラ構築の研修をやっていたのもあり、他社がどのような運用をしているのか気になっていた。
デプロイにはcapistrano2とgitを用いたpull型の配布手法を採用しているけど、Consulとstretcherでやってみたら40倍も早くなったらしい。stretcherというデプロイツールは初めて聞いた。
どうしてもPerlでドローンを飛ばしたい人のためのハードウェアハック概論
ドローンはどうやったらハックできたり自作できるのかの話。
ドローンを飛ばすところが見られるかもと思い行ってみた。
PID値とか回路の話はよく理解できなかったものの、MultiWiiとかLeapMotionでドローンを操作しているところを想像したらすごいワクワクした。
Yet Another Perl Cooking
Twitterでこの人見たことある!と思って行ってみた。内容は料理をがんばって自動化してローストビーフをつくった話。
煮崩れしない温度は40度だとか、66度以上で肉を調理するとパサつくなどの料理の知識をエンジニアから得られる珍しいトークだった。ソースコードがレシピになる時代早く来てほしいと思う。あとローストビーフ美味しそうだった。
esa.io - 趣味から育てたWebサービスで生きていく
esaというドキュメント共有サービスがどのようにして作られたかの話。
esaのキャラクターの鳥がかわいい。開発スケジュールをあえて決めないでユーザからの要望に沿って開発するのは少人数ならではだなと感じた。それと楽しさやモチベーションは直接コントロールできないから、それらを生み出せそうな行動を心掛けるっていうのはなるほどと思った。
LT
各LTの合間に出てきて宣伝していたネコトーストラボの存在感がすごかった。LTのそれぞれの内容は思い出せなくてもこれだけは覚えているって人かなりいそう。個人的にはhubotで二次元嫁のbotをつくる話が面白かった。最高のbot駆動開発っぽい。
まとめ
自分の技術力に合っていて理解できそうなトークを選んで参加していたから比較的楽しく聴くことができた。自分の力として取り込めるような話ばかりではなかったけれど、たくさんの刺激をいただいた。がんばって何かしらの形にして還元していきたいな。
プルリクがマージされた話
初マージだったからうれしさある