ansibleはじめてみた

Chef-Soloをいじくりまわってたのだけれど、なんとも仰々しいのと、ゴテゴテしてるのにちょっと閉口してしまった。
仕組み的には悪いと思えないけど、僕はもうちょっとお気軽にクックブックを書きたいんだ。

沙耶です。

というわけでもっとお手軽お気楽な方法を求めて旅に出る。まあ旅もクソもChefだめだったらやろうと思ってたのがAnsibleなんだけどさw

puppetってのも考えたのだけど、まあpuppetちょっと古いしな。
最近はやりのAnsibleに乗っかってみるべと。※ミーハー系インフラエンジニア

とりあえず、概要だけざっくり押さえる。main.yml書いておけばいいのか。というかなんでも噛んでもymlである。YAMLなんて最近読んでもいないし書いてもいないが、まあXML書くよりは楽だよなぁ。と思いなおして久々に書く。

まあテキストエディタでがしがしわっしゃわっしゃ書くには悪くないんだよね、YAML。

YAMLってなんだよ!とか言う人はもう回れ右して帰れよwwwwwww
えーっとな、まず世の中のデータってのは構造体なんだよ。トップレベルがあって、その下にセカンドレベルがあって、サードレベルがあって。って感じのツリー構造体なんだ。

たとえばさ、Cでstructureとか使っただろ。え? 使ってない? 死ねば?

めんどくさいなおい。

ええとだな。たとえばこんなデータがあったとするわ。
八百屋、取り扱ってるのは果物、野菜。リンゴが100円でミカンが50円、それぞれ在庫は20個と14個。野菜はレタス200円が30個とキャベツが90円で100個。時々八百屋のおかあちゃんが漬けてる梅干しが店先に並ぶこともあるが今日はない。並んだときは150円で売ってる。
隣の肉屋は牛ロース150円/gで8kg在庫、豚リブロース90円/gで7kg在庫、鳥もも肉は38円/gで10kg。

ほれ。とりあえず商店街という名前のデータ構造作ってくれ。

商店街
  +-----八百屋
  +-----肉屋

次にどうなる? 八百屋の下に野菜、果物、漬物。肉屋の下に牛、豚、鶏。だろ。
んでそのしたにリンゴだのキャベツだのが並び、それぞれのアイテムの下に価格と在庫。

ここまではわかるよな。じゃあ、肉屋と八百屋で共通して使える構造ってなんだ?

お店構造体
名前 : 文字列
住所 : 文字列
商品カテゴリ : 商品カテゴリ構造体配列

商品カテゴリ構造体
名前 : 文字列
商品 : 商品構造体配列

商品構造体
名前 : 文字列
単価 : 数値
販売単位 : 数値
在庫 : 数値

これが構造体ってやつだ。端的に言えば、複数のデータの塊を集めてきて、一つの型として定義すること、だ。オブジェクト脳の人ならプロパティって言えばいいのかね。DB脳な連中にはリレーションシップって言えばいいんだよ。

じゃあこれをデータとして扱うときに、例えばテキストとしてデータを出力したいわけだが、CSVとかで出そうとするとえらい目に合うわけだ。なんで、ってCSVにどうやってリレーションを記述するんだよ。って話になるからだ。そこで、XMLだのYAMLだのが出てくる。まあXMLはマークアップランゲージだからちょっと違うっていえばちょっと違うんだけど、構造体の記述って意味ではとても有用だ。
ちょっとXMLで一部これを書く。

<?xml version="1.0">
<商店街 名前=どこかの町の商店街>
 <お店 名前=ブタゴリラの実家>八百屋</お店>
   <カテゴリ>果物</カテゴリ>
     <商品 価格=100 在庫=20>リンゴ</商品>
     <商品 価格=50 在庫=14>みかん</商品>
   </カテゴリ>
 </お店>
</商店街>

それぞれの要素が入れ子の形で記述されているのがわかるかと思う。プロパティは要素としてマークアップで定義される。
これを読み取り、このXMLに書かれた通りの構造体を作って変数にぶち込むことを、XMLのパースとか言う。まあパースって分解までのことなんだけど、どうせ最終的にぶち込むからあんまり分けて考えてないな、僕は。まあXMLなんて久しく書いてないからこれがきちんとパースされるのかはしったこっちゃないんだけどw

さて、XMLってのは要するに我々にとってみればそういう構造体をテキストで記述する方法、なわけだ。YAMLもだいたいは似たようなもんなんだけど、XMLが汎用性を高めるためにとてもややこしい記述式を取っているのに対して、YAMLは構造体記述に特化している。
その読みやすさは、XMLの比ではない。

なんせ、上のをYAMLで書くとこうなる。

- 商店街:
  - 名前: どこかの町の商店
    - お店:
      - 八百屋
      - 名前: ブタゴリラの実家
      - カテゴリ:
        - 果物
        - 商品:
          - リンゴ:
            - 価格: 100
            - 在庫: 20
          - みかん:
            - 価格: 50
            - 在庫: 14

XMLに比べてぐっと見やすいとは思わないか? 行数は長いけどなw
まあ、こんなの適当に考えただけの構造だからこんな構造作るアホは居ないけどさw

ま、要するにXMLより書きやすいし見やすいわけだよ。

そしてインフラ屋さんのお仕事としては、”インフラをコードにする”というのがとても大事。コードにするためにはロジックと実数値を分離するのがもっともっと大事。なぜか、っていうとロジックは使いまわせるけど、実数値は使いまわせないのだ。

そういう実数値の記録として、DBやらを使うんだけど、ぶっちゃけインフラの定義ごときでそんなDBとか使いたくない。めんどくさいし、そんなに頻繁に書き換えるわけでもないし、検索や集計が必要なわけでもない。そういう、単純な外部出しデータにするときに、構造体が記述できる、ってのはとても便利なんだ。これができないと使いまわすロジック部分に固定的な記述を含まなければならなくなる。これが、汎用化できない、という話になってしまい、ロジックの使いまわしの都度ロジックに修正を加えることになる。

これはとても危険だしめんどくさい。なぜなら、ロジックに手を入れるといちいちそのあとテストしないといけないからだ。まあもちろん外部出ししたデータの変更でもテストはするけど、”ロジックが間違っている”ことをターゲットにするテストは行わない。だってロジックのテストはもう終わっているからだ。

これがどれだけ仕事を軽くするか、というのは直感的にわかる人とまったく理解できない人がいたりするんだが、言ってしまえば一つのプロジェクトが過去のプロジェクトのコピペで済むか、済まないかレベルの話である。

まあそんな感じでロジックと変数を分離して、変数だけちょちょいといじると任意のサーバを作ってくれるっつーロジックを”作るための”枠組み、それがAnsibleだとかChefだとかだ。

そういう枠組みのことをフレームワーク、という。

勘違いされても困るのだが、ansibleだとかChefだとか使えば誰でも簡単にお手軽に確実にサーバが作れる。わけじゃあない。
誰でも簡単にお手軽に確実にサーバが作れるように、そのための仕掛けを、AnsibleだとかChefだとかを使ってプログラミングしておくんだ。そのためのレシピ集がChefだとクックブック、なんて言われているし、Ansibleだとプレイブック、なんて呼ぶ。

さて。Ansibleを始めたとか言いながらほとんどAnsibleの話をしていないが…wwwww

触ってみた感じ、結構いいですねこれ。日本語のドキュメントとかがほとんどないけど、Qiitaがいろいろ書いてくれてるし、英文ドキュメントも体系的で読みやすいし、モジュールは豊富だし、j2テンプレートは結構パワフルだし、includeしまくるのが基本好きな沙耶さん的にはかなりいい感じ。自分のizmに合うかどうかってのは結構重要です。

それにモジュールが思ってたよりずっと豊富だ。Version2から、って要素も結構あるし、1.9->2.0で結構コケるって話もあるみたいだけど、それでも魅力的なプロパティが多いな。
コントロール範囲もかなり広いし、オーケストレーションみたいな芸当もできそう。

構造はシンプル、モジュールでタスクを拡張して、最終的に必要ならばcommand:つかえ。
そのうちモジュール化するから! みたいなノリだねこれwwww
ガスガススクリプト書いて手順をコード化するのが大好きな沙耶的にはこれはいいw
main.ymlが無駄にながくなるけど、それもincludeすれば見通しよくなるし、tags付けとけば部分実行も可能、とw

結構気に入ってしまったので、バカみたいに導入自体がめんどくさいChefはごみ箱に放り込まれましたwwwwww

 

【画像】うどん自販機の内部wwwwwwww

187沿い??? …岩徳線沿いとかのほうならむかーしあったの知ってるけど…187沿いって清流線沿いだよなぁ…あったっけ?

と思って住所見る。なwwwwwwぐwwwwwwわwwwwwww

そこ岩国じゃねぇよwwwwwwwwwwwwwwwwwwww少なくとも俺がいたときは岩国の領土じゃなかったよwwwwwwwwwwwwwwwwwwwwwww

南桑て。玖珂郡美川町じゃねぇか!!!wwww 行く用事すらねぇよ! 錦町に遊びに行くときに通過するだけだよ!!!wwww
まだこんなとこあったのかぁ。あ、錦川清流線はお勧めですよ。どの駅降りてもクソ田舎を体感できます。飯田線と似たようなものです。アレよりは人が住んでいるけど。

むかーしはねぇ。蛍見に行くのに錦川の上流方面まで行ったり、アユ食いに行ったり、泳ぎに行ったりしてた場所ですね。あと流しそうめんとか。寂地峡とかねー。いまじゃあんなとこまで岩国だってんだからわけわかんないよね。まあ豊田市も大概なんだけどね。旭村とか小原とかどこがどうなったら豊田市なのかと言いたくなるしね。平成の大合併ってしみじみすごかったのだなぁと。

ま、それはともかく、どう考えても夏のイベントしかないなwwwww冬? 行きたくないよあんなとこwwwwww

とりあえず久しぶりに僕は山賊焼きが食べたいw
GWまでにマーチ終わったら大型連休にしてどっか遊びに行きたいなぁ。

 

初めてコメダ珈琲店に来たったwww(※画像あり)

バカが調子に乗って二品も頼みやがったwwwwwwwばーかばーかwwwwwwww
※基本コメダの食べ物はでかいです

カツサンドかエビカツサンドお勧め。でかいけどw
つかなんで単品の値段みていながら警戒しねぇんだよwwwwwww

まああれだ、店員に言えばお持ち帰りさせてくれるから調子に乗った時は思い出せwwwwww

 

【朗報】夏目友人帳、5期が放送決定wwwwwwwwwwwww

おっとマジか。ようやく原作たまったのかwwwwwwww
とりあえず秋は見るものが確定した感。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です