2019年4月23日火曜日
同時に複数のマシーンで同じ操作をする with Tmux
4月 23, 2019
sitateruのエンジニア北爪です。
複数のシェルで同じ操作をしたい時ってないですか?
- ログを一箇所に集めてないけど、アプリケーションサーバーが複数台ある
- 複数台同時にtopコマンドで負荷をまたはtailコマンドでログを調査したい
など調査段階でAnsible, Fabやcapistranoで操作するほどではなく、複数のサーバーを同じようにインタラクティブに操作したいという要求はあるように思います。
今回は複数のシェルに対して、分割された画面をみなが同時に操作、そのコマンドラインの結果を参照することが可能です。
tmuxを風にいうと、一つのpaneに行うキーボード操作をそのpaneが存在しているWindow内すべてのpaneキーボード操作を同期することができます。
この機能は、tmuxの synchronize-panes 機能です。tmuxを使ってない人には導入する大きなメリットの一つになるのではないかとお思います。デフォルトです。
http://man.openbsd.org/OpenBSD-current/man1/tmux.1#synchronize-panes
使い方
1. tmuxを起動し、複数のpaneを作成がある状態で2. tmuxにbindしてあるtmuxのprefixキーを入力した後で、 `:` を入力します
(余談私は ctrl-t にしています)
# act like GNU screen
unbind C-b
set -g prefix C-t
3. tmux用のコマンドが立ち上がるので、そこに、
set synchronize-panes on
を入力します。4. そうするとなんと!表示されているpane(分割した画面) に同じキーボード操作が入力されます
5. もう同期したくなくなったら、
set synchronize-panes off
にて解除することが可能です。以上です。
2018年12月13日木曜日
ec2のインスタンスログインを簡単に管理する ~EC2 with Peco ~
12月 13, 2018
sitateruでサービス・プロダクトを担当している北爪です。
インフラを見ることもあり、ec2サーバーのアドレス管理についてCLIで行う方法を紹介します。
目的
ec2のインスタンスはアドレスが構築するたびに変わり、負荷や新しいプロジェクトが立ち上がると増えたり減ったりします。
そのため、動的にサーバーアドレスを取得する必要があります。
AWS consoleに入ることなく、awsコマンドからサーバーリストを取得し、CLI filterのpecoを使って、SSHまでおこないます。
使い方
Command+\
でpecoを起動
やじるしの ↑↓
か、キーワードで絞る
SSHするサーバーを選んでEnterを押す
SSHコマンドがはかれる
準備
zshを使っているのを前提に説明します。
必要ソフトのインストール
Shellの設定
ec2 コマンドを作る
AWS CLIから、ec2をリスト化するコマンドを作成し、shellに設定します。(zshrc)
alias ec2="aws ec2 describe-instances --query 'Reservations[].Instances[].{PublicDnsName:PublicDnsName,InstanceId:InstanceId,Tags:Tags[?Key==\`Name\`].Value|[0],InstanceType:InstanceType,State:State.Name}' --output table"
peco-ec2コマンドを作る
zshrc
にpeco-ec2
をつくります- ログインユーザーをdeployにしています
function peco-ec2 () {
local selected=$(ec2 | peco --query "$LBUFFER")
if [ -n "$selected" ]; then
BUFFER="ssh deploy@$(echo $selected | awk 'match($0, /ec2.*\.amazonaws\.com/) {print substr($0, RSTART, RLENGTH)}')"
zle accept-line
fi
zle clear-screen
}
- さらに、好きなキーにバインドします。
- ここでは、
Command-\
につけています
zle -N peco-ec2
bindkey '^\' peco-ec2
まとめ
ec2をリスト化し、すぐにそこからsshを選べるようにしました。
登録:
投稿 (Atom)