获取中厨运行的目录列表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取中厨运行的目录列表相关的知识,希望对你有一定的参考价值。
我正在使用Chef来管理Ubuntu服务器。我正在为服务器上的每个用户添加一个控制台工具包,其中大部分是在第一次运行Chef时创建的。当第一次运行Chef时,用户被创建了,但是这段代码并没有为工具包添加符号链接,也没有创建适当的.bashrc文件。我想这是因为 ruby Dir.open('/home')
是在用户创建之前的运行开始时被编译的,因为文件是在下次Chef运行时正确添加的。
当这个配方实际运行时,我如何让目录列表反映系统的当前状态?我认为一个 ruby_block
可能是我需要看的,但我不确定如何在这里应用它。
# Loop over all user folders
Dir.open('/home').each do |user_dir|
next if user_dir.start_with?('.')
link "/home/#{user_dir}/.bash_it" do
to '/home/.bash_it/'
link_type :symbolic
end
template "/home/#{user_dir}/.bashrc" do
source 'bashrc.erb'
owner user_dir
group user_dir
mode '0644'
end
end
答案
你不能在创建用户的同一个地方(在循环中)创建这些模板和链接,或者在这里使用完全相同的循环(我的意思是通过chef安装的用户,而不是通过现有用户)? 在我看来,这将是一个更好的解决方案。
但如果你仍然想这样使用,你必须使用ruby_block,并声明模板和动态连接
ruby_block 'Creating link and template' do
block do
Dir.open('/home').each do |user_dir|
next if user_dir.start_with?('.')
link = Chef::Resource::Link.new "/home/#{user_dir}/.bash_it", run_context
link.to '/home/.bash_it/'
link.link_type :symbolic
link.run_action :create
tplt = Chef::Resource::Template.new "/home/#{user_dir}/.bashrc", run_context
tplt.source 'bashrc.erb'
tplt.owner user_dir
tplt.group user_dir
tplt.mode '0644'
tplt.run_action :create
end
end
end
以上是关于获取中厨运行的目录列表的主要内容,如果未能解决你的问题,请参考以下文章
一旦单击带有 in 片段的回收器列表项,如何将片段意向活动,以及如何获取回收器项目值?
在 Android 片段中获取 Java.Lang.NullPointerException