ES DeskというElasticsearch検証用Webアプリを作った

このエントリはElastic stack (Elasticsearch) Advent Calendar 2017の12/8分です。 ES DeskというElasticsearch用のWebアプリを作成しました github.com まずはデモサイトをご覧ください。 http://es-desk.winebarrel.jp/ これは何? Elasticsearchのインデ…

utsusemiというプロキシサーバを書いた

github.com これは何? リクエストが来たとき、バックエンド①が404ならバックエンド②にアクセスして、バックエンド②が404ならバックエンド③にアクセスして…みたいなプロキシサーバ。 開発用の画像配信サーバに画像がなかったときに、本番にアクセスしにいく…

Rails / Active RecordでMySQLのgeometry型をサポートするライブラリを書いた

Armgという、ARをMySQLのgeometry型に対応させるためのライブラリを書きました。 github.com 使い方は以下の通り。 require 'active_record' require 'armg' ActiveRecord::Base.establish_connection(adapter: 'mysql2', database: 'my_db'); ActiveRecord:…

ath: a interactive Amazon Athena shell

Webコンソールからパーティションをぽちぽち追加するのに疲れたので、Athena用のシェルを書きました。 github.com 使い方は以下のような感じです。 $ export ATH_OUTPUT_LOCATION=s3://my-bucket $ ath default> show databases; default sampledb default> …

Ridgepole v0.7.0.beta2

Ridgepole v0.7.0.beta2をリリースしました。 開発中にコメントやフィードバックをしていただいた方にはありがとうございました。 github.com 主な変更点は以下の通りです。 Rails(ActiveRecord) 4.xのサポートを止めた 5.xと両方のフォーマットをサポートす…

fstaidというHAデーモンを作った

fstaidというHAデーモンを作りました。 github.com HeartbeatとかCorosyncとかPacemakerの代替を考えて作ったソフトウェアです。 なぜ作ったのか? それほど多くはないんですがたまに「先方の許可するIPアドレスは1つしかないから、フェイルオーバー時にEla…

pt-online-schema-change-fast-rebuild-constraints

pt-online-schema-change-fast-rebuild-constraintsというpt-oscのプラグインを書きました。 これは--alter-foreign-keys-method= rebuild_constraintsを高速にするプラグインです。 通常、FKで参照されている親テーブルにpt-oscを実行しようとすると*1 pt-o…

hakoのoneshotを使う

hakoで、バッチ系の一発処理用のoneshotコマンドを使ってみる。 hakoのバージョンは>= hako-0.20.2(要Ruby 2.3) $ ruby -v ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin15] $ gem install hako ... Fetching: hako-0.20.2.gem (100%) Success…

Wakerを動かす

github.com 認証まわりのセットアップ Google Developer Consoleで適当なプロジェクトを作って、OAuth 2.0 クライアント IDを発行する。 承認済みの JavaScript 生成元: http://localhost:5000 承認済みのリダイレクト URI: http://localhost:5000/auth/goog…

hakoがALBに対応したので使ってみた

github.com まず、ALB用のロールを作成(自動的には作成されないので要注意) こんな感じでAmazonEC2ContainerServiceRoleをアタッチしたecsServiceRoleを作成。 新しいタスク定義は以下の通り。 hello-hako.yml scheduler: type: ecs region: ap-northeast-…

Dockerでrpm/debを作成するサンプルプロジェクトを作ってみた

Docker for Macもstableになったし、Vagrantを立ち上げるのもめんどくさくなってきたので、Dockerでrpmとdebを作成するサンプルプロジェクトを作ってみた。 github.com rpm OSはCentOS6。 $ make docker:build:centos docker build -f Dockerfile.centos6 -t…

tempwork: テンポラリディレクトリでコマンドを実行するコマンド

テンポラリディレクトリを作って、その中で作業して、テンポラリディレクトリを消す…というスクリプトを年間に百回ぐらい書いている気がしたので、うまくラッピングしてくれるtempworkというコマンドを書きました。 github.com Usage: tempwork command... t…

reloadできるunicorn+railsのDockerイメージ

reloadできるunicorn+railsのDockerイメージを作れそうだったので作ってみた。 以下、登場人物。 Dockerfile FROM ubuntu:xenial MAINTAINER Genki Sugawara <sgwr_dts@yahoo.co.jp> USER root WORKDIR / RUN apt-get update RUN apt-get install -y ruby RUN apt-get install -y r</sgwr_dts@yahoo.co.jp>…

ECS+ALB+hakoでホットデプロイ

ホットデプロイが流行っているらしいので。 github.com hakoはECS用のデプロイツールで社内ではいろいろと使われています。 ALBと組み合わせて使うと、頑張っている感じのホットデプロイまわりがシンプルになってよいです。 まだ正式にはALBに対応していない…

DynamoDBとGoogleスプレッドシートを相互同期するやつ

confdのDynamoDBをGoogleスプレッドシートで管理したかったので作りました。 docs.google.com 使い方 まず、以下のようにDynamoDBのテーブルを作ります。(confdのと同じ) aws dynamodb create-table \ --region ap-northeast-1 --table-name hello \ --attr…

適当なECSデプロイスクリプト

JSONがYAMLでプリプロセス出来ると、なおうれし。 task.json { "containerDefinitions": [ { "volumesFrom": [], "memory": 300, "portMappings": [ { "hostPort": 0, "containerPort": 80, "protocol": "tcp" } ], "essential": true, "mountPoints": [ { "…

graceful restart可能なHAProxyのDockerイメージ

ふつうに作れそうだったので作ってみた。 以下、関連ファイル。 Dockerfile FROM ubuntu:latest MAINTAINER Genki Sugawara <sgwr_dts@yahoo.co.jp> RUN apt-get update RUN apt-get install -y haproxy ADD haproxy.cfg / ADD supervisor.sh / RUN chmod +x /supervisor.sh CMD ["</sgwr_dts@yahoo.co.jp>…

Docker+confdはなかなかよいと思う…

Dockerでいろいろやりたいことがあったので、いろいろ調べてました。 具体的には 設定ファイルのテンプレート化 設定の動的な管理と、変更に伴う継続的な設定の反映 要するに設定が変更されたら設定ファイルが更新されてミドルウェアがリロードされると でま…

MySQLのPASSWORD関数のRubyバインディング

一身上の都合によりMySQLのPASSWORD関数のRubyバインディングを作った。 github.com 実装はPASSWORD関数の実態であるmake_scrambled_password()を拡張ライブラリから呼び出しているだけです。 使い方は以下の通り。 require "mysql_make_scrambled_password"…

Cfdef: CloudFrontをコード化するやつ

github.com こんなん。 export AWS_ACCESS_KEY_ID='...' export AWS_SECRET_ACCESS_KEY='...' cfdef -e -o CFfile # export CloudFront vi CFfile cfdef -a --dry-run cfdef -a # apply `CFfile` require 'other/cffile' distribution "EXAMPLEID" do aliase…

Repol: ECRのレポジトリをコード化するやつ

github.com こんなん。 export AWS_ACCESS_KEY_ID='...' export AWS_SECRET_ACCESS_KEY='...' repol -e -o Repolfile # export Repository Policy vi Repolfile repol -a --dry-run repol -a # apply `Repolfile` Help require 'other/repolfile' repository…

CloudWatch Logs用 cat / tailf

作った github.com $ cat hello | cwlogs-cat -g my-group -s my-stream github.com $ cwlogs-tailf -g my-group -s my-stream 2016-05-13T01:51:18+09:00 foo 2016-05-13T01:51:18+09:00 bar 2016-05-13T01:51:19+09:00 zoo ... $ cwlogs-tailf -g my-group…

mappru: VPC Route Tableをgitで管理するやつ

勢いで実装できそうだったので、実装してみました。 github.com mappru -e -o RouteTableでVPC Route Tableをエクスポートして、mappru -aでRouteTableファイルを適用します。ファイルに書いてないVPC・Route Tableは管理対象外となります。 あと、重要な点…

bukelatta: S3のバケットポリシーをgitで管理するやつ

連休なのにこんなことをやっているのもアレなんですが「S3のバケットポリシーをコピペして目視確認」という作業を見てカッとなって作りました。terraformを使った方が手っ取り早かったかも… https://github.com/winebarrel/bukelatta bukelatta -e -o Policy…

Kumogata2

連休に入って酒量が増え体重も増え、昼夜わからない生活をし、ridgepoleのRails5対応はFが減らず、必要に駆られて使い始めたElasticBeanstalkの闇が見え始めた現実から目をそらすため、以前から懸案だったCloudFormation用ツールKumogataの次世代版を作って…

TinyMysql

TinyMysqlというRubyのライブラリ的何かを作ってみました。 tiny_mysql.rb · GitHub gist.github.com これはなに? MySQLのCLIを使ったRubyのMySQLライブラリです。 普通のMySQLのライブラリと違ってCLIさえインストールされていればどこでも使えます。 なん…

Roadworker v0.5.6.beta7とIAMキーをPublicにした件

トレタのブログのおかげでちょっとだけスターが増えたRoadworkerを更新し、v0.5.6.beta7をリリースしました。 ヘルスチェックの新しい属性regionsをちゃんとサポートするようにしました。 github.com で、ですね。ついでにTravis CIで使っているIAMキーをパ…

Hashのエントリの順序を操作するhash_order_helperを作った

Hashのエントリの順序を破壊的に更新したいということが希によくあるので、エントリの順序をArrayのように操作できるメソッドを追加するhash_order_helperを作った。 github.com 以下のような感じで、Hashのエントリの順序を操作できる。 require 'hash_orde…

シンプルなERBのヘルパー ERBh を作った

シンプルなERBのヘルパー ERBh を作った…というか、先日作ったrspec-match_fuzzyから分離・独立させた。 github.com 以下のように、1メソッドで変数の定義とEBBの評価が行える。 require 'erbh' include ERBh erbh('<%= @foo %>, <%= @bar %>', foo: 100, ba…

モダンな書式のHash#inspectを作った

なんだかんだで必要になるわりにそれっぽいgemが見つからないので、モダンな書式のHash#inspect — hash_modern_inspectを作った。 github.com 使い方は以下の通り。 hash = { foo: ['FOO', {baz: 100}], bar: {zoo: 200}, "hoge"=>"piyo" } hash.modern_insp…