符号 link 无法使用厨师食谱
symbolic link not working with chef recipe
我想创建符号 link 只有当它不存在时
我在下面写了菜谱
link '/home/user1/veera' do
to '/usr/local/veera-10.0'
only_if {test -L /home/user1/veera}
end
我在食谱中尝试了以下条件
only_if {test -L /home/user1/veera}
但是下次厨师 运行 时它会更新 symlink(如果它改变了)。但我不想要那个。
如果 symlink 存在,我想跳过这个,只有当 symlink 不存在时才创建。
也试过这个
link '/home/user1/veera' do
to '/usr/local/veera-10.0'
not_if { File.symlink?('/home/user1/veera') }
end
但在下一位厨师 运行
更改时,它仍在更新符号link
link resource 本质上是幂等的,如果 link 已经存在,则不应更改。
但是,出于某种原因,如果您想跳过这一步,我们可以使用 Ruby 的 File class 中的 symlink?
方法。此方法returnstrue/false
根据目标路径是否link
喜欢:
File.symlink?('/home/user1/veera')
我注意到并在下面的示例中更正的另一个潜在问题是您的源路径 - usr/local/veera-10.0
很可能与您当前的工作目录相关。可以肯定的是,使用 /usr/local/veera-10.0
.
所以在食谱中:
link '/home/user1/veera' do
to '/usr/local/veera-10.0'
not_if { File.symlink?('/home/user1/veera') }
end
更新
正如@lamont 在他的评论中建议的那样,尝试使用 File.exist?
测试,因为如果此路径存在(无论是文件、目录还是 symlink),您想跳过该步骤。
not_if { File.exist?('/home/user1/veera') }
我想创建符号 link 只有当它不存在时
我在下面写了菜谱
link '/home/user1/veera' do
to '/usr/local/veera-10.0'
only_if {test -L /home/user1/veera}
end
我在食谱中尝试了以下条件
only_if {test -L /home/user1/veera}
但是下次厨师 运行 时它会更新 symlink(如果它改变了)。但我不想要那个。
如果 symlink 存在,我想跳过这个,只有当 symlink 不存在时才创建。
也试过这个
link '/home/user1/veera' do
to '/usr/local/veera-10.0'
not_if { File.symlink?('/home/user1/veera') }
end
但在下一位厨师 运行
更改时,它仍在更新符号linklink resource 本质上是幂等的,如果 link 已经存在,则不应更改。
但是,出于某种原因,如果您想跳过这一步,我们可以使用 Ruby 的 File class 中的 symlink?
方法。此方法returnstrue/false
根据目标路径是否link
喜欢:
File.symlink?('/home/user1/veera')
我注意到并在下面的示例中更正的另一个潜在问题是您的源路径 - usr/local/veera-10.0
很可能与您当前的工作目录相关。可以肯定的是,使用 /usr/local/veera-10.0
.
所以在食谱中:
link '/home/user1/veera' do
to '/usr/local/veera-10.0'
not_if { File.symlink?('/home/user1/veera') }
end
更新
正如@lamont 在他的评论中建议的那样,尝试使用 File.exist?
测试,因为如果此路径存在(无论是文件、目录还是 symlink),您想跳过该步骤。
not_if { File.exist?('/home/user1/veera') }