Skip to content

複数バージョンの Ansible を使う

複数バージョンの Ansible を使う published on 複数バージョンの Ansible を使う へのコメントはまだありません

複数の Ansible を使いたい理由

本番環境のプロビジョニングやら開発環境構築で Ansible を使っている人は多いと思う。Ansible はバージョンがどんどん新しくなっていくので、複数のプロジェクトをやっていると、プロジェクト毎に必要とされる Ansible のバージョンが異なって困る、という事が良くある。

VM を使って、隔離された環境を使えば?という意見もあるけど、開発環境構築では、

  • ローカルマシンの Ansible を使用して
  • (Vagrant 等で構築した)VM 上の環境を構築

というケースが結構あるので、Ansible のバージョン毎に異なる VM を使うというのはちょっとやりづらい。

実現方法の案

大抵のプログラム言語では、複数のバージョンを使い分ける仕組みが整っているけど、Ansible にはそういうのが無いようなので、ある程度自分でやる必要がある。

Ansible のインストール方法のページを見ると、色んな方法が用意されている。

複数バージョンを使い分ける方法としては、以下が考えられそう。

  • 複数バージョンのソースを持ってきて、ソースから実行する(Running From Source
  • pyenv 等で複数の Python 環境を用意して、 pip でバージョン指定で Ansible をインストールする

今回は、前者の方法でやった。その途中で後者の方法も思いついたけど、実際に試してはいない。pip でのインストールは、ドキュメントでは Latest Releases Via Pip という見出しだけど、バージョン指定も出来るはず。

Continue reading 複数バージョンの Ansible を使う

API

色んなWebサービスのAPIを使ってみて

色んなWebサービスのAPIを使ってみて published on 色んなWebサービスのAPIを使ってみて へのコメントはまだありません

背景: 沢山のWebサービスのAPIを使ってる

色んなサービスのデータを集めて、横串検索出来るようにしてる

GitHub (issue, PR のコメント, wiki ページ), Slack, Google Drive etc. のデータをAPI経由で集めてきて、横串検索出来るようなサービスを作ってる。

こちら → Commet

経緯はこんな感じ。

  • こんなサービスあったら便利かも。作ってみよう。
  • とりあえず出来た。うん。そこそこ便利。
  • デザインとかできてないけど、ブログで軽く告知してみよう。→ 特に反応無し。
  • まぁ、誰も使ってくれなくても、最悪自分で使ってるし、ちょこちょこ改善して、適当なタイミングでもう一度宣伝しよう
  • 自分で使いつつ、色々修正(長い時間が経過・・・)
  • いい加減、デザインとか綺麗にして、一般公開しよう。← イマココ

ということで、もう少し体裁を整えてから、ちょっと宣伝とかしてみようと思ってる。

が、今回の本題は、技術的な話。

当然、色んなAPIを使ってる

色んなサービスからデータを集めるので、当然、色んな API を使わなければならない。現在、以下のサービスのAPIを使って、データを取ってきている。

  • GitHub (issue, PR, wiki)
  • Slack
  • Bitbucket (issue, wiki)
  • ChatWork
  • Backlog (issue, PR, file)
  • Google (Drive, Gmail)
  • Facebook (グループ)

(その他、webhook 経由で Redmine にも対応しているけど、詳細は省略。)

これだけ色々使ってみると、それぞれの API の癖や、長所・短所などが見えてくるので、そういう事について書いてみる。

Continue reading 色んなWebサービスのAPIを使ってみて

リモート勤務に使えそうなツール10選(2016年版)

リモート勤務に使えそうなツール10選(2016年版) published on リモート勤務に使えそうなツール10選(2016年版) への3件のコメント

以前、リモート勤務に使えそうなツール10選という記事を書いたところ、そこそこ「いいね」やらブクマやらをもらったが、あれから2年近く経って内容が古くなっているので、2016年版を書くことにした。

選定方針は以下の通り。

  • Dropbox や Skype のような、誰でも知っている・使っているものは除外
  • リモートワークに特化している訳でもないものも含む
  • 一般的にどうこうより、自分のワークスタイル・開発スタイルに向いているもの・必要な物を選ぶ

背景

個人的な話

2014年時点では、リモートワークをメインになりつつあったものの、まだやり始めた段階という状況だったが、2016年5月現在は、完全にリモートワークだけの生活になった。1ヶ月に1〜2回程度は対面で打ち合わせとかもするけど、それ以外は、気分転換でたまにカフェに行くのを除くと、全部自宅からの作業となった。

仕事の内容は、ある会社の開発のお手伝いが半分位、残りの半分を受託開発やら自分の作りたいものの開発とかをやっている。その「残りの半分」の仕事は、他のフリーの開発者とかと一緒にチームを組んで進めているが、他の開発者も全てリモート勤務でやっている。

世間的な話

2014年の記事で予想した通り(?)、その後、リモート勤務を認める会社がIT関連に限らず増えてきて、色んなノウハウが世の中に出てきたと思う。ツールに関しても色々情報が出てきたので、本記事もそうしたものの1つと思ってもらえればと。

では本題。

Continue reading リモート勤務に使えそうなツール10選(2016年版)

Vagrant + Ansible で簡単に開発環境を provision する

Vagrant + Ansible で簡単に開発環境を provision する published on Vagrant + Ansible で簡単に開発環境を provision する へのコメントはまだありません

開発環境構築自動化の動機

ちっちゃなwebシステムを受託でやることもちょこちょこあるんだけど、以下のような理由から、開発環境の自動化をすることにした。

  • 使うフレームワークは大体同じ(CakePHP, Ruby on Rails, Play! framework のいずれか)なのに、毎回同じような環境構築をやるのも面倒くさい
  • 経験の浅いメンバーは、環境構築で詰まりがちなので、その辺は飛ばしていきなり実装に入れるようにしたい

使う技術

最近、メインでやっているプロジェクトで Ansible を使ってデプロイとかをするようにして、ある程度慣れてきたので、今回は Ansible を使うことにした。

開発環境用の仮想環境(VM)作成は、みんな大好き vagrant を使う。

Continue reading Vagrant + Ansible で簡単に開発環境を provision する

Vagrant + Chef Solo + Berkshelfで開発環境作成

Vagrant + Chef Solo + Berkshelfで開発環境作成 published on Vagrant + Chef Solo + Berkshelfで開発環境作成 へのコメントはまだありません

Vagrant + Chef (Solo)って流行ってるんで、使ってみることにしたよ。

概要

やりたいこと

まずは今回目指すことを書いておく。

とあるWeb系のシステムの開発環境を、数名の開発者で共有したい。具体的には、VirtualBox上のVMにCentOS、JDK、nginx, Play! framework、PostgreSQLとかを自動でインストールして環境を作りたい。

Chef Serverは使わず、ChefのレシピはGitHub上に登録する。コミュニティが作成したcookbookも使えるものは使う。

あと、knife-soloを使用。伊藤直也さんの入門Chef Solo – Infrastructure as Codeで紹介されていて初めて知ったんだけど、Chef Soloを使う場合には、knife soloを使うと色々便利。

本記事で扱わないこと

  • Chefのレシピの書き方。これはサイトなり書籍で色々情報があるので、わざわざ書く必要はないと判断。
  • Vagrantの使い方。理由は上に同じ。

基本情報

知ってると思うけど簡単に説明。

Vagrant → VirtualBoxとかVMware上のVMを簡単に作れるツール。

Chef → 構成管理ツール、みたいなもん。事前に定義した設定ファイルに従って、サーバーの環境を構築してくれる。

上の2つに比べると、Berkshelf は比較的知名度が低いかもしれない。という自分も、今回はじめて知ったんだけど・・・

Berkshelf が何をするものかというと、Chefのcookbookを管理してくれるもの。まぁそれだけだと分かりづらいと思うので、追々実例を見ながら説明、と。

環境情報

MacBook Pro上で作業してます。

  • Vagrant 1.6.2
  • VirtualBox 4.3.12
  • Chef と Berkshelf は Chef DK (Chef Development Kit)を使って入れた。バージョンはChef 11.14.0.alpha.1とBerkshelf 3.0
  • knife-solo 0.4.2
  • VMではCentOSを動かす。

世の中のBerkshelf関連の情報は2.0以前のものが多いみたいだけど、Berkshelf 3.0だといろいろ変わっている事が多いので注意。移行ガイドみたいなのはこちら

Continue reading Vagrant + Chef Solo + Berkshelfで開発環境作成

リモート勤務に使えそうなツール10選(2014/11更新)

リモート勤務に使えそうなツール10選(2014/11更新) published on リモート勤務に使えそうなツール10選(2014/11更新) への1件のコメント

2016年版はこちら↓

リモート勤務に使えそうなツール10選(2016年版) – K blog

今年はリモートワークが来る、はず

プログラマーなら誰もが一度は

「自宅ならもっと集中して作業できるのに」

と考えた事があるはず。今までは願望に過ぎなかったのが、最近では、結構実現している会社が増えているし、「強いチームはオフィスを捨てる: 37シグナルズが考える「働き方革命」」なんて本も出たし、安倍政権もテレワーク推進を謳っていて、個人的には

「今年はリモートワーク(テレワーク、遠隔勤務)が本格的に来る!」

って気がしている。

自分自身、最近は自宅で仕事をさせてもらうことも増えてきてるんだけど、インフラ・ツールの発達により、それほど不便も感じていない。

今回は、そんなリモートワークをするのに必要、あるいはあると便利なツールを10個紹介する。実際の所、10個のうちの大半はリモートワークじゃなくても使える(or使っている)ものなんだけど、リモートワークの場合には特に便利・重要なので、ここで紹介する。

Continue reading リモート勤務に使えそうなツール10選(2014/11更新)

Windows (MinGW, MSYS, Python)で快適な開発環境を作る

Windows (MinGW, MSYS, Python)で快適な開発環境を作る published on Windows (MinGW, MSYS, Python)で快適な開発環境を作る へのコメントはまだありません

動機

Windowsでwebアプリとかの開発作業をすることも結構あるんだけど、ツール類はUnix系OKを前提としているものも結構多く、Windowsだと結構不便なことも多い。

最近ではGitを使わない開発というのはあり得ないので、通常はmsysGit (Git for Windows)を入れることと思う。msysGit自体は、Windows上でbashとGitが普通に使えるので便利だが、Git Bashの中でそれ以上の事をやろうと思うと、途端に面倒になる。

自分の例だと、Pythonで動く自動デプロイツールであるFabricを使おうと思ったが、色々と不便な事が発生した。

問題点

fabコマンドが別ウィンドウで立ち上がる

最初は素直に以下の手順で環境を作った。

これで、とりあえずFabricは動くようになるんだけど、fabコマンドを実行すると、Windowsのコマンドプロンプトウィンドウが新たに立ち上がって、そこでFabricが実行され、実行されるとウィンドウが閉じる、という面倒な挙動になった。

とりあえず、

fab > log.txt 2>&1

とか

fab | tee /dev/null

で、出力は確認できるんだけど、やっぱり面倒。

rsync_project が実行出来ない

Fabricにはrsync_projectというタスクがある。これはrsyncコマンドのラッパーなので、rsyncコマンドが使えないといけない。

ちなみに、Windowsでrsyncを使うには、cwRsyncやMSYS、Cygwinなどを使うという方法がある。

Pageantを使いたい

Windowsで開発してる人は、(Cygwin派を除くと)PuTTYを使っている人が殆どだと思う。その場合、当然、ssh-agentの代わりとしてPageantを使っているはずだが、最初からWindowsに対応しているFileZillaWinSCPなどのツール以外だと、Pageantと連携するのは結構面倒。

Continue reading Windows (MinGW, MSYS, Python)で快適な開発環境を作る

git show

git show published on git show へのコメントはまだありません

検索するとマニュアルにそれっぽい記述が出てくる。以下、引用。

$ git show v2.6.15:a.txt    # a.txt の過去のバージョンを表示する

いや、そもそもタグ付けしてない限りバージョン番号なんて付いてないんじゃないの?

で、検索して別のページを見つける(→ gitで過去のバージョンを取り出す)。やっぱ、git showでよさそうだけど、バージョン番号はhash値でいいのかな?とかやってみたけどうまく行かない。

[kazu@localhost build]$ git show c272cbcd34f34b90bca786e4bffae0889b635a68:LiftProject.scala
fatal: ambiguous argument 'c272cbcd34f34b90bca786e4bffae0889b635a68:LiftProject.
Use '--' to separate paths from revisions

 結論から言うと、git show <リビジョン>:<ファイル名> でOKなんだけど、ファイル名の所は.gitがあるディレクトリからの相対パスを指定しないと行けないみたい。

[kazu@localhost build]$ cd ../../
[kazu@localhost build]$ git show c272cbcd34f34b90bca786e4bffae0889b635a68:project/build/LiftProject.scala

でOKだった。

m2eclipse

m2eclipse published on m2eclipse へのコメントはまだありません

mavenって何か良く分かってなかったけど、最近sbtを触ってるうちに、mavenが何をするものかは何となく分かってきた。とはいえ、今の所必要ないし特に使ってなかったんだけど、PARTAKEソースを見てるうちに少し動かしたくなって、そしたらmavenが必須みたいなので、仕方なく使う事にした。

■必要なもの

  • Eclipse
  • m2eclipse
  • mavenは別途入れる必要なし

Continue reading m2eclipse

Bazaar + Eclipse動いた

Bazaar + Eclipse動いた published on Bazaar + Eclipse動いた へのコメントはまだありません

今まで何回か(1, 2, 3, 4)Eclipse+Bazaarのエントリを書いたけど、ついに動いた(というかしばらく放置してたけど)。

■環境

以下の物は既にインストールされているという前提

  • Eclipse 3.5 (他のバージョンでも多分OK)
  • BzrEclipse (最新のでOKか)
  • Bazaar 2.2.1 (2.2系ならOKかと)

■bzr-xmloutput 0.8.7のインストール

前回書いた通り、bzr-xmloutputはレポジトリから取ってくる必要がある。

bzr branch lp:bzr-xmloutput

あとは、それを上書きする。C:Program Files (x86)Bazaarpluginsxmloutput あたり。

ここまでで、とりあえずローカルのBazaarレポジトリを使う事は出来るようになる。

Continue reading Bazaar + Eclipse動いた