2018年6月14日木曜日

Amazon Web Service (AWS) EC2 で CentOS 7 から EBS を拡張した時のメモ

自分のチート用

1. instance id を取得
   curl http://169.254.169.254/latest/meta-data/instance-id

2. リージョンを取得
   curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone

3. volume-id を取得
   aws ec2 describe-instances --instance-id i-002e270412ee392b6 --region us-west-2 | jq -r ".Reservations[0].Instances[0].BlockDeviceMappings[0].Ebs.VolumeId"

4. volume を拡張
   aws ec2 modify-volume --region us-west-2 --volume-id vol-0e3eb2f3f6e75583c --size 32

5. 対象のディスクを確認
   $ lsblk
   NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
   xvda    202:0    0  32G  0 disk
   └xvda1 202:1    0   8G  0 part /

6. パーティションを拡張
   $ sudo growpart /dev/xvda 1
   CHANGED: partition=1 start=2048 old: size=16775168 end=16777216 new: size=67106783,end=67108831

7. ファイルシステムタイプを確認
   $ mount | grep xvda1
   /dev/xvda1 on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

8. ファイルシステムを拡張 (xfsの場合)
   $ sudo xfs_growfs -d /
   meta-data=/dev/xvda1             isize=512    agcount=4, agsize=524224 blks
            =                       sectsz=512   attr=2, projid32bit=1
            =                       crc=1        finobt=0 spinodes=0
   data     =                       bsize=4096   blocks=2096896, imaxpct=25
            =                       sunit=0      swidth=0 blks
   naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
   log      =internal               bsize=4096   blocks=2560, version=2
            =                       sectsz=512   sunit=0 blks, lazy-count=1
   realtime =none                   extsz=4096   blocks=0, rtextents=0
   data blocks changed from 2096896 to 8388347


おしまい。

2018年2月20日火曜日

「[試して理解]Linuxのしくみ ~実験と図解で学ぶOSとハードウェアの基礎知識」 をよんでみたら....

まだいただいてざっと目を通しただけなので、Quick and Dirty Review です。 もう少しよく読んで、興味深い点があれば改めて別の機会にご紹介したいと 思います。

「[試して理解]Linuxのしくみ ~実験と図解で学ぶOSとハードウェアの基礎知識」
http://gihyo.jp/book/2018/978-4-7741-9607-7

技術書の出版社として定評のある、技術評論社からの出版と言うことで、 見やすくわかりやすい装丁、厚さやページ数も通勤の合間に電車で読むのに ちょうどよい大きさになっています。

私が描きたいことはほとんど本書の最初に小崎 資広さんが「本書によせて」に 書いてしまっているので実はあまり書くことがありません。本屋さんの店頭で 最初の3ページに書いてあるので、是非手にとって開いてみてください。

本書の内容を以下の一言が端的にあらわしていると思います。

常に豊富な図表、および説明を裏付ける実験データを示すことによって具体的、 かつ、簡潔に物事を説明します。」

実際 OS やカーネル内部の機能を説明しようとするとつい難しい概念や数式を 使ってしまい、自分でもなにいってんだっけ?ってなりがちです。 本書はそういった概念の重要な要素に関して簡潔かつ実際の実習を通してわかり やすく説明しています。

じつは本書が出版されなかったら、社内向けでも自分で整理して書こうかと 思っていました。そのときに武内さんが書いてくれないかなぁとついおもって いました。私が書くよりも遥かに簡潔かつ適切に書いてくれるはずです。 本書はその願いがかなった一冊です。

筆者の武内さんはカーネル内部の挙動について、実際の業務で詳細な解析を 迫られた稀有な日本人の一人です。趣味でカーネルの解析を行っている人は かなり多数いると思いますが、現実の切羽詰まった状況でカーネルの解析を 行っている人は相当限定されるのではないでしょうか。そういった経験を元に 本書は書かれていると思います。

実際 Linux カーネルに関して、特に性能指標に関しては風説やら、誤解やらが 多いなあと思っているのでそういった誤解やら風説やらを本書が一掃してくれる のではないかと期待しています。

こういった Linux カーネルをテーマにした本としては、例えば以下の2冊が 有名かなと思うのですが、今となっては若干内容が古くなっている部分が 多くまた、内容が難しく読み解くのが大変だと思います。

「詳解 Linuxカーネル 第3版」
https://www.oreilly.co.jp/books/9784873113135/

「Linuxカーネル2.6解読室」
http://www.sbcr.jp/products/4797338261.html

本書はこういった難解な書物を読み解かなくても、実用的な Linux カーネルの 知識を手に入れることができる貴重な一冊だと思います。

特に「試して理解」とタイトルで記載されている通り、本書では実際に動く コードをベースに動作を検証を通じて理解するように構成されています。 カーネルコードや動作は変わっても、本書に掲載されているコードをベースに 検証することで動作を確認することができると思います。

本書の「はじめに」で

仮想マシンでなく実機上にシステムを構築してください。 その理由は、仮想マシンを使用すると、一部の例については本書に記載したもの と比べて挙動が変わることがあるからです。
とありますが、仮想マシンで実行 した場合との差異といった話題も興味深いのではないでしょうか?機会があれば 実際にいくつかの仮想マシンで実行してみた結果なども触れてみたいと思います。

特に KVM と XEN の仮想マシンのスケジュールの違いなど、興味深いテーマでは 無いでしょうか?

以下章別に本書を概観します。

「第1章 コンピュータシステムの概要」では本書が対象とするコンピュータシステム のモデルが示されます。通常は個別のデバイスについて目が行きがちですが、 全体としてのスループットを検討する際はこういった簡素化されたモデルが有効 です。本書は全体を通して、このモデルに従って説明が進みます。

「第2章 ユーザーモードで実現する機能」として、システムコール呼び出しが 概説されています。普段業務で様々なコマンドを使用しているか方も多いかと 思いますが、カーネルへの入り口としてシステムコールを特に意識することは 少ないと思います。個人的には何かカーネルの動作を確認したくて、カーネルソースを 読まなければいけない場合はまずはシステムコール呼び出しから たどっていくことが多いです。カーネルへの入り口としてシステムコールを 取り上げているのは説明の順序としては、必要なのではないでしょうか。

「第3章 プロセス管理」として、fork() と execve() によるプロセス生成が 取り上げられています。実行ファイルをメモリに読み込んで、プログラムを 実行し、終了するまでの一連の流れが説明されています。

本書は入門書という位置づけなので、ELF フォーマットの詳細を確認したい人は 例えば以下の書籍を参照してはいかがでしょうか?

「ふつうのコンパイラをつくろう」
http://www.sbcr.jp/products/4797337958.html

「第4章 プロセススケジューラ」では、CPU に対してどのようにプロセスが 割り当てられ、利用されているかが概説されます。このあたりから本書の 実力が発揮されている感が出てきます。はじめにで仮想環境では異なる結果が 出る可能性があるとの記載がありますが、一番結果が異なるのはここではない でしょうか?実際の検証用コードを用いてプロセスのスケジュールについて 実験と解説を行っています。

プロセスの状態転移について記載があるので、応用として I/O が絡んだ場合なども あってもよかったような気がしますが、そのあたりは読者への課題として残して あるのでしょう。

「第5章 メモリ管理」ではプロセスへのメモリ割り当てについて、デマンド ページングや階層型メモリ管理、仮想記憶についての記載があります。

ページテーブルについてあまりちゃんと説明されている文書を見かけることが 少ないので、非常に参考になります。詳細まで説明されているものとしては 例えば以下の Intel のマニュアルぐらいしかないのではないでしょうか? ただこれをいきなり読んで理解するのは非常に大変なので、まずは本書に 記載されている範囲で理解するだけでもだいぶ違うと思います。

Intel(R) 64 and IA-32 Architectures Software Developer Manuals
https://software.intel.com/en-us/articles/intel-sdm

ただいきなりこれを読んでも玉砕する可能性が高いので、事前知識として 本書を一読してからをお勧めします。ただエンジニアとしては一度は、 Intel の上記マニュアルを当ってみてはいかがでしょうか?

brk()/sbrk() も見捨てないでほしかったなぁ(ボソ

「第6章 記憶階層」では CPU キャッシュから、ディスクキャッシュまでの 記憶階層について記載しています。特に CPU キャッシュについては 2018 年 2月現在において、一番ホットな話題ではないでしょうか? Spectre / Meltdown に ついては同じ筆者の以下の資料があります。

「 図解でわかる Spectre と Meltdown 」
https://speakerdeck.com/sat/tu-jie-dewakaruspectretomeltdown

記憶階層とスループットに関しては、本書の参考文献にも挙げられていますが、 以下の書籍が詳しいです。

「コンピュータの構成と設計 第5版」
http://ec.nikkeibp.co.jp/item/books/P98420.html

ただこれも上下巻でかなり分厚く、読み応えがある書籍になるので、本書で 一回予習してからあたったほうがベターです。

キャッシュを意識したプログラミングなんて今時ほとんどしないかも知れませんが、 ちょっとした工夫で、まったく実行性能がまったく変わってしまうことがわかると 思います。

キャッシュについてもいろんなキャッシュがあるので、開放できないキャッシュが あることは注意が必要になります。

「第7章 ファイルシステム」ではファイルシステムが提供している、 ジャーナリングや CoW 等について概説しています。とくに Btr FS については 他に解説している文献も少ないので、参考になるのではないでしょうか?

また、実運用上よく発生するファイルシステム不整合について記載があるのも 珍しいと思います。

「第8章 ストレージデバイス」でも同じく実験によって、ストレージデバイスの 機能と性能について解説しています。性能上、ボトルネックになりやすいところ でもあるので、このような性能評価方法と解釈について解説してあるのは大変 有用だとおもいます。

また iostat コマンドの出力で rrqm/s 等の項目について、漫然とこんなもの かなぁとおもっている方も多いのではないでしょうか?本書では実験を通じて そのパラメータがどういう操作に基づいてどういう結果を表しているのかを 理解できるとおもいます。システム管理などの業務についている方にとっては チューニングやサイジングを実施するにあたって有効な参考書となるのでは、 ないでしょうか?

ちなみに本書を読み終えた後のより進んだ話題としては以下の書籍がお勧めです。

「詳解 システム・パフォーマンス」
https://www.oreilly.co.jp/books/9784873117904/

上記書籍と本書とは重複する内容も多いですが、本書の方がより平易な表記に なっていると思います。

また C 言語はちょっとと言う方は、以下の書籍もあわせて読まれることを お勧めします。

「Goならわかるシステムプログラミング」
https://www.lambdanote.com/products/go

ただ go 言語では、メモリ管理が C 言語ほど直接扱っているわけではないので、 少しわかり憎いかもしれません。

以上、ざっと読んだ感想です。

2016年11月9日水曜日

KDDI Mobile x h2o を契約したときにいろいろはまったまとめ

ひょんなことから、アメリカに1週間ほど行くのでモバイルルータとか いろいろ見ていたのだけれど、せっかくスマホがSIMロック解除できるので、 格安 SIM を探してみた。

国内 MVNO で海外で利用できる SIM としては、たとえば IIJ MIO の 「IIJmio海外トラベルSIMサービス」が比較的入手しやすいのだけれど、 DoCoMo のローミングサービスを使っているのか、結構割高感が強い

IIJ、海外渡航者向けプリペイド型SIMカード「IIJmio海外トラベルSIMサービス」を提供開始

Amazon を探すと AT&T とかの SIM を輸入して販売している業者が結構あった。 けれど、AT&T のページを見ても日本と契約形態が微妙に違うのと、使い捨て プランが見つからない。

そんな中で、見つけたのが KDDI mobile x h2o

一ヶ月だけの契約ができて、2GB $30 からって言うのも短期旅行者には魅力的。

今回滞在期間は6日ほどで、価格コムの海外向けレンタルモバイルルータの価格を 見ても、1日600円弱 で256MB/日ぐらいが多い。6日で3000円ちょっといってしまい 値段的には変わらず、256MB × 6日で、1.5 GB 程度なので、ちょっと割高に なってしまう。

なので、今回お試しもかねて契約してみることにした。

SIMカードの入手

公式のオンラインショップでは日本国内向けの販売が見つけられなかった。
Amazon で KDDI H2O とかのキーワードで検索すると 200-400円ぐらいの SIM カード見つかるので、そちらで購入した。代理店が複数あり不安になるけれど SIM カードは、SIM カードなのと値段が値段なので、外してもいいや、エイ!って 購入した。アマゾンプライム使ってなかったので、お急ぎ便で370円の送料が かかった。400円の SIM に送料 370 円って....とも思ったが、普通に WallMart の通販見ても $12.95 とかしているので、よしとした。
よく日には無事着いた。

SIMの登録

メニューがわかりにくいのだけれど TOP ページの下のほうから、 「電話番号発行登録(アクティベーション)」をクリックする。 そこから、"「 Wireless 」音声通話プラン新規アクティベーション + 単発チャージ" を選択する。メアド、パスワード、名前、などを入力して新規会員登録する。
アメリカでの連絡先は無いので、「999-999-9999」を入力する。

次に「電話番号発行登録(アクティベーション)」に飛ぶので、同じく名前と SIMの台紙に書いてある "ActFast Code" を入力する。

ここで、料金プランを選択する。一回払いなので「PAY AS YOU GO」かなと 思って選択したら、このプランだと10 セント/MB とめちゃくちゃ高いので 「MONTH PLAN LTE」から選択します。一番安い $30 だと、つかいきるととまって しまうので、使えなくなるので、$40 のプランを選択しました。

最初 「PAY AS YOU GO」を選択してしまうと WEB 上からは変更できなくなり、 電話でサポートにお願いして変更してもらう必要があります。

また 「PAY AS YOU GO」でチャージした金額は無効になるので注意が必要です。

IMEI、SIM 番号は入力しなくても大丈夫です。米国エリア局番や都市名は適当 でいいですが、電
話番号に反映されます。

登録が終わると電話番号が表示されるので忘れずに控えておきましょう。 あとから確認するのは端末に刺さないわからなくなります。また国内では 確認する手段がありません。

料金のチャージ


続いてカード情報の入力です。先ほど控えた電話番号を入力して、Search Plan をクリックすると、選択したプランに応じて、チャージ金額が選択できるように なります。

続いてカード情報の入力ですが、ここではまりました。郵便番号の入力が 数字のみ5桁しか入力できません。カードの種類によっては、ここで承認が 降りないようです。

その場合も同じくサポートに電話して、カードを登録してもらうことになります。 またチャージしたときから30日間有効になるので、帰国の日程に合わせて、 チャージする日を選ぶ必要があります。

自動引き落とし設定をしなければ、1回の課金だけになります。 その場合30日後に利用できなくなります。 追加チャージしない場合はさらに30日後に電話番号もなくなります。継続して 電話番号を保持したい人は注意が必要です。

以上で手続きは終わりです。後は現地でSIMを差し替えて APN の設定などを行う だけで利用可能になるはずです。実際の使用感などはまた後ほど。

まとめ

よいと思ったのは以下です。
  • 日本国内の固定電話向け通話が無料。出張などでは、結構ありがたいです。
  • 携帯電話向けも無料枠がある。大体70分ぐらいあるそうです。 データ通信は通話以外に使いたいので、通話枠があるのはうれしいです。
  • 日本語でサポートが受けられる。
    日本語サポートはやっぱり楽ですね。プランなどの細かいやり取りを英語で するのはつらいです。サポートの担当の方は親切でわかりやすかったです。 日本からフリーダイヤルの番号があるのもよいです。
逆にもうちょっと改善してほしい点は以下です。
  • WEBのインターフェイスがわかりにくい。どこに何があるのか結構探しました。 全部電話で済ましたほうが簡単かも。
  • サポートの受付時間がアメリカ東部時間。日本からかけるときは早朝か、 深夜しか実際にかけられない。
  • 国内でのSIMの入手先がちょっとわかりにくい
これからこういうサービスも増えてくると思うので、今後が楽しみです。

2016年3月23日水曜日

Amazon Linux AMI 2016.03 のリリースノートをみてちょっといいなっておもった

Amazon Linux AMI 2016.03 が、3月22日付けでリリースされました。

Amazon Linux AMI 2016.03 Release Notes
Amazon Linux AMI 2016.03 Packages

リリースノートを見ていて以下の記載におっとおもった。

"NUMA balancing disabled by default"

普通の人はほとんど気にしないと思うんだけれど、微妙にマニアックなチューニング感がとても気になった。

NUMA

NUMA は プロセッサ とメモリの接続方式のこと。従来の方式ではプロセッサとメモリは一つのメモリコントローラ経由で接続されていた。ところが搭載されているプロセッサの数が多くなると、一つのメモリコントローラへ複数のプロセッサからのアクセスが集中し、ボトルネックになってくる。しょうがないので、プロセッサ単位でメモリを接続してしまえばいいのでは?と考えたひとがいる。
これで無事解決かっていうとそうでもなくて、プロセッサに直接つながっているメモリのアクセスは早くなるけれど、ほかのプロセッサに接続されているメモリへのアクセスが遅くなるという問題が発生する。それでも各プロセスがアクセスするデータは多くの場合、局所性が働くので全体としては大体早くなるはず!ということになっている。

NUMA balancing

当然そういった機構に関して、OS のサポートが必要になる。たとえば、同じプロセッサにアクセスするようにプロセスをスケジューリングするとか、メモリの割り当てをNUMA を考慮して、どこに割り当てるかとか、時々メモリの割り当て状況を見直すとか、結構いろいろなことが発生する。

こうした処理が追加されるので、OSの処理に若干のオーバーヘッドが発生する。なので sysctl を通じて、オフオンができるようになっている。

オフにする場合
# echo 0 > /proc/sys/kernel/numa_balancing

オンにする場合
# echo 1 > /proc/sys/kernel/numa_balancing

仮想化されている場合、CPU が PIN されてなければ実際はハイパーバイザでゲストに割り当てるCPUをスケジュールを決めるので、あまりゲスト側でNUMAを意識してもしょうがないのかな?という気もする。
それにオーバーヘッドがあるといっても通常はわずかなので、ほとんどの場合気にならないレベルなのだろうけど、AWS ぐらいあほみたいにコンピューティングユニット抱えていると電気代とか、ちりつもで結構馬鹿にならないのかもしれないとも思う。

とはいえ、比較的おおきなインスタンスでは、NUMA balancing を ON にしたほうが、効率的な場合もあって、実際に以下のインスタンスでは、有効にしたほうがいいようだ。


  • cr1.8xlarge
  • c3.8xlarge
  • r3.8xlarge
  • i2.8xlarge
  • c4.8xlarge
  • d2.8xlarge
  • g2.8xlarge
  • m4.10xlarge

有効にするには以下のコマンドラインを実行するように記載がある。

$ sudo sysctl -w 'kernel.numa_balancing=1'
$ echo 'kernel.numa_balancing = 1' | sudo tee /etc/sysctl.d/50-numa-balancing.conf


参考
「仮想化のチューニングと最適化ガイド」
  8.3. NUMA の自動負荷分散
https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/7/html/Virtualization_Tuning_and_Optimization_Guide/sect-Virtualization_Tuning_Optimization_Guide-NUMA-Auto_NUMA_Balancing.html

wikipedia の NUMA に関する項目
https://ja.wikipedia.org/wiki/NUMA

2015年8月18日火曜日

5 step で Chef Server 12 を構築する手順

以下の URL に記載がある手順に従って Chef Server 12 を構築する。
https://docs.chef.io/install_server.html

※ AWS で構築する場合は、t2.micro だとメモリ不足で起動しない。

1. packagecloud からリポジトリ設定のインポート


curl -s https://packagecloud.io/install/repositories/chef/stable/script.rpm.sh | sudo bash

2. chef-server-core パッケージのインストール

sudo yum install -y chef-server-core
   ...(snip)...
Installed:
  chef-server-core.x86_64 0:12.1.2-1.el6

Complete!

3. 以下のコマンドを実行して、各種サービスを開始

sudo chef-server-ctl reconfigure
..... たくさんメッセージが出力される。
いろいろなレシピが実行されるので結構時間がかかる。
 

4. 最初 chef-server ユーザーの作成

書式は以下の通り
chef-server-ctl user-create <ユーザ名> <名> <姓> <メールアドレス> <パスワード> --filename <RSA Private Key を保存するファイル名>
<実行例>
sudo chef-server-ctl user-create t_suzuki taro suzuki t_suzuki@example.com xxsecretxx --filename t_suzuki_chef.key

作成された、プライベートキーはワークステーションからのアクセスに
使用されるので別途保管しておく

登録されているユーザーの一覧は user-list サブコマンドで表示する。
$ sudo chef-server-ctl user-list
pivotal
t_suzuki

登録されているユーザーの詳細は user-show サブコマンドで表示する。
$ sudo chef-server-ctl user-show t_suzuki
display_name: taro suzuki
email:        t_suzuki@example.com
first_name:   taro
last_name:    suzuki
middle_name:
public_key:   -----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsgYZbeuev/FzT+kI9iqE
7ORU/w8BpZa33tOXs+bafFUhaMYslnVZ5azMbZSRBgobOdTX5Gn/qRUrVQw1czxC
TXx+0tDe68T88McnOFdRjEUTPF1WZh7x1QSgUXSeC1c0388UrdQbFXCcEi8AnPdk
P/YdpzMjJdOkZPFiJpUVZlbUyVs/TLMe5LbvU40x/LJ/8W3kWlHd42ixIjmEC6Ba
k1DkP9FIs9gvUQINgQRLvZK8XWF2AmnF1ew0Sgui5kDWja0VbSecKTW+1XgJib1y
ifxD08qgRTZQBNkog0mqBf5jeXN5dZgqbiKABZ6vPmQxHTZc8fywajj1TH+sOzNj
gQIDAQAB
-----END PUBLIC KEY-----

5. 最初の組織(会社やグループなど)の作成


書式は以下の通り
sudo chef-server-ctl org-create <組織の略称> "<組織のフルネーム>" --association_user <組織に関連付けるユーザ> --filename <RSA秘密鍵を保存するファイル>

実行例
sudo chef-server-ctl org-create example "example inc.," --association_user t_suzuki --filename example-validator.key

登録されている組織の一覧は org-list サブコマンドで表示する
$ sudo chef-server-ctl org-list
example

登録されている組織の詳細は org-show サブコマンドで表示する

$ sudo chef-server-ctl org-show example
full_name: example
guid:      56000f67fc6ce0626817b709ba191895
name:      example

これで最低限動作するはず。

2015年8月17日月曜日

chef 12 server のインストール で混乱したのでメモを残しておく

以下の公式サイトからダウンロードしようとすると、何か登録しないといけないようだが キャンセルしてもダウンロードはできてしまうので、登録は必須ではないらしい。
https://downloads.chef.io/chef-server/

配布自体は package cloud 経由で行われている。
https://packagecloud.io/chef/stable/install

以下のMLスレッドにある記事を見ると今後こっちが主流になるらしい。
http://lists.opscode.com/sympa/arc/chef/2014-12/msg00193.html


sha1 の結果は一緒だったので、簡単な方を選ぶ。
上記 packagecloud のインストラクションに従い以下のコマンドを実行する。

curl -s https://packagecloud.io/install/repositories/chef/stable/script.rpm.sh | sudo bash

実行すると、/etc/yum.repos.d/ 配下に chef_stable.repo というファイルが 作成され、普通に yum でインストールできるようになる。
438 MB と結構でかいので少しインストールに時間がかかる。

$ sudo yum install chef-server-core
Loaded plugins: priorities, update-motd, upgrade-helper
amzn-main/latest                                                                                                                               | 2.1 kB     00:00
amzn-updates/latest                                                                                                                            | 2.3 kB     00:00
Resolving Dependencies
--> Running transaction check
---> Package chef-server-core.x86_64 0:12.1.2-1.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

======================================================================================================================================================================
 Package                                     Arch                              Version                                   Repository                              Size
======================================================================================================================================================================
Installing:
 chef-server-core                            x86_64                            12.1.2-1.el6                              chef_stable                            438 M

Transaction Summary
======================================================================================================================================================================
Install  1 Package

Total download size: 438 M
Installed size: 1.2 G
Is this ok [y/d/N]: y
Downloading packages:
chef-server-core-12.1.2-1.el6.x86_64.rpm                                                                                                       | 438 MB     00:40
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : chef-server-core-12.1.2-1.el6.x86_64                                                                                                               1/1
  Verifying  : chef-server-core-12.1.2-1.el6.x86_64                                                                                                               1/1

Installed:
  chef-server-core.x86_64 0:12.1.2-1.el6

Complete!

ちなみに yum search すると、chef-server と chef-server-core の二つが 表示されて、非常にややこしい。chef-server の方は以下のパッケージが インストールされる。

chef-server-11.1.7-1.el6.x86_64.rpm

こっちは chef 11 のサーバーなので要注意。他に以下のパッケージも 11 ってバージョンがついている。

chef-container-11.16.2-1.x86_64.rpm
private-chef-11.3.2-1.el6.x86_64.rpm

2015.8.18 追記
ちなみにこのリポジトリから取得できるパッケージは以下のとおりでした。
$ yum --disablerepo=* --enablerepo=chef_stable list available
Loaded plugins: priorities, update-motd, upgrade-helper
Available Packages
chef.x86_64                                         12.4.1-1.el6                                            chef_stable
chef-container.x86_64                               11.16.2-1                                               chef_stable
chef-ha.x86_64                                      1.0.0_rc.3-1                                            chef_stable
chef-marketplace.x86_64                             0.0.1-1.el6                                             chef_stable
chef-server.x86_64                                  11.1.7-1.el6                                            chef_stable
chef-server-core.x86_64                             12.1.2-1.el6                                            chef_stable
chef-sync.x86_64                                    1.0.0~rc.6-1.el5                                        chef_stable
chefdk.x86_64                                       0.7.0-1.el6                                             chef_stable
delivery.x86_64                                     0.3.210-1.el6                                           chef_stable
delivery-cli.x86_64                                 20150811030818+20150811030818-1.el6                     chef_stable
opscode-analytics.x86_64                            1.1.5-1.el6                                             chef_stable
opscode-manage.x86_64                               1.21.0-1.el6                                            chef_stable
opscode-push-jobs-client.x86_64                     1.1.5-1.el6                                             chef_stable
opscode-push-jobs-server.x86_64                     1.1.6-1                                                 chef_stable
opscode-reporting.x86_64                            1.5.1-1.el6                                             chef_stable
private-chef.x86_64                                 11.3.2-1.el6                                            chef_stable
supermarket.x86_64                                  2.0.0~alpha.0-1.el6                                     chef_stable

2015年7月21日火曜日

ほとんど何もないところから無理やり、S3 にでっかいファイルをアップロードしたメモ

gzip -c < verybigfile | split -b 100m -d -a 3 - verybigfile.gz.
for FF in verybigfile.gz.* ; do ./s3up.sh $FF ; done

$ cat s3up.sh
────────────────────────────────────
#!/bin/bash
file=$1
bucket=shellupload
resource="/${bucket}/${file}"
contentType="application/octet-stream"
dateValue=`date -R`
stringToSign="PUT\n\n${contentType}\n${dateValue}\n${resource}"
s3Key=XXXXXXXXXXXXXXXXXXXXXXXX
s3Secret=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${s3Secret} -binary | base64`
curl -v -L -X PUT -T "${file}" \
  -H "Host: ${bucket}.s3.amazonaws.com" \
  -H "Date: ${dateValue}" \
  -H "Content-Type: ${contentType}" \
  -H "Authorization: AWS ${s3Key}:${signature}" \
  https://${bucket}.s3.amazonaws.com/${file}
────────────────────────────────────

このシェルをどこから拾ったか忘れた。しくしく
多分ここからこぴって、適当になおした。