chefからansibleに乗り換えた5つの理由

1年くらいchefを使ってサーバ構築をしていたのですが、最近ansibleに乗り換えたので紹介記事を書いてみます 1. サーバ側に何もインストールする必要がない chefは管理対象ノードにchef-clientをインストールする必要がありますが、ansibleはPython 2.4が入っていて、sshでログインできればOKです。 chefもパッケージや,knife bootstrapコマンド等があるので始めやすいですが、何もする必要がないansibleの方が敷居が低いのかなと思ってます。 例えばsshでログインできれば、以下のコマンドを打てば10.0.10.1~10.0.10.3サーバの情報をとってくれます(カーネルバージョン,CPU,メモリ,ディスクサイズ,ディストリビューション等)。 この機能はchefで使われているohai相当のことをしてくれます。 echo 10.0.10.1 > host echo 10.0.10.2 >> host echo 10.0.10.3 >> host ansible -i host all -m setup 出力の一部抜粋 “ansible_lsb”: { “codename”: “precise”, “description”: “Ubuntu 12.04.4 LTS”, “id”: “Ubuntu”, “major_release”: “12”, “release”: “12.04” }, このようにすぐに始められます 2. シンプルな構造になっている ansibleはとてもシンプルで、動かすだけならインベントリ(ホスト名を列挙したもの)とymlコードの2つだけあれば動きます。とっても覚えることが少ないです。 フォルダ構成のベストプラクティスがありますが、それほど複雑ではないです。 chefも少し使う分なら最初のうちは覚えることは少ないですが、2ファイルだけで始められるansibleに比べると覚えることが多い気がします。 例えば、templetaのフォルダ評価順序が以下のようになっているとか何回聞いても忘れてしまいます(まあ大抵templates/defaultフォルダに入れてしまいますが)。 templatesディレクトリ評価順序、Attributeの優先順位はこんな感じでした。 chefのtemplatesディレクトリ評価順序 host-node[:fqdn] node[:platform]-node[:platform_version] node[:platform]-version_components node[:platform] default chefのAttribute優先順位 A default attribute located in a cookbook attribute file A default attribute located in a recipe A default attribute located in an environment A default attribute located in role A force_default attribute located in a cookbook attribute file A force_default attribute located in a recipe A normal attribute located in a cookbook attribute file A normal attribute located in a recipe An override attribute located in a cookbook attribute file An override attribute located in a recipe An override attribute located in a role An override attribute located in an environment A force_override attribute located in a cookbook attribute file A force_override attribute located in a recipe An automatic attribute identified by Ohai at the start of the chef-client run chefのcookbookとansibleのroleについてのドキュメントは以下の通りです。ansibleの方がシンプルに感じませんか? About … Continue reading chefからansibleに乗り換えた5つの理由