我无法找到如何使用厨师在linux上安装一次设备。在另一个厨师客户端上的含义资源不应该执行,因为那里的设备已经安装到特定路径。 我怎样才能使用厨师的幂等性来做到这一点? ...
这是我在chef-client log
结尾处看到的日志堆栈跟踪[2013-11-06T23:12:28+00:00] ERROR: Running exception handlers
[2013-11-06T23:12:29+00:00] FATAL: Saving node information to /var/chef/cache/failed-run-data.json
[2013-11-06T23:12:29+00:00] ERROR: Exception handlers complete
[2013-11-06T23:12:29+00:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
[2013-11-06T23:12:29+00:00] FATAL: Mixlib::ShellOut::ShellCommandFailed: mount[/testpath] (mycookbook::myrecipe line 53) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '32'
STDOUT:
STDERR: mount: /dev/xvdb already mounted or /testpath busy
mount: according to mtab, /dev/xvdb is already mounted on /testpath
---- End output of mount -t auto -o defaults /dev/xvdb /testpath ----
Ran mount -t auto -o defaults /dev/xvdb /testpath returned 32
答案 0 :(得分:4)
使用mount资源:
mount '/testpath' do
device '/dev/xvdb'
action [:mount, :enable]
end
答案 1 :(得分:0)
所以问题是我没有在我的测试路径前放置'/'...因此mount资源无法识别是否已经创建了 / testpath 。简单的语法错误,很有可能失败:D ...谢谢
答案 2 :(得分:0)
如果有人在这里登陆亚马逊Linux(ALAMI)上的nfs(或EFS)卷,那么诀窍就是在设备路径上添加//
。您会注意到ALAMI上的mount
输出包含该输出。请注意,如果您安装在EFS的根目录下,则只显示一个/
,并且您的配方应该匹配。
这是一个有效的例子:
mount /mnt/mydev do
device "nfsserver://remotepath/subdir"
fstype 'nfs'
action [:mount, :enable]
end
以下是ALAMI上mount
的输出:
. . .
us-west-2a.fs-XXXX.efs.us-west-2.amazonaws.com://remotepath/subdir /mnt/mydev nfs defaults 0 2
. . .
答案 3 :(得分:0)
首先执行:umount,然后执行a:mount action
mount /srv/nfs do
device "nfsserver://remotepath/subdir"
fstype 'nfs'
action [:umount, :disable]
end
mount /srv/nfs do
device "nfsserver://remotepath/subdir"
fstype 'nfs'
action [:mount, :enable]
end
完成