Edited at

Chefを利用したときに気がついたこと

More than 1 year has passed since last update.


はじめに

chefを使用する機会があり実施する場合に気をつけたことをメモする。

chefは冪等性を担保するツールではなく冪等性を実現できる手段です。

(最近のProvisioningToolはだいたいそうな気もするしBashだってそうな気がする。)


冪等性を実現するために気にしたこと。


versionを指定する。

少し前に冪等性が、冪等性が。。。なんて話もあったかと思います。

確かに冪等性は大事です。

冪等性を守る一つとしてversion管理が大事だと思います。

chefはパッケージ管理ごとにversion指定ができます。

現状利用するバージョンまたはこれから利用するバージョンを確認した上で指定してあげることは優しさですね。

packageを利用した場合は以下のような形でversion管理が行えます。

package "tar" do

version "1.16.1-1"
action :install
end

package以外にも以下のようなパッケージ管理ソフトが指定できます。


  • apt_package

  • bff_package

  • chef_gem

  • chocolatey_package

  • dpkg_package

  • easy_install_package

  • freebsd_package

  • gem_package

  • homebrew_package

  • ips_package

  • macports_package

  • openbsd_package

  • pacman_package

  • paludis_package

  • portage_package

  • rpm_package

  • smartos_package

  • solaris_package

  • windows_package

  • yum_package

cf: https://docs.getchef.com/resource_package.html


バージョン管理を、サーバとクライアントのいずれでやるか問題。

どのような管理方法にするか。で決められることが出来る。



  • サーバ管理型


    • サーバ側で管理するためクライアント管理型より工数が少ない。

    • クライアントごとの設定差異がない場合にとても有効。

    • クライアント設定の一括変更時は同じコマンドで実施できる。




  • クライアント管理型


    • クライアント側で管理するためサーバ管理型より工数が多い。

    • クライアントのロール別に設定変更することが可能




更新処理をする


actionを指定しない

file "/tmp/something" do

end


削除して作成する

こちらはファイルがある場合です。

明示的に記述するので処理がわかりやすいと思います。

file "/tmp/something" do

action [:delete, :create]
end

chefを利用する際に、時間が経過したときに同じ設定ができるか。

この点に注意しながら構築ができると

その後の設定管理に時間を(使わなく|少なく)することができます。

ので是非注意してみてください。