go langことはじめ
ちょっとgoさわってみたくなった
インストール
Macなのでhomebewで
% brew install go
ちょーかんたん
PATHの設定
zshなので.zprofileで
if [ -x "`which go`" ]; then export GOROOT=`go env GOROOT` export GOPATH=$HOME/.golocal export PATH=$PATH:$GOROOT/bin:$GOPATH/bin fi
事前にmkdir ~/.golocal
してます
はろーごーらんぐ
定番
- hello.go
package main import "fmt" func main() { fmt.Println("はろーごーらんぐ") }
というか普通に日本語つかえた。
build
% go build hello.go
実行
% ./hello はろーごーらんぐ
でけた。
ちなみに
なんでいきなりgoかというと、aws-goを使ってみたかったから。 AWS API使ったすごい簡単なものをpythonで作ったんだけど、ふとこれをgoで作ったらどんなんになるんだろと思って。
というわけでこれからaws-goで遊んでみます。
EC2のタグをCLIで管理するtapewriterというツールを作った
タイトル通りですが、EC2のタグをCLIで管理したくて(=コード化したくて)作ってみました。
route53をDSLで管理するroadworkerという素晴らしいツールがあるのですが、おもいっきりその影響を受けています。 (や、ほんと素晴らしいツールで結構な衝撃だったんです)
なにをするもの?
EC2のタグをjsonで管理できるようになるツールです。 jsonなのでバージョン管理もバックアップも取れます。
どんなところで使うの?
- タグのバックアップをとりたいとき
- タグをバージョン管理したいとき
- ブラウザでの作業が嫌だというとき
- タグを一気に変更したいとき
つかいかた
タグをエクスポートする
% tapewriter -r ap-northeast-1 -f dev-app.json --export --filter '{"Env":"dev", "Role":"app"}'
フィルターが使えます
タグを編集する
- 変更前
{ "instances": [ { "id": "i-11111111", "region": "ap-northeast-1", "tags": { "Env": "dev", "Role": "app", "Name": "hoge", "State": "standby" } }, { "id": "i-22222222", "region": "ap-northeast-1", "tags": { "Env": "dev", "Role": "app", "Name": "fuga", "State": "standby" } } ] }
- 変更後
{ "instances": [ { "id": "i-11111111", "region": "ap-northeast-1", "tags": { "Env": "dev", "Role": "app", "Name": "hoge", "State": "run" } }, { "id": "i-22222222", "region": "ap-northeast-1", "tags": { "Env": "dev", "Role": "app", "Name": "fuga", "State": "run" } } ] }
Stateタグを変更しています。
dry-run(テスト実行)
どんな変更がされるか確認
% tapewriter -r ap-northeast-1 -f dev-app.json --apply --dry-run
適用
タグを適用
% tapewriter -r ap-northeast-1 -f dev-app.json --apply
実際使ってみて
複数のインスタンスのタグを一気に変更したいときにあってよかったなーと思いました。
でも1つのインスタンスのタグを一つだけ変える、とかだったらAWSコンソールからやったほうが早いです。
そもそも
みんなタグってどうやって管理しているんだろ。というかそもそも使ってないのか?ちょっと聞いてみたい。
sensuについてちょっとだけ発表した
気がづいたらGrafanaの2.0(beta)がリリースされてた
ざっと見た感じ、結構変わってますね。
- グラフのスナップショットがとれるらしい -> 障害時にスナップしてチャットに送るとかできるのかな
- シングルパネルが表示できる -> 最新のロードアベレージとかパッと見てわかるようになる
- バックエンドをブラウザ上から複数保存 -> グラフにするときにどのバックエンドを利用するか選択可能
- グラフ毎に表示させる時間帯を変更可能に(これまでは1ページで同じ時間を表示させてた)
- Grafanaがデーモンとして起動するようになってる
- 各パッケージでインストールできるようになってる
- アカウント管理ができる -> ダッシュボード見るのにログインを挟むことができる(なしにもできそう)
それ以外にもUIがわりかし変わってました(でも大幅な変更でないので違和感はない)
上記だと1と2の機能がずっと欲しかったんで、早速いろいろ試したいと思います。
コマンドで暗号方式を指定してSSL接続する
今更だけど、OpenSSL関連の脆弱性でお世話になったコマンドを備忘録としてめも。
POODLE、FREAKの時に使いました。
SSL3対応か確認する(POODLEの確認)
% openssl s_client -connect example.com:443 -ssl3
暗号化スイートでEXPORTが使われているか確認(FREAKの確認)
% openssl s_client -connect example.com:443 -cipher EXPORT
いずれも接続に失敗したら、脆弱性に対応済みということ。
SSLの接続テストを実施してくれるサイトで試してもいいんだけど、診断に時間かかったりするので、簡易にさくっと試すならコマンドで確認するのがオススメ。