AWSでsshするならyogafireも便利
※便乗記事ですごめんなさい><
http://m.igrs.jp/blog/2013/03/14/ec2-ssh/
yogafireはec2を便利に使うためのコマンドラインツールです。
yogafireの機能はsshだけではありませんが、
sshするだけでも便利なのでチラッと紹介してみます。
インストール
# ※cpanmコマンド無い時 brew install cpanminus # インストール (ncurses-devel / readline-devel / libxml2-devel パッケージが必要) cpanm https://github.com/toritori0318/p5-Yogafire/tarball/master
初期設定する
yoga use --init
sshする
# 一覧から選択 yoga ssh # Nameタグが「www01」のサーバにsshログイン yoga ssh www01 # Nameタグが「www*」のサーバを一覧表示。ユーザはec2-userでログインする yoga ssh 'www*' --user=ec2-user # AWS APIの条件から絞り込んで一覧表示 yoga ssh --filter='availability-zone=ap-northeast-1,group-name=base'
ssh踏み台指定
# タグ名「fumidai」のインスタンスを踏み台にする yoga ssh --proxy=fumidai
または、.yogaファイルに「proxy」を設定してもOKです。
application1: access_key_id: xxxxxxxxxxxxxxxxx ... proxy: fumidai ...
インタラクティブに絞り込んでみる
1.普通にyoga sshしたあと、「app」を入力してEnter。
タグ名に「app」を含むインスタンスがフィルタされます。
2.さらに「b」で絞込み。
3.さらに「web」で絞り込むと、最後の一つのインスタンスなので自動でsshが実行されます。
もちろん、途中でNoを指定してsshを実行することも可能です。
リモートコマンド実行
# Nameタグが「www01」のサーバでlsを実行 yoga cmd www01 ls # Nameタグが「www」で始まるサーバでuptimeを実行 yoga cmd 'www*' 'uptime' # Nameタグが「db」で始まるサーバでsudo+password実行 yoga cmd 'db*' -s -p '/etc/init.d/redis start'
リモートにファイルを get / put
rsyncでリモートサーバのファイルを取得します。
# Nameタグが「www02」サーバの「/tmp/hoge.log」をローカルの「./」に転送 yoga get www02 /tmp/hoge.log ./ # Nameタグが「www」で始まるサーバ全部に「/tmp/hoge.log」をローカルの「./」に転送 yoga get 'www*' /tmp/hoge.log ./ # ホスト名でも可能 yoga get hogehoge.example.com /tmp/hoge.log ./ # dry-runモード yoga get www02 /tmp/hoge.log ./ --dry-run # rsyncオプションを追加(node_modulesディレクトリを除外してsync) yoga get www02 ./nodapp ./ -o '--exclude=node_modules' # ローカルの「README」ファイルを、Nameタグが「www03」サーバの「/home/tori243」に送信 yoga put www03 README /home/tori243
yogafireには他にも多数のコマンドが実装されているので
ご興味のある方は他の記事もご参照ください。
http://d.hatena.ne.jp/tori243/20130102/1357142925
http://d.hatena.ne.jp/tori243/20130327/1364392574