Parascript

1,128 views

Published on

My first LT
Kyoto.pm

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,128
On SlideShare
0
From Embeds
0
Number of Embeds
29
Actions
Shares
0
Downloads
3
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Parascript

  1. 1. 地味に便利な自作の鯖管コマンド id:shoichimasuhara
  2. 2. ■ 自己紹介はてなid:shoichimasuharaTwitter:@shoichimasuharaはてなバイト新入社員 (3月から)鯖管日頃はなぜかPerlの会社でRuby書いてます
  3. 3. Kyoto.pmで鯖管?
  4. 4. さて本題
  5. 5. 地味に便利な自作の鯖管コマンド っぽいものを作ってみた
  6. 6. サーバってどうやって管理してますか? (※インフラな人向け)
  7. 7. ■ 数百台ならまだしも数千台オーダになると全台手作業とかムリPuppetとかChefとか使ってますよね設定ファイルをgitで管理とかサーバの設定がまちまちだと管理しにくい
  8. 8. 頑張っているものの たまに
  9. 9. 「あれ、あのファイル、 入ってるホストと 入ってないホストが あるっぽいぞ? 今すぐリスト出せ」
  10. 10. なんてことがあります
  11. 11. そんな時には
  12. 12. 同時ログインSSHコマンド
  13. 13. たとえば
  14. 14. CSSH
  15. 15. ■ CSSH使い方 ホストリスト渡すと一気にターミナルが開いて同時ロ グインができる キーボードを打つと全台に入力されるメリット 目視しながら同時にコマンド実行できるデメリット
  16. 16. 画面サイズ足りな い
  17. 17. ■ 他…mssh Man見る限り機能が貧弱そうGnu parallelとかxargsとか コマンドライン書くのも覚えるのも面倒他にも似たようなのはある Capistranoもできたような…? 調べるほど必要でもない…
  18. 18. ということで作りました
  19. 19. parascript
  20. 20. なにはさてより D E M O ります
  21. 21. ■ 基本設計ssh batchモード ssh -o BatchMode=yesStrictHostKeyCheckはしない… ssh -o StrictHostKeyChecking=noコマンドライン、スクリプトをbase64encode 向こう側でデコード echo $encoded_command |base64 -d -i|sh e c h o a G 9 z d G 5 h b W U = |b a s e 6 4 - d
  22. 22. ■ sudoするにはsudo -S でパスワードを標準入力最後のshをsudoしたいけど、コマンド・スクリ プト本体を送るために標準入力使ってるなので実行するコマンド全部を文字列にし て、sh -c に食わせましょうまとめて書くとこんな感じ
  23. 23. (passwd)→|sudo -S sh -c echo d2hvYW1p|base64 -d -i|sh
  24. 24. ■ SSH標準入出力と並列実行パスワード入力の標準入力結果の標準出力、標準エラー出力これらを簡単に扱いたい→ use Net::SSH qw/ sshopen3 /;並列実行→ ごく普通にParallel::ForkManager結果とか
  25. 25. ■ 注意点・課題base64コマンド必須鍵認証前提 そのあたりの柔軟性どうしようセキュリティ甘めデストリビューション混在時にちゃんと動作する かどうか…すでにFreeBSDで不具合報告
  26. 26. 地味に便利です
  27. 27. ご清聴ありがとうございました

×