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