厨师客户不断重新安装食谱

时间:2012-03-28 23:47:49

标签: chef

我是厨师的新鲜肉。我正在使用厨师管理ec2实例ans似乎正在工作。当我登录框时,我运行以下内容,以便我可以看到正在讨价还价的内容。

sudo chef-client -i 60

我注意到我的pytimer安装不断重新安装。除非配方有变化,否则如何修改配方以确保只安装一次?

[Thu, 29 Mar 2012 00:28:01 +0000] INFO: Processing easy_install_package[hash_ring] action install (nginx_base::default line 107)
[Thu, 29 Mar 2012 00:28:02 +0000] INFO: Processing bash[compile_proto_source_source] action run (PyTimer::default line 8)
[Thu, 29 Mar 2012 00:28:02 +0000] INFO: bash[compile_proto_source_source] sh("bash"  "/tmp/chef-script20120329-23998-1te88gz-0")
timeout-0.1.2/
timeout-0.1.2/PKG-INFO
timeout-0.1.2/setup.py
timeout-0.1.2/timeout.py
running install
running build
running build_py
copying timeout.py -> build/lib.linux-x86_64-2.7
running install_lib
copying build/lib.linux-x86_64-2.7/timeout.py -> /usr/local/lib/python2.7/dist-packages
byte-compiling /usr/local/lib/python2.7/dist-packages/timeout.py to timeout.pyc
running install_egg_info
Removing /usr/local/lib/python2.7/dist-packages/timeout-0.1.2.egg-info
Writing /usr/local/lib/python2.7/dist-packages/timeout-0.1.2.egg-info




version = node[:PyTimer][:version]

remote_file "#{Chef::Config[:file_cache_path]}/timeout-#{version}.tar.gz" do
  source "http://pypi.python.org/packages/source/t/timeout/timeout-#{version}.tar.gz"
  #action :create_if_missing
end

bash "compile_proto_source_source" do
  cwd Chef::Config[:file_cache_path]
  code <<-EOH
    tar -xvf timeout-#{version}.tar.gz
    cd timeout-#{version}
    sed 's/signal.alarm(self.timeout)/signal.setitimer(signal.ITIMER_REAL,self.timeout)/g' -i timeout.py
  python setup install
  EOH
end

1 个答案:

答案 0 :(得分:1)

使用only_ifnot_if条件(可以是shell脚本或ruby代码的任意块)来标识脚本完成的工作已经完成的情况。您也可以让脚本在成功执行时创建一个文件,并使用creates参数来执行只在该文件不存在时运行。

所有这些都包含在documentation for the exec resource