トップ 最新 追記
RSS feed

ただのにっき


2015-05-28(木) [長年日記]

PuppetからAnsibleへ

(といっても「乗り換えノウハウ」みたいな有用な情報はない)

開発環境をさくっと作るために用意していたPuppet manifestsが、Debian Jessieのインストール時に動かなくて、読み返しても何やってるのか理解できない(笑)。やっぱりPuppetのDSLはメンテナンス性低いなぁと思い、かねてからAnsibleへの乗り換えを画策していたので実行することにした。AnsibleならWindows対応もあるので仕事でも有用だろう。

最初に(タイトルに惹かれて)「Ansibleを使い出す前に押さえておきたかったディレクトリ構成のベストプラクティス - 双六工場日誌」を読んだのは間違いで、ディレクトリ構成を考えるのはチュートリアルくらい済ましてからね。というか、これを読むとAnsibleにも暗部というか歪みがけっこうあって、Ansibleならきれいに書けてメンテナンス性が高いなんて思い込みは早くも崩れる。あと「Ansible チュートリアル | Ansible Tutorial in Japanese」はメンテされてないのでざっと参考にするくらい。

けっきょく公式ドキュメントがちゃんとしていて良いという各所にあるアドバイスのとおりだった。英語だけど。ドキュメントがしっかりしているのはPythonカルチャーかな。だいたい書き方がわかったら「All Modules — Ansible Documentation」をリファレンスしながら自分のPlaybooksを書けばよい。基本的にshellモジュールでざっくり手順を書いてから、冪等性を確保するように手を入れるというのがスムーズで良さそう。

こんへんで「role」はいわゆるホストの役割というよりはパッケージ単位に分割すべきだわかってきて、冒頭にあったような標準的なディレクトリ構成を作りはじめるんだけど、ベストプラクティスとされる構造はかなり大規模で複数人でメンテするような場合が対象なので、個人で使うにはオーバースペックだ。変数だってhostsファイルかトップレベルのPlaybookに書いちゃえばいい。というわけで、各ロールの下にはtasksとhandles、filesがある程度に。

あと、変数が定義されてることを前提に書かれているtaskが、変数定義がない場合に失敗するようにしたいなぁと思ってやり方を探すも、なんだかスマートな手法が見つからず悩んでいたら、error_on_undefined_varsという変数をTrueにしておくと勝手にチェックしてくれると教えてもらう。試してみたらちゃんと失敗してくれるのでこれでいいやと安心していたら、そもそもerror_on_undefined_varsはデフォルトでTrueだとわかってずっこけた。つまり最初に失敗するテストを書けってことですよ、とほほ。

Tags: ansible

2015-05-23(土) [長年日記]

Debian 8 JessieにするついでにVirtualBoxとVagrantを最新化

Debian Jessieが出たのはもうひと月も前なんだけど(気づいたのは連休明けてからという。しかもwheezyのときも同じこと言ってる)、今回もアップデートしてもいいけど、せっかくPuppetで同じ環境を簡単に作れるようにしてあるんだから、新規VMを作ってしまおう。式年遷宮ってヤツ?

で、職場の開発環境はVMware上にあるので、新しいイメージを作ってPuppet走らせたらすぐ移行できた……というのはちょっと嘘で、たぶんPuppetの非互換でいくつか走らないmanifestsがあったのだけど、そこは騙しだまし通らせた。ここまでは良し。

次は自宅、VirtualBox + Vagrantなんだけど、これがホストとのファイル共有でつまずいてなかなか進まず、こんな時期になってしまった。けっきょく、Debianがsystemdに移行した + VirtualBoxの(古い)Guest Additionsがsystemdに対応してないというコンボがいけないらしい。むー、VirtualBoxのアップデートしないとかー、やだなー(←ほんとバージョンアップが嫌い)。

というわけで、4.2系から4.3系にアップデートし、そしたらこれまで使ってたVagrantも4.3系に非対応だったので最新版(1.7.2)にしたらようやくファイル共有ができるようになった。なお、Vagrant Box作成にあたって今回参考にさせてもらったのはDebian8のVagrantのboxを作りたい。セットアップ用のスクリプトまであって大変助かった。

で、ぶじ自宅もJessieになったかというと、実はPuppetのmanifestsをメンテするのがイヤになったので、Ansibleに乗り換え中なのであった。しかも書きかけのPlaybookをpushし忘れたので自宅ではなにもできないという(笑)。ま、Puppetよりはだいぶわかりやすいのですぐに移行できると思う。


2015-05-20(水) [長年日記]

【ナビスコ】川崎 1-1 山形@等々力陸上競技場

[写真]アウェイ寄り2F席でまったり観戦

ひさびさの現地観戦。

最近、対戦相手が風間サッカー対策をちゃんとしてくるようになって、ぜんぜん勝てなくなってきたのでモチベーションだだ下がりなんだよね……。全員が正確なパスを出せるスキルがあるわけじゃないから密集隊形だと簡単にボールを奪えることがわかったら、そりゃ引いて守るよ。結果的に面白くないカウンターサッカーになっても二シーズン制なら勝ち星を優先するのは当然だ。もちろん、そういう相手に合わせて戦術を変えないのが風間スタイルで「正確なパスを出せるようになるまで練習する」が答えなんだろうけど、こっちが上手くなるまで相手が待っててくれるほどサッカーは甘くないしなぁ……。

とはいえさすがに山形相手には負けないだろうと思って来てみたら、ケンゴ・ヨシト・レナトがベンチスタートという飛車角金落ちみたいなスタメンで、そりゃいくらなんでもなめすぎだろうと思ったらやっぱり先制された。その後この3人を順番に投入して1点返したもののこの結果。うーん、やっぱまずいんじゃないかねぇ、この体制。


ところでメインスタンド前にLED看板を出して、バックスタンドの観客向けに(メイン側にある)新ショップ・フードのCMを流していたけど、ハーフタイム以外はメイン・バック間の移動を禁止しておきてそれはないだろーと思った*1。ハーフタイム中にメイン側まで移動して飲み食いしてたら、後半開始までに戻れないっつーの。

Tags: frontale

*1 ついでに「売切必須」の誤字に「うぷっ」となった。


トップ 最新 追記
RSS feed