厨师只运行一次命令

时间:2014-05-28 17:13:23

标签: ruby format chef drive knife

制作厨师食谱,我需要在安装之前格式化驱动器,我这样做:

execute "Format drive" do
   command "mkfs.ext4 /dev/xvde1"
   end

然后我用另一个命令将它挂载到/ var / log / 一切正常,但现在的问题是,当我第二次运行配方mkfs.ext4失败,因为驱动器已安装..它应该失败:)

我的问题是如何才能在节点上首次运行此mkfs.ext4命令而不是每次都在此之后运行?

或者我怎样才能强迫厨师在这个特定命令失败时不停止(虽然不是优雅的解决方案)

或者是否有另一个ruby命令用于专门格式化驱动器? (远射)

我找到的解决方法是在此文件的末尾添加format命令 /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.10.4/lib/chef/knife/bootstrap 我注意到只有在第一次创建服务器时才会运行 但我想以正确的方式做到这一点。

1 个答案:

答案 0 :(得分:3)

您可以添加not_if语句来检查并查看它是否已经安装,因此它不会再次尝试执行此操作。像这样:

execute "Format drive" do
  command "mkfs.ext4 /dev/xvde1"
  not_if  "grep xvde1 /proc/mounts"
end

如果您希望仅在符合其他条件的情况下执行某些操作,则还会only_if