chef

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を利用する際に、時間が経過したときに同じ設定ができるか。
この点に注意しながら構築ができると
その後の設定管理に時間を(使わなく|少なく)することができます。
ので是非注意してみてください。