iterm2 version3.0でssh-host-colorが`44:52: syntax error: end of line~~~`みたいなエラー出すのを直した

細かいものを書いてブログを延命するエブリデイ₍₍ (ง´・_・`)ว ⁾⁾

前置き

iterm2 3.0のshell integrationが結構よくて、

  • 時間がかかるコマンドを実行しちゃった後に、あっ終わったら通知して欲しかった・・・ってときにもCmd-Opt-Aで後付アラートしかけられたり
  • 成功失敗が▷マークで表示されて、失敗されていた場合は右クリックでステータスコードが見れたり
  • ファイルドロップすると雑にscpでアップロードできたり
  • ファイル右クリックで雑にscpでダウンロードできたり

みたいなことが出来るようです。 Shell Integration - Documentation - iTerm2 - Mac OS Terminal Replacement

shell integrationは最初聞いた時うーんと思っていたんですが色々やってくれるのでよさそうです。特にアラートが良いです。 ステータスコード表示は自前でプロンプトに表示していたのから切り替えました。

ssh-host-color

iterm2 version3.0には接続先username@hostnameに応じてプロファイルを切り替える(ことで背景色を変える)ような機能があるんですが、ワイルドカード指定しかなくてどうも正規表現でマッチさせるみたいなことはできないようです。

なので、以前から使っていたssh-host-colorを続投することにしたんですが、sshしてexitすると毎回44:52: syntax error: end of line があるべきところですが identifier が見つかりました。 (-2741)と言われるので直しました。

gist.github.com

使い方は変わらずgistのコメントに従えばよい感じです。

markdown内のjsonコードブロックを拾ってjsonlintかけてくれる君を雑に作った

markdownjson codeblockにAPIレスポンスの仕様とか書いてるけど何か微妙にずれたりしていてワーってなるときに備えて作りました。 codeblockを抜き出してきてjsonlintを叩きまくる仕様です。 実装が雑だけど、困ってないしあんまり継続的にはメンテしないだろうなという気持ちを受けて experimental-markdown-json-lint という名前です。

GitHub - matsu-chara/experimental-markdown-json-lint

www.npmjs.com

以下の様なsample.mdに対して

this is a chapter

here text

aaa

{ "a": 1 }
<?php
echo 'ok';
{ "b: 'a' }
{ "b": 2 }
{ "x: 2 }

yeah

以下の様な結果を返します。

sample.md
Parse error on line 1:
{ "b: 'a' }
--^
Expecting 'STRING', '}', got 'undefined'
Parse error on line 1:
{ "x: 2 }
--^
Expecting 'STRING', '}', got 'undefined'

file-glob対応しているので **/*.md もいけます。

Slackの勢いをグラフにしてくれる君を作った

github.com

https://raw.githubusercontent.com/matsu-chara/slack_ikioi_png/images/all.png

分報チャンネルが社内で話題なので流量を可視化することで仕事の集中度となんかリンクしてるのかなーと思って雑に作りました。 22~0時とかに山がありますがその辺は仕事してるのではなくて帰宅後雑談タイムだなーとかが分かります。

ruby力がなさすぎてrubocopに怒られまくった(;´Д`)

KafkaMeetup Japan#1 で発表しました

Apache Kafka Meetup Japan #1 at Yahoo! JAPAN - connpass

www.slideshare.net

ザクザクとした発表になりましたが、これからKafkaを導入しようとか今導入してますという人たちにとって役立つ情報になると良いなと思っています。

RAIDについては、カーネルパニックにしちゃえば良いのではという意見も頂き色々進捗しそうです。 Brokerのヘルスチェックと組み合わせてやりたい・・メトリクスの可視化もしたい・・。

Scala研修テキストも公開されているので、 今回のも含めて、お仕事でやっていることが大体外部に公開できていることになりました。

こういう感じでオープンに仕事できるというのは良いことですね₍₍ (ง´・_・`)ว ⁾⁾

ansible.cfgにask_vault_pass = Trueを設定したいけど毎回パスワード聞かれたくないとき

ansible.cfgにask_vault_pass = Trueを設定したいけどそうすると必要なとき以外もvaultパスを聞かれてつらいのをなんとか回避する

ansible-vaultで暗号化したファイルをansible-playbookコマンドなどで使いたい場合は

ansible-playbook --ask-vault-pass -i ... site.yml

のように--ask-vault-pass を指定する必要がありますが、人類なので容易に指定を忘れ、 ERROR: A vault password must be specified to decrypt のように追い返されたりします。

このようなミスを防ぐためにAnsible Vault を賢く使うで紹介されているようなテクニックが利用できます。

具体的には、ansible.cfg

[defaults]
ask_vault_pass = True

と書くことで、--ask-vault-pass を指定しなくてもvault passwordが聞かれるようになります。

(vault_password_file=/path/to/password/fileを書くとpassword入力自体もショートカットできますが、 機密情報ファイル管理という別の問題が発生するので今のところ使っていません。)

ところが上記のansible.cfgを設定すると

ansible -i ... all -a "echo hello"

のような暗号化ファイルの復号化が必要ないコマンドに対しても毎回vault-passが聞かれるようになります。 (聞かれるが、decrypt自体は行わないので、"a"とか空白とか入れてもコマンドが実行されるという仕様・・・。)

これが少し面倒なのでansible.cfgに上記設定をいれるか迷っていましたが、

ANSIBLE_ASK_VAULT_PASS= ansible -i ... all -a "echo hello"

のようにansbile.cfgの設定を上書きしてask_vault_pass指定を一時的になかったコトにできるらしいので、暗号化が必要ないコマンドではこれを実行することにしました(若干面倒だけど・・・。)