雑記

インフラのことだったりプログラムのことだったりどうでもいいこと書いたり。要は雑記。

homebrewで管理しているパッケージのバージョンを切り替えて固定する

brew upgrade するとパッケージのバージョンがあがる 上がることはいいのですが、言語などはバージョン上がってほしくないのでバージョンを切り替えたい、あるいは固定したいときにやること。 切り替え 過去インストールしたことのあるバージョンでないと切…

AlpineLinuxについて

割りと自分のメモ代わり AlpineLinuxとは 超軽量ディストリビューション もともとは組み込みでよく使われていた? 最近はその軽量さからコンテナのイメージによく使われている 公式イメージも順次切り替わっているとのこと http://www.publickey1.jp/blog/16…

RDSのログをLambda(python3.6)経由でS3に保存する

目的はRDS Auroraのaudit.logをS3に保存するため。 audit.logについてはこちら。 dev.classmethod.jp どうせならLambdaでやりたくて、誰か作ってないかなと探したらありました。 github.com ただちょっと物足りなくて、具体的には 初回実行時はフラグを変え…

Ansibleのelasticsearch_pluginモジュールをElasticSearch5系で使う

Ansible2.0からモジュールが提供されている http://docs.ansible.com/ansible/elasticsearch_plugin_module.html が、ElasticSearch5系だと動かない。。 TASK [elasticsearch : install elasticsearch plugin] **************************** failed: [test] …

Bitbucket PipelinesでAmazonECRのDockerImageを使う

PipelinesではデフォルトではDockerHubを利用するのですが、別のレジストリサービスを使うこともできます。 というわけでECRに置いたイメージを使ってみました。 bitbucket-pipelines.ymlの設定 imageの設定を以下のようにします。 image: name: xxxxxxxxxxx…

ChatOpsとTerraformについて発表しました

それぞれの資料はこちら とりあえずはじめるChatOps from Masaki Ogawa AWSをテラフォーミングする会(Terraformハンズオン) from Masaki Ogawa 両方ともこれから始める人むけの資料です。 ChatOpsもTerraformも、うまく使いこなせれば生産性や効率が格…

CircleCIでAndroidのビルドが失敗する

いつも通りにビルドしたら以下のメッセージがでた。 Could not find com.android.support:appcompat-v7:22.2.1. Androidのsupportライブラリがみつからないとか。 対処 明示的にライブラリをアップデートするように指定 変更前 dependencies: override: - ec…

Terraformで最低限のAWS環境を作ってみた

タイトル通り。 Terraformってなに? インフラの構成をコード化するもの。 AWSに限っていうと、VPCやSecurityGroup、GatewayからEC2などなどをコード化できる。 (Terraform自体はAWSだけでなく、DigitalOceanやHerokuなど各種サービスに対応している) サーバ…

ImageMagick-lastをAmazonLinuxにインストールする

AmazonLinuxでインストールできるImageMagickは若干バージョンが古いです。 最新版をパッケージでインストールするにはremiから入れればいいのですが、普通にやると依存関係でエラーがでます。 エラー: パッケージ: ImageMagick-last-libs-6.9.1.2-1.el6.rem…

AWS SDK for GOを使ってRoute53のレコードを取得する

go

タイトル通り、サンプル作ってみました 環境 % go version go version go1.4.2 darwin/amd64 準備 パッケージの取得 % go get -u github.com/aws/aws-sdk-go/ % go get -u github.com/vaughan0/go-ini go-iniはaws-sdk-goのcredentialsで使ってるらしく、い…

go langことはじめ

go

ちょっと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:$GORO…

EC2のタグをCLIで管理するtapewriterというツールを作った

aws

タイトル通りですが、EC2のタグをCLIで管理したくて(=コード化したくて)作ってみました。 om732/tapewriter route53をDSLで管理するroadworkerという素晴らしいツールがあるのですが、おもいっきりその影響を受けています。 (や、ほんと素晴らしいツールで結…

sensuについてちょっとだけ発表した

資料は以下。 sensuのちょっと進んだ使い方 from Masaki Ogawa こういった発表は初めてだったんだけど、伝えたいこと全然言えなかった。 難しいものですね。 多分内容的にはニッチなものです。 最近では監視系はSaaSを利用するパターンが主流だと思うんだけ…

気がづいたらGrafanaの2.0(beta)がリリースされてた

ざっと見た感じ、結構変わってますね。 グラフのスナップショットがとれるらしい -> 障害時にスナップしてチャットに送るとかできるのかな シングルパネルが表示できる -> 最新のロードアベレージとかパッと見てわかるようになる バックエンドをブラウザ上か…

コマンドで暗号方式を指定してSSL接続する

今更だけど、OpenSSL関連の脆弱性でお世話になったコマンドを備忘録としてめも。 POODLE、FREAKの時に使いました。 SSL3対応か確認する(POODLEの確認) % openssl s_client -connect example.com:443 -ssl3 暗号化スイートでEXPORTが使われているか確認(FREAK…

nginxのluaモジュールを使ってみる

インストール インストールの方法としてopenrestyを使う方法と各ライブラリをひとつずつ用意して通常のnginxに組み込む形があった。 openrestyを使うことが強く推奨とのことですが、今回はnginxに自分で組み込む形にします。 (公式が配布していないnginxを使…

Rubyで特定のディレクトリ以下のファイルを一括requireする

タイトル通り、特定のディレクトリ以下にあるファイルを一括でrequireする方法 ディレクトリ構成 ├── libs │ ├── hoge.rb │ └── piyo.rb └── run.rb 上記のlibs以下を読み込んでみる。 コード hoge.rb module Test class Hoge def output() puts 'hoge' end …

Ansibleでリトライ処理をする

例えばAnsibleでTomcatを起動したとき、確認のためにhttpでアクセスして確認したいとします。 curlでローカルにアクセス、失敗したら数秒後に再度アクセスして確認という処理をしたかったのですが、 Ansibleでそんなのないよなーって思って探してみたらあり…

AMIにaws-sdk for rubyをインストールしようとしたらエラーがでた

タイトル通りなんだけど、その時の対応メモ。 そもそもの依存関係のパッケージインストール $ sudo yum install libxml2-devel $ sudo yum install libxslt-devel aws-sdkをインストール aws-sdkをインストール $ sudo gem i aws-sdk ただ、依存関係にあるパ…

OpsCenterをNginxでproxyする

はまったのでメモ 普通にproxyすると こんな設定で普通にproxyすると、各ノードの状態を取得することができません。 location / { proxy_pass http://localhost:8888; } /tcp/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/xhrstream?nocache=0.9999999999999999といっ…

bowerでgitプロトコルではなくhttpsでパッケージを取得する

デフォルトだとbowerを実行すると、git://でパッケージを取得しにいきます。 ただ、これだとネットワーク環境によってはうまく取得できない場合があります。 例えば、社外へアクセスするポートに制限がかかっているときなど(gitだとポート9418を利用する。自…

MEANスタック環境の構築

MEANスタック環境を構築してみる ちょっとした管理ツールを作る必要が出てきたので、どうせなら面白く作りたいなーと思い話題のMEANスタックで作ってみようかなーと。 今回はお試しで環境の構築まで。 前提環境 OSはCentOS6 Vagrant環境 ほぼまっさらな状態…

datastax-agent(OpsCenterのagent)を手動でインストールする

OpsCenterを利用するときに、Agentもインストールする必要があります。 基本的にはOpsCenterの管理画面からインストールすることになるのですが、rootアカウント、もしくはsudoersの権限を持ったアカウントを設定しないとインストールできないです。 セキュ…

Vagrantでvmをロールバックするプラグイン(saharaプラグイン)

http://qiita.com/succi0303/items/e06bca7db5a0c3de96af#3-1 こういうプラグインがほしかった、、、! これまでAnsibleのテストでup->destroy->up->destroyを繰り返していたのがこれで捗りますね! というかそもそもVagrantにプラグインがあるという認識が…

mailコマンドでsmtpサーバを指定する

ワンライナーで実行する場合は以下。 echo test | mail -s "test" -S "smtp=smtp://mail.example.com:25" hoge@example.com もしくは~/.mailrcを設定する。 - ~/.mailrc set smtp=smtp://mail.example.com:25 上記は認証情報一切なしの方法ですが、smtp-auth…

CentOS6にtmux1.9をユーザ領域にインストール

Cent6のyumでtmuxをインストールすると1.6系がインストールされるんですが、一部機能が使えなかったりするんで現時点で最新版の1.9系を入れてみます。 問題が そのままコンパイルするとmake時に以下のエラーがでます。 control.c: In function ‘control_call…

sensuとGrafanaを連携してグラフを自動生成してみる

sensuを使っていて何が不満だったかというと、グラフの生成なんですよね。 監視対象についてはsensu-clientsを設定して起動すれば終わりだったのに対し、グラフの生成だけは毎回ダッシュボードからぽちぽち設定する必要があったのです。これがちょーめんどく…

sensuのおれおれベストプラクティス

sensuを導入してみました。 で、その導入時に困ったのが、subscriptionsのグルーピング設計や設定ファイルの置き方なんですね。 ネットの情報を見ててもインストールしてみたーや他のサービスとの連携だったりがまとまっていて、実際にどのように設定してい…

sensuのkeepalive間隔

sensuは30秒毎にクライアント毎にkeepaliveする。 この30秒はハードコーディングされているため、設定できない(おそらく) /opt/sensu/embedded/lib/ruby/gems/2.0.0/gems/sensu-0.14.0/lib/sensu @timers[:master] << EM::PeriodicTimer.new(30) do 他のchec…

vagrantでマウントしているディレクトリの注意点

vagrant使うとローカル環境のディレクトリがマウントされているじゃないですか。 その領域をドキュメントルートとした場合、ファイルを更新してブラウザでリロードしても反映されなかったので、その対策めも。 原因 簡単に言うとキャッシュ。webサーバでなく…