Masteries

技術的なことや仕事に関することを書いていきます.

EdgeRouter Xで公開鍵を使ってログインする

ちょっと... というか, だいぶ前に id:hoto17296 などと一緒にEdgeRouter Xを購入していました.

EdgeRouter Xは, ネットワーク機器ベンチャーUbiquiti Networksというところが開発しているルータ製品の1つで, 安価なわりに高機能で評判... らしく, いつか遊べると良いのでは? ということで買っていたのでした.

詳しくはこちらのサイトを見て下さい. 様々な設定手順とかも紹介されていて便利です:

yabe.jp

で, 買ってから半年くらいは, 単純にルータとして使っていたのですが, 流石に勿体無いし, そろそろ本腰入れていろいろやってみるか... ということで, この土日にいろいろやっていました. その中で幾つか知見があったので, ちまちまとではありますが, まとめて公開していこうと思います.

公開鍵を使ってログインする

EdgeRouter Xはブラウザから設定することもできますが, sshコマンドでEdgeRouter XにログインしてCLIで各種設定をすることもできます(EdgeRouter Xには, ネットワーク機器向けOSであるVyattaの派生版であるEdgeOSが載っています).

デフォルトだと, パスワードログインとなっていて「流石にナ〜」と思ったので, 公開鍵を使ってログインできるようにしました. とはいえ, 概ねここに書かれている通りにやればOK: SSH login with RSA keys on Vyatta/EdgeOS

$ configure
# loadkey <user> /path/to/id_rsa.pub
# commit
# save

適当な場所(上の例では/path/to/id_rsa.pub)に公開鍵を設置してコマンドを実行します. なお, <user> にはその公開鍵を使いたいユーザー名を入れます.

...ちなみに直接authorized_keysに追加した場合, ファームウェアアップデートなどで消えてしまったりするそうなので, 上記の手順で設定する必要があります.

注意点

ここで設置して読み込ませる公開鍵は, コメント部分が必要になります. というのも, loadkey コマンドの実装が, 公開鍵を半角スペースでsplitしたときに(このsplitはPerlのsplitです, なんとloadkeyを実行すると内部でPerlのスクリプトが動いていました), 3つの要素が存在しない場合エラーになるからです.

...というわけで,

ssh-rsa <...key...>

こういった形で公開鍵を用意するとダメで,

ssh-rsa <...key...> comment

このように, 適当なコメント(上記の例ではcommentのところ)を書いた上で読み込ませる必要があります. 最初, コメントがない状態で読み込ませようとして延々とエラーになり, 20分くらいロスしました...

パスワードログインを無効にする

さて, これでEdgeRouter Xに公開鍵を使ってログイン出来るようになりました. 続いて, パスワードログインの機能を無効にしましょう.

$ configure
# set service ssh disable-password-authentication
# commit
# save

で, OKです.

Mackerel Drink Up #6で, 「はてなブログにおけるMackerel活用術」というLTをしました

本日開催されたMackerel Drink Up #6で, 「はてなブログにおけるMackerel活用術」というLTをしました.

mackerelio.connpass.com

資料はこちらです.

speakerdeck.com

Mackerelは「サーバーの監視SaaS」として捉えられる事が多いですが, それ以外にも「サーバーの管理」, 「サービスの定期的な振り返り」, 「サービスに起こったイベントの記録(グラフアノテーション)」, 「サービスや開発チームの状況の可視化(サービスメトリック)」などなど, 様々な目的で利用できるツールだと思っています.

発表資料の中に登場するMackerel活用事例は, ほとんどがチームメンバーが試行錯誤の末に構築したものではあるのものの, 資料としてまとめているうちに「こういう使い方も出来そうでは?」といった気付きがあったので, 機会があれば実践してみたいですね.

引き続き, こういった形でMackerelの活用術など共有していきたいですし, いろいろな会社, いろいろなチームが工夫を凝らしながらMackerelを活用していると思うので, そういった知見もどんどん吸収して, はてなブログの開発に活かしていきたいと思います!

「Mackerel サーバ監視 [実践] 入門」発売中ですね!

www.songmu.jp

id:Songmu さんのブログでも紹介されている通り, 「Mackerel サーバ監視 [実践] 入門」が発売中です!

Mackerel サーバ監視[実践]入門

Mackerel サーバ監視[実践]入門

  • 作者: 井上大輔,粕谷大輔,杉山広通,田中慎司,坪内佑樹,松木雅幸
  • 出版社/メーカー: 技術評論社
  • 発売日: 2017/08/26
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

この本は, Software Designで連載されていた「Mackerelではじめるサーバ管理」を本にまとめたものになっています. 著者欄に自分の名前はないのですが, 実は自分が前職時代にこの連載に寄稿した, Mackerel活用術の記事が「付録」として掲載されていたりしますので, 興味を持った方は是非ご一読頂ければ幸いです.

Mackerelは, もはやインフラ監視/管理の基盤と言って差し支えないSaaSだと思っていて, 自分自身はてなブログというサービスを開発/運営するという業務の中で, バリバリ活用しています. …というLTを, 近々開催される「Mackerel Drink Up #6 Osaka」で出来た良いなと思っておりますので, こちらも是非(便乗宣伝).

mackerelio.connpass.com

peco芸: ファイルを検索して開いたりする

gfx.hatenablog.com

pecoめっちゃ便利ですよね. 僕も愛用しています. こちらの記事で紹介されているように, ghq + peco も便利ですが, 僕は ag + peco の組み合わせにハマっていて(?), その紹介をします.

ag

ag (The Silver Searcher)は, 一言で言えば「めっちゃ早いgrep」みたいなものです. 最近は, これよりも更に早いhw (Highway)とかも登場しているようですが, 手癖でずっと ag コマンドを使っています.

MacでHomebrewを使っていれば, こういう感じでインストールできます:

$ brew install the_silver_searcher

さて, ag コマンドは grep のように使えますが, -l オプションを使うと, カレントディレクトリ以下に存在するファイル(ag が検索対象とするファイル?)の一覧を出してくれます(例は, skajiさんのApp::cpmのGitリポジトリのルートで実行してみた様子です):

$ ag -l
author/copyrights-and-licenses.json
author/cpanfile.snapshot
author/fatpack.pl
Changes
Build.PL
cpanfile
lib/App/cpm/CircularDependency.pm
dist.ini
lib/App/cpm/Distribution.pm
lib/App/cpm/Job.pm
lib/App/cpm/Logger/File.pm
lib/App/cpm/Logger.pm

    ...

これを, peco と組み合わせてみましょう.

ag + peco

色々やり方はあると思いますが, 自分は .zshrc に次のように書いています.

function peco-file() {
    local filepath=$(ag -l | peco --prompt 'PATH >')
    if [ -n "$filepath" ]; then
        if [ -n "$BUFFER" ]; then
            BUFFER="$BUFFER $(echo $filepath | tr '\n' ' ')"
            CURSOR=$#BUFFER
        else
            if [ -f "$filepath" ]; then
                BUFFER="$EDITOR $filepath"
                zle accept-line
            fi
        fi
    fi
}
zle -N peco-file
bindkey '^f' peco-file

peco-file という関数を用意して, これを Ctrl + f で呼び出すようにしています. 更に, バッファ($BUFFER)の有無によって挙動が変わるようになっていて,

  • バッファ($BUFFER)が空の時は, ag -l によって得られたファイルの一覧を peco で検索/選択して, それをそのまま vim で開く, という挙動をします:

f:id:papix:20170726111735g:plain

  • バッファ($BUFFER)に空ではない時, 例えば carton exec -- prove のような文字列が入力済みのときは, peco で検索/選択したファイルを入力済みの文字列の末尾にくっつける, という挙動をします:

f:id:papix:20170726112006g:plain

このように, 「vim でファイルを開く」と「コマンドの引数としてファイルを指定する」が, 全て Ctrl + f で実現できて, これがなかなか非常に便利です.

まとめ

このツイートを見て, 確かに! と思ったので, シュッと書きました. 皆さんもこの機会にオリジナルの peco ハック(?)について記事を書いてみると良いと思います!!!

YAPC::Fukuokaを終えて

YAPC::Fukuoka 2017 HAKATA, お疲れ様でした. スタッフの1人としては, とにかく当日右往左往していたら, アッという間に終わっていた... というのが正直な所でしたが, 当日ご参加頂けた皆様は楽しんで頂けたでしょうか.

今回のYAPC::Fukuokaは, 本当に素晴らしい会場と, 優秀なボランティアスタッフに恵まれたものの, それでも予期せぬ出来事が巻き起こるのが, イベント運営の怖いところです. 参加者の皆様にご迷惑をおかけした場面もあったかとは思いますが... それでも楽しかった, 得るものが多かった, 次のYAPC::Okinawa 2018 ONNNASONも是非行きたい! ...などと感じて頂けたのであれば, 本当に幸いです.

YAPC::Fukuokaの終了後, スタッフは会場を片付ける手はずになっていたのですが, とにかく1日動き続けて元気がなかったので, 先に懇親会に参加させてもらっておりました. 懇親会の会場を眺めると, とにかく皆さん笑顔, 笑顔で楽しそうに会話をされていて, 思わず自分も笑顔になりましたし, なんというか, 「やってよかった...」と実感しましたね. まあお陰でビールが美味しすぎて, とにかくひたすら飲みすぎて, ひどい状態になっていた件については... 大変申し訳ございませんでした...

あとはそうですね, 今回のYAPC::Fukuokaの個人的な裏目標(?)は, 毎回YAPC::Japanに対してスポンサーとしてご協力頂いている株式会社ネコトーストラボさんのノベルティのサイリウムを有効活用したい! というもので, クロージングでそれを果たすことが出来て大変満足しています. ネコトーストラボさん, 毎回ノベルティとしてサイリウムをご用意して下さっているにも関わらず, 毎回使われずに終わっているので, 今回は是非何かしらの形で活用するぞ! と思ったりしていたのでした.

YAPC::Fukuokaでの役割

今回は, Fukuoka.pmの id:debility さんを実行委員長に迎え, Japan Perl Association側の代表を私が務める形で準備をしていきました. 自分の役割には特に肩書はありませんが, まあ言うなれば「実行副委員長」といったポジションと言えそうです.

カレンダーを見ると, 打ち合わせの為に初めて福岡に行ったのが2016年9月末頃だったので, おおよそ9ヶ月ほどYAPC::Fukuokaの準備をしていたという感じでしょうか. とはいえ, 4月〜5月くらいまでは定期的に打ち合わせをしつつ, 手が空いた時にタスクを消化していく... 程度でかなり平和ではありました. 5月に入ってくると結構忙しくなってきて, 開催が近づいてきた6月末辺りは, 結構しっちゃかめっちゃかになっていた気がします.

詳しくは, 実行委員長である id:debility さんの振り返りエントリに, 開催までのタイムラインなどなどまとめられているので, そちらを見て頂けると良さそうです.

blog.yapcjapan.org

また, YAPC::Fukuoka当日の様子は, この記事でアレコレ余計に語るより, 参加者の感想エントリなどを見るのが良さそうです.

blog.yapcjapan.org

終わった時に思ったこと

クロージングが終わって, YAPC::Fukuokaが無事に完結して, その時に思ったのが, 「あ, きっと今夢が叶ったな...」ということでした. 折角なので, その辺の話をしようかと思います. 多少エモいかもしれませんが, そのへんはご了承下さい. そういうのが苦手/嫌いな人は, きっとこの先の文章を読まない方がいいでしょう.

夢の話, 或いはバトンを繋ぐということ

自分が"Yet Another Perl Conference"というイベントに参加したのは, 2011年のYAPC::Asia 2011のときでした. 当時は大学生で, Perlを勉強し始めたばかりの時期でしたが, たまたまスカイアークの遠方からの参加者支援制度という制度を知って応募したところ何故か採択頂き, 参加したのでした.

...余談ではありますが, 当時ご支援頂いたスカイアークとスカイアークの小林社長は, 今でもファームノートとして学生支援スポンサーを継続して頂いています. 個人的には, この「学生支援スポンサー」は地味かもしれなけれど, 未来ある若者にカンファレンスを体験して頂くという意味ではものすごく重要なスポンサーメニューだと思っていて, 本当に感謝の気持ちでいっぱいです.

で, YAPC::Asia 2011の話に戻ると, 当時はまだ本当にPerlを勉強し始めたという状態で, 右も左もわからない! という状態だったけれど, 技術について熱く語るエンジニアの姿を見て感銘を受けたり, 技術力の無駄遣いとしか言えないけれどもとにかく超絶な発表(特にPerlで8ビットゲームを作る話とかは本当にエキサイティングでしたね...)に感動したり, とにかく最初から最後まで興奮しっぱなしだったことを, 今でもずっと憶えています. そしてその時に, 「この人達と, 肩を並べて働けるエンジニアになるぞ!」という夢を持ったのでした.

今は2017年, あれから6年が経ちました. 思えばその間, いろいろなことをやってきた気がします. 全国各地のPerlコミュニティに足を運んだり, Perl入学式を始めてみたり, ブログに技術ネタを書いたり, 勉強会で発表したり, Webサービスを作ってみたり... その途中で, 明らかに遠回りしていた所もあったりしましたが, 今思えばその遠回りもきっと必要な糧だったのでしょう.

いろいろな積み重ねを経て, お陰様で就活もうまく進めることができて, そこから更にいろいろなことがあり, 今ではなんと, はてなという会社で最高の仲間と最高のサービスの開発に携わることができている(もし5年くらい前の自分に, 「5年後の君は, はてなに入って id:hitode909 さん達と一緒に仕事をしているんだヨ!」と言ったら, 間違いなく「冗談を言うなら, もっと面白い冗談を言ってくれヨ!!!」と笑って返していたことでしょう)訳で, そこだけ見れば, とっくに「あの日の夢は叶っていた」と言えそうです.

ではなぜ, YAPC::Fukuokaが終わった時になって, ようやく「夢が叶った」と実感できたのか? なんとなくですが, きっとあのYAPC::Asia 2011で夢を抱くと同時に受け取っていた"バトン"を, ようやく次に渡しきれたということに, 実感が持てたから... かもしれません.

...そういえば, 「バトンを渡す」という話は, id:tomcha0079 さんの感想ブログにも書かれていましたね.

tomcha.hatenablog.jp

懇親会ではPerl入学式の @papix 校長と、今回の自分のトークは若い人たちにバトンが繋がるトークを心がけた事と、自分は @papix さんから5年前にPerl入学式に参加してバトンを受け取ったからこそ、今この場に居るといった事を話しました。 @papix さん自身も、ファームノートさんからYAPC参加の旅費支援というバトンを受けたから今があると言ってられたので、Perlのコミュニティは次から次へとバトンを繋げていく素晴らしいコミュニティだなぁと、参加する機会があって良かったと改めて感じました。

まさにこの通りなのかなー, と思っていて, 自分がYAPC::Asia 2011で受け取ったバトンを, いろいろな形で手渡していって, その結果として, 今回YAPC::FukuokaではPerl入学式卒業生として初めて id:tomcha0079 さんのトークが採択されて登壇されたり, Okinawa.pmの id:codehexid:shimitakax といった, 勢いのある若者が登場してきたり, その他いろいろなイベントが起きていったのかも? と思っています. ...まあ, 沖縄の若者たちについては, 僕がバトンを渡そうが渡すまいが, 今のように勢いある活躍をしていたのは, 間違いないと思いますが.

その集大成として, 自分がバトンを受け取った場所である"Yet Another Perl Conference"というカンファレンスを, 今度は自分たちの手で作り上げて, YAPC::Fukuokaとして開催して, 次のYAPC::Okinawaに繋げることができました. 「あの日憧れた場所を自分たちの手で作り上げ, それを次に繋げる」, それがYAPC::Asia 2011で受け取ったバトンの中で, 最後まで残っていたものだったのかもしれません. だからこそ, YAPC::Fukuokaが終わった時に, 「夢が叶った」というか, 「夢を叶えきった」と思ったのでしょう.

...このバトンが, これからも繋がり続けると良いですね.

これからのこと

...まあ, アニメで言えば最終回的な展開を迎えた訳ですが, とはいえまだまだやることはたくさんあります. はてなで働くということはとにかくエキサイティングで, まだまだやりたい事は尽きないし, Perl入学式はもちろん, JPAのスタッフとしてやっていかないといけないこともたくさんあります(まずは, YAPC::Okinawaが成功するように尽力するところですね...!).

最近沼に片足を突っ込んでいる(?)アイドルマスターシンデレラガールズの楽曲に, EVERMOREという曲があり, その中にこのような歌詞があります:

先へ先へ 夢の先へ 進んでゆくと誓うよ

今まさに, そういう状態なんだろうなーと思っていて, あの日憧れた夢にようやく追いつくことができた! という所で満足せず, 更にその夢の先を目指して, これからも引き続きやっていくぞ!!! という感じです.

いろいろあるかとは思いますが, 引き続き, ご指導ご鞭撻の程, よろしくお願いいたします.

まとめ

EVERMOREめちゃくちゃ良い曲なので皆さん聞いて下さい.

www.youtube.com

購入する時はコチラ!!!

THE IDOLM@STER CINDERELLA MASTER EVERMORE

THE IDOLM@STER CINDERELLA MASTER EVERMORE