octokitを使ってみた

会社の人にoctokit使うとGHEにログインしなくても色々できるよと教えてもらったので、試してみることにした。

octokitのインストール

$ gem install octokit
$ gem list octokit
*** LOCAL GEMS ***

octokit (4.3.0)

Gistを作成するテスト

アクセストークンをGithubで作成して、いい感じに権限を付与してあげる。gistの作成だけだったら、gistにチェックを入れるだけ。
下記がテストしたコード。

require 'octokit'

client = Octokit::Client.new access_token: 'Githubの自分のsettings作ったアクセストークン'
client.create_gist({:files => {'test.md' => {:content => 'octokitのテストだよ'}}})

これで実行してみたらこんな感じでgistが作られてた。これ確かに便利だ〜。
gist

これ使えばチームで使ってるあのツールのあの部分に適用できそう感があるなぁ〜なんて妄想できたのが良かった。
あとでやってみよ。

僕はただFabricで定数が使いたかっただけ

先日の記事に引き続き、リモートでシェルスクリプトを実行するのに、今回はFabricを使う話。

FabricについてはFabricをちょっと試してみた話からたまに複数台のサーバーにオペレーションをしたい時に使うようになった。サクッと使うのにとても便利だ。

今回はリモートサーバーにあるシェルスクリプトをFabricで実行する際に、引数を予めfabfileに書いておきたい場合の記述方法を書いておく。
単純にググってみてもなんだかenvの話ばかりであんまりそれっぽいのが出てこず、ちょいと悩んでしまったので。

例えば、下記のようなシェルスクリプトがあったとする。

#!/bin/bash

echo $1 $2

ここの$1と$2をfabfileのタスクで、下記のように書いても良い場合はそれで良いと思う。

def testshell():
  run("/bin/bash test.sh HOGE POYO")

ただ、HOGEとPOYOを別のタスクでも使いまわしたいなぁ〜ってことも無きにしもあらずだと思う。
そんな場合は、定数として切り出したいよねとは誰しもが考えると思う。
前述の通り、最初はenvのことばかりでちょっと違うやんって思ってたけど、公式サイトを見直して5回目くらいにちゃんと書かれていた。
結局はenvとおなじなのだけど、下記のように記述することができる。

VAR1=HOGE

def testshell():
  run("/bin/bash test.sh %s" % VAR1 )

また、複数書くときは、括弧で閉じてカンマ区切りで連続してかけばOKだった。

VAR1=HOGE
VAR2=POYO

def testshell():
  run("/bin/bash test.sh %s %s" % (VAR1, VAR2))

これであらかじめ設定しておいた定数を使い回しできるようになった。
また一つFabricが便利だと思った。

OSSにプルリクエストを出してマージしていただいた話

先日、下記OSSにプルリクエストを出して、マージしていただいた。

Mackerelはファイルシステムの容量監視が行えるのだけど、暫くは特定のファイルシステムを除外することができなかった。
Makcerelの仕様上、複数のファイルシステムがあった場合、最も使用率が高いシステムがアラートの対象となる。※設定画面で特定のファイルシステムのみを容量監視設定することなどは出来ない。
このため、なにかしらの理由で特定のファイルシステムが使用率100%だと、Mackerelで容量監視を設定した直後にすぐにアラートがあがってしまう。
これを回避するには、なにかしら別のスクリプトを用意するしかなかった。

ところが、今年の2/5に特定のファイルシステムを除外するパラメータが追加された。

このパラメータでは、例えばramディスクを追加して使用しているような場合やシステムで自動的にマウントされてしまって使用率が100%になってしまっているファイルシステムがあっても、除外することが出来る。

前述のpuppet-mackerel_agentはhieradataでパラメータが管理できるので大変便利で使わせていただいてたのだけど、このファイルシステムを除外するパラメータが含まれていなかった。
そこで折角なのでパラメータを追加するPRを出してみたら、マージしていただけたのだ。
これでこのmanifestを使うことで、除外したいファイルシステムもhieraで管理でき、別途プラグインをインストールすること無く一括で容量監視が出来るようになる。

いやー社外の人にPRをマージしてもらえるってすごい嬉しい。
メンテナーみたいなことが出来るようになるときっと楽しいだろうなと思うので、また色々PRチャンスがあれば出していきたい。