【问题标题】:Chef creating /service every time chef-client is ran每次运行 chef-client 时 Chef 创建 /service
【发布时间】:2014-08-20 06:06:01
【问题描述】:

我有一个配方,它会在运行 chef-client 时创建 /service 并挂载它。但是,即使 /service 已经创建,chef 也会挂载它并将其添加到 fstab。我以为厨师会知道不要这样做。

#mkdir /service
directory node['storm-prep']['service']['dir'] do
  owner "root"
  group "root"
  mode 00755
  action :create
 recursive true
end

#Create /service
lvm_logical_volume node['storm-prep']['service']['name'] do
    group node['storm-prep']['volume-group']['name']
    size node['storm-prep']['service']['size']
    filesystem node['storm-prep']['filesystem']['type']
    mount_point #{node['storm-prep']['service']['dir']}
    action [:create]
end

#mount /service and add to fstab
mount node['storm-prep']['service']['dir'] do
    device node['storm-prep']['service']['device']
    fstype node['storm-prep']['filesystem']['type']
end

厨师客户端错误结束

014-08-19T16:19:31-05:00] FATAL: Mixlib::ShellOut::ShellCommandFailed: execute[mount /service and add to fstab] (storm-prep-cookbook::default line 41) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '32'
---- Begin output of echo '/dev/mapper/vg00-servicelv00  /service       ext4 defaults        0   0' >> /etc/fstab && mount /service ----
STDOUT: 
STDERR: mount: /dev/mapper/vg00-servicelv00 already mounted or /service busy
mount: according to mtab, /dev/mapper/vg00-servicelv00 is already mounted on /service
---- End output of echo '/dev/mapper/vg00-servicelv00  /service       ext4 defaults        0   0' >> /etc/fstab && mount /service ----
Ran echo '/dev/mapper/vg00-servicelv00  /service       ext4 defaults        0   0' >> /etc/fstab && mount /service returned 32

【问题讨论】:

    标签: chef-infra


    【解决方案1】:

    您可以使用所谓的guardnot_if。像这样:

    mount node['storm-prep']['service']['dir'] do
        device node['storm-prep']['service']['device']
        fstype node['storm-prep']['filesystem']['type']
        # Don't execute the action if "/service" exists
        not_if "grep '/service' /etc/fstab"
    end
    

    【讨论】:

    • 您的问题不清楚。如果/service 存在,哪一步不应该发生?
    • 是的,很抱歉。每次运行 Chef 客户端时,似乎都会将 /service 添加到 fstab,这不应该发生。 Chef 应该知道该服务已经挂载,不应再次添加。
    • 您的意思是,如果您在编辑器中打开 fstab,您会发现厨师多次添加了 /service 条目?
    • 是的,Chef 也会出错(Chef 客户端不会完成)。这可能有帮助吗? (添加到帖子中)
    • 但是是的,在 chef-client 崩溃后,我去 fstab,它在那里多次
    【解决方案2】:

    解决办法是

    #Create /service
    
    mount_point #{node['storm-prep']['service']['dir']}
    

    需要

    #Create /service
    
    mount_point node['storm-prep']['service']['dir']
    

    并且整个#mount部分都可以删除

    根本原因是 LVM 食谱存在大量问题和错误代码

    【讨论】:

      猜你喜欢
      • 2020-06-28
      • 1970-01-01
      • 2020-02-14
      • 2013-01-17
      • 2016-02-29
      • 2015-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多