S3上にyumリポジトリを構築した話(後編)
前回のあらすじ
前編では以下の3つ検証手順のうちの1,2をやった。
- 必要なファイルやディレクトリ構成など、 rpm の配布方法について調査する
- Vagrant 上で2台 linux サーバを立ち上げて、一方を rpm を置いたリポジトリサーバにして、もう一方から yum でインストールしてみる
- S3 上にリポジトリサーバを構築、上で立ち上げた Vagrant サーバから同じように yum でインストールしてみる
今回はブログタイトルでもある本題の3をやるぞ。
S3 上の yum リポジトリで yum install
S3上の yum リポジトリには ngx_mruby-package-builder で生成した rpm を置いておきたいから、リポジトリ作成に入る前に用意しておこう。本題ではないから docker-toolbox のインストール解説とかは特にやらない。
まず、 ngx_mruby の rpm パッケージを x86_64 以下に置いて createrepo コマンドでリポジトリの準備を行う。 そして、ホストマシン側に以下のものを落としておく。
mkdir pkg vagrant ssh rpm-repo-server createrepo /var/www/repos/cent7/x86_64/ exit scp -F ssh.config -r vagrant@rpm-repo-server:/var/www/repos/cent7/x86_64/ ./pkg
次に、上で用意したものを S3 へアップロードするための準備を行う。
S3 バケットの作成
バケット名は今回は rpm-repos にした。また、ディレクトリは rpm-repos/centos/7/x86_64
まで作っておく。
以下のリンクにインストール方法等が書かれているのでその通りにやる。
http://docs.aws.amazon.com/ja_jp/kinesis/latest/dev/kinesis-tutorial-cli-installation.html
アクセスキーの作成と登録
以下のリンクの通りにやる。先ほどインストールした AWS CLI を使って aws configure
でアクセスキーが登録できる。また、登録した情報は ~/.aws/credentials
から確認できる
S3 へのアクセスを許可
IAM コンソールのユーザから登録したユーザを選択して、アクセス許可からポリシーのアタッチで S3 のポリシーを追加する。 aws s3 ls
でバケットが表示されればOK
ホスティングの有効化
バケットのプロパティから有効にする。インデックスドキュメントおよびエラードキュメントは適当に存在しないファイルでもいいと思う。今回は index.html
と入力しておいた。
そして先ほどホストマシンに落としてきたファイルを S3 へアップロードする。
aws s3 cp --recursive --acl public-read pkg/ s3://rpm-repos/centos/7/x86_64/
これでリポジトリの準備は完了。下のような repo ファイルを用意して yum install してみよう。 今回は前回の記事で使った rpm-repo-client を使う。
- /etc/yum.repos.d/nginx-mruby.repo
[nginx-mruby] name=nginx-mruby rpm repo test baseurl=http://rpm-repos.s3-website-ap-northeast-1.amazonaws.com/centos/7/$basearch/ gpgcheck=0 enabled=1
yum clean all yum list all | grep nginx yum remove nginx yum install nginx yum list installed | grep nginx
以上。
あとはインストールした ngx_mruby の動作確認もやる。 nginx の conf ファイルに下のようなサンプルコードを追加してみる。
- /etc/nginx/conf.d/default.conf
location /hello { mruby_content_handler_code ' Nginx.rputs "hello" Nginx.echo "world!" '; }
そして起動。
systemctl start nginx
[VagrantのIP]/hello
にアクセスして helloworld!
が表示されていれば成功。
まとめ
hsbt さん指導のもと、いくつかのステップに分けて調査と検証を繰り返すことでなんとか S3 上に yum リポジトリを構築して yum install できるようになった。hsbt さんありがとうございました。おかげで粗い点がたくさんあったもののなんとかゴールすることができました。
また、実際に構築した yum リポジトリからインストールした ngx_mruby の動作確認にご協力いただいた おっくん さん、 ひろやん さん、 けんちゃんくん さんもありがとうございました。
今回は検証用に粗く作っただけだけど、近いうちに弊社の公式リポジトリができて、世界中からインストールできる日が来るかもしれない。