もともとchef serverのよる構成管理を行っていたが、よりシンプルな仕組みにしたかったのでansibleに移行した。ansibleは処理も軽く、コードも構成もシンプルで気に入っていたのだが、難しい処理を扱い始めてくると表現力に物足りなさを感じてしまった。具体的には、素のpythonを書けないことのストレスと、pythonでの構造体操作がperlやrubyに比べるとやりづらいという点。その手間も相まって、Jinja2でのtemplate定義に悩むことが多かった。... 続きを読む
Tag Archives: ansible
IDCFクラウド LVS+ansible で kickstart 環境構築
IDCFクラウド上での環境構築を着々と進めている。構成管理ツールをansibleに切り替えてから、初めてのクラウド環境対応なので、わりと細かいところから修正している。そもそも自宅環境とクラウド環境をVPNで繋いで、仮想的なプライベート・ネットワークを作るかどうかも悩んだ。現時点ではクラウドの独立性を優先して、それぞれ個別に環境を作っている。chefではリッチなサーバ環境を安価なクラウドで用意できなかったので、この辺りはansibleの軽量さに感謝している。ansibleの処理そのものを別管理にするのはコストが大きいので、同じgitで管理してhostsファイルを自宅環境とクラウド環境で違える形を取った。処理ロジックの中では、ansible_domainを使って処理分岐や変数の変更を行っている。例えば、こんな感じ。... 続きを読む
ansible gather_facts チューニング
前回、chefからansibleへの移行記事をまとめたが、その際にさらっとgather_factsの高速化に時間を使ったと触れた。そもそも素でansibleを使うとデフォルトで処理前段にgather_factsの処理が入る。これが何をしているかというと、各ノードのOSやスペック、ネットワーク情報などの収集だ。ansibleはサーバサイド・プッシュな動きをするので、ansible-playbookを実行すると対象ノード全てに処理を行う。gather_factsの処理も同様で対象ノード数に比例して処理時間が伸びていく。1ノードならまだしも、10ノードを超えだすとその待ち時間は耐え難いものに。chefサーバの場合はサーバプロセスが存在したので、その中でこの手の情報をキャッシュしてくれていたのだろうが、ansibleにはサーバプロセスが存在しないため、毎回律儀に各ノードから取得する羽目になる。 ... 続きを読む
構成管理ツール比較 chef vs ansible
自分のevernoteを見返すと3年前からchefを使っているようだ。当初からchef server構成を使っていたため、冗長化の方法に何かと頭を悩ましてきた。個人で使う分にはそれほど更新頻度は高くないので、定期的にrsyncしていれば何とかなるのだが、それでも切替のときには一旦止めてreconfigureして再起動のようなコールドスタンバイくらいしか方法がなかった。また、chef server上ではelastics searchやpostgresqlなど、多くのミドルウェアが動いてしまうため、独立ノードで使う事になってしまう。貧弱なクラウド環境での動作は性能的にイマイチなので、クラウド環境と自宅環境をopenvpnで繋いで、自宅でchef serverを動かす形を取っていた。... 続きを読む