[試行錯誤編]Ansible on cygwinを活用した、実用開発環境構築 ①普通にzshまで


方針:

cygwinの利用は最小限に

cygwinについて、よくわかっていないので、無理はしない。
例えば、node環境をcygwin側で構築するのは明らかに茨の道なのでパス。

とりあえず、cygwin使うことでzshとansibleが"普通に"動くというところで満足しておく。
nodeやjavaの環境はwindowsのものを使う。

  • "普通に"動かすためには、いくつか工夫が必要。
  • 付記:ansible 動かすためのpython環境は、cygwin側にある。

追記:Cygwin別パッケージBabunを導入して"普通に"動くようになった。以後、[Babunを使う方法]を推奨したい。


cygwin 1.7系を使用し、なるべくmacやlinuxと親しい環境を構築。

以前、こちらで構築した"Ansible on cygwin with zsh"を活用し、必要な設定を追加していく。すなわち、サーバ環境はansibleで管理する方針。

まずは、cygwinのバージョン確認。
$ uname -a
CYGWIN_NT-10.0-WOW DESKTOP-NIBB0OO 1.7.35(0.287/5/3) 2015-03-04 12:07 i686 Cygwin

1.7系は、ちょっと頑張れば十分に使えるものと期待し作業に着手。このあたりを参考させてもらい作業をすすめる。

(背景) windows環境を過度に信用せず、dropbox上で作業

cygwinにはいろいろ地雷が埋まっているっぽいが、windowsだって相当なもの。
ただし、nodeやjavaのバージョンその他の事情によって、
windows側ではトラブルった場合、windowsユーザーを作り直すという手がある。

環境でとらぶったらwindowsユーザー毎作りなおすつもりで、環境設定その他一式をdropboxに置いておく。

ansibleでのサーバ環境構築の試行錯誤過程もdropboxで管理

依存関係が少ないansibleは、クライアント側をきちんと管理しておけば、ひとまず、安心のはず(今後、検証)。

Cygwinを適切に起動させる(全画面でzsh、ちゃんとhistoryも効いて・・)

まずは、cygwin-ansible.batのインストール先(例、C:\cygwin)を確認し、cygwin-ansible.batで、cygwin環境に入る。

zshの設定

"apt-cyg install zsh"した直後のスタート地点は以下。
$ zsh --version
zsh 5.0.8 (i686-pc-cygwin)

適宜、 再入門などを参考させていただき修正していく。

oh-my-zshのインストール

Via oh-my-cygwin:

wget --no-check-certificate https://raw.github.com/haithembelhaj/oh-my-cygwin/master/oh-my-cygwin.sh -O - | sh

ターミナルエミュレータminttyのディフォルトのシェルをzshに

ansible-cygwinの場合、chshコマンドがなく、起動時に/etc/passwdを使っていない。
Cygwinインストールフォルダのbatファイル(例、C:\cygwin\cygwin-ansible.bat)における
ターミナルエミュレータminttyの起動方法をbashをzshに変更することで対処する。

変更前のcygwin-ansible.bat
@echo off
%~d0
set PATH=%SystemRoot%\system32
set cygdrive=%~d0
set cygdir=%~dp0

cd %~dp0\bin

set MAKE_MODE=unix
set CYGWIN=noacl nontsec nosmbntsec
set SHELL=/bin/bash
bash.exe -c "/usr/bin/mintty - &"
exit

変更後は、以下のとおり(--window maxで、起動時に全画面表示)。

cygwin-ansible.bat
@echo off
%~d0
set PATH=%SystemRoot%\system32
set cygdrive=%~d0
set cygdir=%~dp0

cd %~dp0\bin

set MAKE_MODE=unix
set CYGWIN=noacl nontsec nosmbntsec
set SHELL=/bin/zsh
zsh.exe -c "/usr/bin/mintty  --window max - &"
exit

[付記] telnet経由で使うとき等は、 以下のようにして、/etc/passwdを作成・変更する。

mkpasswd > /etc/passwd
nano /etc/passwd

汎用的な確認方法echo $0で、既存のシェルを確認。

echo $0
-zsh

historyを有効にする。

最近まで、cygwin上のzshはhistoryが使えないというありえない状態だったが、最近パッチがリリースされたため、
.zshrcに以下を追記することで、ヒストリーが有効になる。

HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000

ターミナルminttyをかっこ良くする

疲れてきたので、こちらに従い、速攻で、かっこ良くUTF-8日本語環境とさせていただく。

touch .minttyrcし、以下に設定

BoldAsFont=no
Transparency=high
Font=Inconsolata
FontIsBold=no
FontHeight=10
CursorColour=255,0,0
CursorType=block
Locale=ja_JP
Charset=UTF-8
BackspaceSendsBS=yes
RightClickAction=paste
ClicksTargetApp=no
CursorBlinks=yes
FontSmoothing=default
CopyOnSelect=yes
  • Transparency=grassの方がかっこよかった

再起動すると、フォントがちょっとかっこよくなり利便性も向上^^

今後の方針

クライアント側はJSで、サーバー側はJVM言語でいくので、以下の環境を整備し、cygwin上で普通に作業できるようにしていく。
- node周り (VisualStudioとも親和的に)
- java周り (IntelliJと親和的に)

rubyが必要になった時は、まずはcygwinで入れることになると思う。