Chef infra 厨师长客户端继续重新安装配方

Chef infra 厨师长客户端继续重新安装配方,chef-infra,Chef Infra,我是厨师的新鲜肉。我正在使用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::de

我是厨师的新鲜肉。我正在使用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
[Thu,2012年3月29日00:28:01+0000]信息:处理简易安装程序包[hash\u ring]操作安装(nginx\u base::默认第107行)
[Thu,2012年3月29日00:28:02+0000]信息:处理bash[compile_proto_source_source]操作运行(PyTimer::默认第8行)
[Thu,2012年3月29日00:28:02+0000]信息:bash[compile_proto_source_source]sh(“bash”“/tmp/chef-script20120329-23998-1te88gz-0”)
超时-0.1.2/
超时-0.1.2/PKG-INFO
超时-0.1.2/setup.py
timeout-0.1.2/timeout.py
正在运行的安装
运行构建
运行build\u py
复制timeout.py->build/lib.linux-x86_64-2.7
正在运行安装库
正在复制build/lib.linux-x86_64-2.7/timeout.py->/usr/local/lib/python2.7/dist-packages
字节编译/usr/local/lib/python2.7/dist-packages/timeout.py到timeout.pyc
正在运行安装\u鸡蛋\u信息
删除/usr/local/lib/python2.7/dist-packages/timeout-0.1.2.egg-info
正在编写/usr/local/lib/python2.7/dist-packages/timeout-0.1.2.egg-info
版本=节点[:PyTimer][:版本]
远程_文件“#{Chef::Config[:file_cache_path]}/timeout-#{version}.tar.gz”do
来源“http://pypi.python.org/packages/source/t/timeout/timeout-#{version}.tar.gz“
#操作:如果缺少,则创建
结束
bash“compile_proto_source_source”do
cwd厨师长::配置[:文件\缓存\路径]

code使用
only_if
not_if
条件(可以是shell脚本或任意ruby代码块)来确定脚本完成的工作已经完成的情况。您还可以让脚本在成功执行时创建一个文件,并使用exec的
creates
参数仅在该文件不存在时运行


.

中涵盖的所有这些都使用
仅当
不当
条件(可以是shell脚本或任意ruby代码块)来标识脚本所做工作已经完成的情况。您还可以让脚本在成功执行时创建一个文件,并使用exec的
creates
参数仅在该文件不存在时运行

所有这些都包含在本手册中