インフラエンジニアといえば構成管理に悩まされ、
実際Chefとかansibleありますが、
「どれを使ったほうがいいのか」など
自分の経験によるメリット、デメリットを簡単にブログしていこうと思います。
最近では!
インフラエンジニア= Infrastructure as Code!
と言われてます。つまりインフラエンジニアはサーバ構築以外にも
自動化するコードを作れ!ということですね。
自動化することで、サーバで必要なミドルウェアは全て管理でき、
設定ファイルも共通化できるのでミスも減ります。
シェルスクリプトなんか使うの辞めましょう。
■初めて構成管理ツールを勉強したお話
ガチで勉強し始めたのは去年の2月ごろです。
ちょうど新しい職場(現在)に転職してから
「Chef-Serverやるよ!移行もやるよ!」
ってなってからです。その前までは「ふーん」レベルでした。
以下に頑張ってるブログ書いています。
https://blog.adachin.me/?cat=44
・Chef-Serverのいいところは?
大規模なサーバ運営の場合だとかなり役に立つと思います。
Chef-ServerだとWebuiもあって、このnodeにはこんなの入ってるのか〜
など確認できます。もちろんknifeコマンドでも。レシピを可視化しやすいのはいいですね。
それにセキュアだし(いろいろと鍵の設定でやらある)
ChefはRubyなのでプログラム書いてる人は一瞬で馴染めるはずです。
Chefは「料理の準備します、レシピ見ます、野菜取ります、切ります、炒めます」
完全に料理人だ。
・Web UI

・Chef-Serverの悪いところは?
ものすごい学習コストが高いです(泣)2ヶ月くらいかかった気がする・・・
Chef独特の設定もあってknifeコマンドも覚えないといけないし、attributesとかなに!?など
構成する要素が多いのでトラブルが発生した場合、対応コストが高いです。
理解してないと辛い。。
簡単に言うと「複雑」
・ちなみに
Chef-Server/Chef-zeloもほとんど同じでworkstation,chef-server,nodeという
3つの構成をクライアント・サーバ形式といって大規模とかに向いてるはず。
Chef-Soloは各nodeにレシピを当てるかんじ。スタンドアロン形式といって小規模とかに向いてるはず。
■次に出会った構成管理ツール
itamaeですね。当時はクックパッドのインフラエンジニア(荒井様)による開発で、
Chefのいいところを取って、もっと簡単に作ったよ!と世間では「うおおおお」となりました。
そこで社内の開発サーバリプレイスのため、itamae経験しようと思い導入しました。
ちなみにitamaeのブログは以下になります。記事が少ないw
https://blog.adachin.me/?cat=58
・itamaeのいいところは?
機能がとってもシンプルで学習コストめちゃくちゃ低い点ですね。
アプリケーションサイズがコンパクトで導入しやすいし、
管理対象サーバに専用のソフトウェアをインストールする必要もないので楽ちんです。
gem install itamaeで環境が作れる!
SSHとsudoで管理者権限が使えればサーバの設定処理を実行できるし、すぐに取り掛かれましたね。
chef-serverは「~が入ってないよ!」とか構築に時間かけすぎました。。
さらに属人化しにくいところ。
・itamaeの悪いところは?
そもそもChefのレシピを使いまわしすることはできません。
もちろんknifeコマンドというのもありませんし、
nodeごとのレシピを作る必要があります。
gitで管理してますが、webで確認して見難いのが難点。
knifeコマンド使えたらな〜。。。
■さらに出会った構成ツール
あんじぶーる。勉強し始めたのは去年の冬くらい。itamaeに近かったので、
一瞬で慣れましたね。今のセンパイに「あだちんすぐ覚えるから助かるわ〜」
など言われていますw(それぐらい学習コスト低い!)
ansible系のブログは以下になります!多いw
https://blog.adachin.me/?cat=70
・ansibleのメリットは?
今までの構成管理ツールで求められたプログラミングの知識は無知でもOK!
そもそもYAML形式のテキストに手順を列挙するだけでいいというところ。
あとは最近出た構成ツールなのでpuppet,chef,itamaeの弱点を押さえているので
全てできることが揃っているところ。もちろんSSHで接続なのでPythonいれるだけでOK。
あとはモジュールの拡張性がすごい。クラウド系モジュールとかdockerとかも対応してるし、
すんごい。去年redhatに買収されたので将来性に期待!
・ansibleのデメリットは?
属人化しやすく結構オリジナリティにコード化出来てしまうところ。
あえて言うならWebuiとかほしい!
Ansible Towerという有料webuiが。。。
オープンソースにしてほしいなあ〜
■puppetってどうなの?
過去の遺産とか残ってるのでレシピを見てみたくらいですが、chef-serverに近いようです。
エージェント入れてpuppet独自のマニフェストの理解をしないといけません。
今後は勉強しなくてよしw
■構成管理ツール比較表(サクラのナレッジより)
■まとめ
結局のところ用途によって様々な構成管理を使い分けるのがベストだと思いますが、
やっぱ今後に期待できるansibleがいいと思います。
0件のコメント