获取中厨运行的目录列表

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

当我从用户获取数据并将其保存到 SQLite 数据库中时,我应该怎么做才能使列表视图在片段中工作

如何使列表视图出现在片段中?

片段事务分离和附加后ListView不工作?

Kotlin:获取点击项目列表视图的值(片段+适配器)