OSXでchefインストール


MacOSXにchefを入れようとしてちょっとハマったのでメモ。
Xcodeのバージョンは5.1。

エラーメッセージ

clang: error: unknown argument: '-multiply_definedsuppress' [-Wunused-command-line-argument-hard-error-in-future]
clang: note: this will be a hard error (cannot be downgraded to a warning) in the future


環境変数を指定して実行でインストール出来た。

sudo ARCHFLAGS="-Wno-error=unused-command-line-argument-hard-error-in-future" gem install chef --no-rdoc --no-ri


その後berkshelfのインストールでも同じ目に。
これは依存しているhitimesのインストールで発生していた模様。

AWS管理画面でS3ファイルの公開を設定する

管理画面で設定したいBucketを選択する。
"Properties"をクリックする。
"Permissions"をクリックする。
"Add bucket policy"をクリックする。
左下に"AWS Policy Generator"のリンクがあるのでクリックする。
AWS Policy Generator の画面が開く。

設定を入力して"Add Statement"をクリックする。
"Generate Policy"をクリックすると、生成されたPolicyが表示される。
コピーして、元の画面に戻ってペースト、"Save”をクリックする。
(反映されるのに少し時間がかかる、気がする)

ダウンロードを許可したいときの設定

Select Type of Policy 「S3 Bucket Policy」を選択
Effect 「Allow」を選択
Principal 「*」を入力    ←全体に公開
Actions 「Get Object」を選択 ←取得のみ許可
Amazon Resource Name 「arn:aws:s3:::hogeBucket/*」を入力 ←全てのファイルを対象とする


他のアカウントにS3のデータを移行したいとき、移行先からのアクセスを許可する設定

Principal 「arn:aws:iam::1111111111111:root」を入力    ←111..はアカウントIDに置き換える
Actions 「All Actions」をチェック
Amazon Resource Name 「arn:aws:s3:::hogeBucket/*」を入力 ←全てのファイルを対象とする
ここで一旦、「Add Statement」をクリック。

Principal 「arn:aws:iam::1111111111111:root」を入力    ←111..はアカウントIDに置き換える
Actions 「List Bucket」を選択
Amazon Resource Name 「arn:aws:s3:::hogeBucket」を入力 ←Bucket自体
もう一度「Add Statement」。

ロードバランサ配下のインスタンスを入れ替える

マスタのAMIを更新して、インスタンスを入れ替えたいとき。

1つインスタンスを停止すると新しいインスタンスが立ち上がってくる。
インスタンスの数が少ないときは、1つを止めると他のインスタンスへの負荷が急激に上がってしまう。
それを避けるための方法。

as-update-auto-scaling-group HogeAutoScalingGroup --min-size 5


一旦、min-sizeの数を多めに設定する。
するとインスタンスが設定した数分上がってくるので、それらがロードバランサの配下に入ったのを確認してから古いインスタンスを順に止めていく。
最後にmin-sizeを元に戻しておく。
多めに立ち上がったインスタンスは順に回収される。

EC2でルートディスクを差し替える

消しちゃいけないインスタンスをTerminateしてしまった泣きたい。。。

幸いにもディスクは残っていたので、新しいインスタンスを作って、ディスクを差し替えて使うことにする。
適当なインスタンスを作成(使いたいディスクと同じOS、同じディスクサイズで。なんでもいいのかもしれないけど、気分的に。)
インスタンスを停止
新しい方のVolumeをデタッチ
消してしまったインスタンスのVolumeをアタッチ
インスタンスを起動

これで復旧完了。
やっていることはこの記事とほぼ同じ。


バックアップとして、復旧したインスタンスのAMIを作っておく。

認証局とサーバ証明書とクライアント証明書

認証局サーバ証明書
http://unixlife.jp/linux/centos-5/openssl.html

クライアント証明書
http://assimane.blog.so-net.ne.jp/2010-10-16-1

./CA -newreq
./CA -sign
openssl pkcs12 -export -inkey newkey.pem -in newcert.pem -out assimane.p12