さて.Mavericks に Boxen で...

やってみた

boxen での実運用の前に,一度どんな感じになるのかを見てみたくて,と言うのが今回のお話.
まぁ実のところ,boxen に対する自分の理解,解釈が間違っていたりしやしないかが心配で,と言うのが一番だったり.する :P

この度,以下の 2 つのエントリーにはとても助けられました.

» sonots blog - Boxen を試してみたよ
» Boxenを利用したMacのセットアップ - iii ThreeTreesLight

単なる素人と言うだけでなく,何も知らないこのアポンが言うので間違いないかと(笑
ホンッとーに助けられました.感謝です.

でメモ開始.

やってみようと考えていること

"いきなり全部" は,今の自分にとって能力は然る事ながら性格的にもまた(w 心配なので範囲を絞って考えることに.

「新調した直後開いた時,居て欲しいヤツ」をそれなりにストイックに切り出してみる.;

  • インストール
  • 設定
    • スクロールの方向
      -> "ナチュラル" を無効にする.
    • 修飾キー
      -> Caps Lock キー を Control キーにする.
    • ファンクションキー
      -> デフォルトでマップされている全てのショートカットを無効にする.
    • ことえり
      -> ブランク(スペース),数値および記号の入力は常時半角とする.
    • シェル
      -> ログインシェルを zsh にする.

zsh と tmux は,boxen の homebrew で.

os 周りの操作,設定に関しては,defaults や plistbuddy 等のコマンドを並べたスクリプトを用意.
これを boxen の manifest から呼び出す形で行うことに.

...できるだろうか.不安になってきた(笑

以降,前回のエントリーの状態,boxen をマシンに導入した状態を前提に話を進めます.

puppetfile

まず作業するのは,Puppetfile というファイル.パスは /opt/boxen/repo/Puppetfile

インストールするアイテムをここで定義するとのこと.
勘違いしちゃいけないのは,ここに書けばインストールされる,と言う訳ではなく,あくまで "宣言" だけらしい.
「この子ん時は,ココ見るん」な感じの事をこのファイルで言っておく.

「んじゃぁ,実際に入れる手続きについてはどこでよ.」となるのですが,それは次で触れる,manifest でのお話.

ちょっと乱暴な例えでしょうが,調理レシピの "材料" が puppetfile で,"作り方" や "手順" を書いているのが manifest,そんなイメージ?

と言う事で,puppetfile はとりあえずでこんな感じに.;

57 行目までは何も手を加えておらずそのまま,こちらで手を加えたのは 59 行目以降の記述.
57 行目までは boxen 側が提供するデフォの内容で,使う側はその末尾へ追記というかたちで編集するのが基本のようです.

puppetfile のここで言う 57 行目までの記述と言うのは初めから既に記載されているもので,原則,個人事情でイジることを前提にはしていない,と思って良いんじゃないかしら*1

なので,一番最初にこのファイルを開いた状態で最終行以降に,ユーザーは "(それらとは別に)自分が欲しいモノ" を好きに書き足していくことになります.

なお vim については,boxen 自身にキチンと有るのですが,自分の場合,テキトーな理由*2ではありますが,「やっぱ macvim-kaoriya を使ったといた方が...」と思ったので @boxelly 氏がご用意いただいたモジュールを有り難く利用させていただくことにしました.感謝です.
puppet モジュールが boxen 内に無いアイテムを使いたい場合は,こんなオプションつけて :repo => "boxelly/puppet-macvim_kaoriya" ,見て欲しいモジュールがあるリポジトリのパスを教えてやると良いみたいです.

manifests

こちらは,manifest ファイル,と言うファイルで行います.
このファイルに,各自,やって欲しい処理に関するシナリオみたいなのを定義していくことになります.

manifest ファイルは,/opt/boxen/repo/modules/people/manifests ディレクトリの中に格納します.

"...します" と言うのは,この manifest ファイル,先の puppet ファイルのように予め用意されているものではなかったりします./opt/boxen/repo/modules/people/manifests は,一番最初の状態ですと空だと思います.ユーザーは /opt/boxen/repo/modules/people/manifests までディレクトリを潜り,ここに各自,自分の manifest ファイルを作成します.

manifest ファイルでの定義は,先の puppetfile で追記,列挙した自分の "使いたい材料" に対応します.puppet で列挙したアイテムそれぞれについて,manifest でどのようにインストール,設定してもらうか,を記載する,と言った感じでしょうか.

なお,manifest ファイルの名前.
この付け方にはちゃんとした御作法があって,"${github のユーザー名}.pp" と言うフォーマットに従ってファイルを作る必要があるとのこと.
github のユーザー名が "ばかもり" だったら,ファイルは "ばかもり.pp" となります.

ということでこちらも,見よう見まねの雰囲気でこんな感じになりました.
...つか,勉強しなくちゃ.

あ,ちなみに,ですが. include で定義する macvim の名前は,macvim_kaoriya です.macvim-kaoriya ではありません."macvim" と "kaoriya" を繋ぐのはアンダーバー _ です.これ間違ってチョットはまりました. ;

osx 周りの shellscript

冒頭でも触れました,os 周りの諸々なる事柄については,別途 shellscript 仕込み,それを走らせる方法を採ることにしてます.
同様の事をやってくれるらしい モジュール があることも知ったのですが,自分的には "もう少し" 感があったのと,そして,これは致し方ない事なのですが,やはり日本と言うリージョン故の特殊事情もあるわけでして,そんなこんなで,基本「インストールは boxen,それ以外の設定周りは shellscript」と言う摘み分けをすることに.

shellscript は,manifest ファイル上で火をつけてます.

また,github で管理している dot ファイルの適用と,ログインシェルの設定については,macvim なり zsh 周りの設定として,さらに実に有用な参照先にも出遭い,勉強がてら boxen 側でやっています.

特に助けられたのはコチラ.;

» akiomik/my-boxen - Github (via. github boxen使ってみてハマったところ - おみブロZ)
» boxenでログインシェルをzshにする - あんこの成長記録
» Mac - Boxen使わなくても許されるのは2012年までだよね - Qiita

できんだろか...www

実行!

/opt/boxen/repo/script/boxen

何となくうまく行ったみたいです.

もっとサラッと出来る事を期待してみたりしたのですが,やはりそれなりの時間はかかりますね.とは言え期待は期待であって,想像通りではあるので,こんなもんかなと思ってます.
これまでのハンドメイド(笑 でやっていた時の,色んな面での負荷を考えれば,全然コストは良い,やっぱ. 数回の会話に付き合って,最後の enter パチンとして席を離れる.しばらくやり過ごし,戻ってきたら出来上がってる,と.

あと,幾つかの設定を反映させるためにも,再起動はやっておいた方がいいかも.

でも,ほんと,皆,すごいなぁ.

さて,これから実際の導入に向けて,色々考えていきたいと思います.
こう言う営みは,ちょいと楽しいものだったりします,個人的に.

あと puppet と言うものについて,ちょっと知らなくてわ.
直近では,シンボリックリンクって作れるのかな,と言うところが気になっているところ.

と言う事で,おしまい.

*1:少なくとも自分はそう捉えている.

*2:今まで使ってきたのがソレだからというだけの理由なのですが...