chef-infra - Chef 在用户的主目录中创建文件

标签 chef-infra vagrant

我正在使用厨师创建文件资源

  file "somefile" do
     action :create_if_missing
  end

我想把它放在用户的主目录中。我有两个问题:
  • 该文件是相对于/解释的,因此使用 ~/最终会将文件放入/~/
  • 我正在通过 vagrant 启动这个厨师食谱,这些文件是由 root 创建的。所以即使我能让 ~/工作,它最终也会在 root 的家中。我不想硬编码使用用户名 vagrant,因为它不会总是那样(我们也可以用厨师客户端运行这些),和 node[:user]似乎是空的。

  • 有没有办法在非 root 用户(在本例中为 vagrant)主目录中创建文件?

    最佳答案

    线程很旧,但我刚才遇到了这个问题。

    您可以为用户创建属性,例如:default['mycookbook']['user']
    然后在你的食谱中:

    user = node['mycookbook']['user'] # user set in cookbook attrubute
    # user = node['current_user'] # user running chef cookbook (on provisioned host)
    
    home = node['etc']['passwd'][user]['dir'] # Chef DSL
    # home = Dir.home(user) # It's Ruby
    
    file "#{home}/somefile" do
      action :create_if_missing
    end
    

    关于chef-infra - Chef 在用户的主目录中创建文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12861385/

    相关文章:

    ruby - 是否可以在 Chef 中使用 bash 设置 Ruby ENV?

    chef-infra - 使用 Chef 管理网站用户、虚拟主机和 PHP-FPM 池

    vagrant - 有没有办法在脚本中获取 Vagrant 自动更正端口转发的值?

    linux - 尝试从 ansible 中通过 screen 启动进程

    ruby - 如何使用库中的 Chef 资源

    python - 你将如何使用 chef 安装 python 模块?

    python - 使用 Vagrant 和 Docker 运行 Python SSH 单元测试

    Vagrant 同步文件夹选项

    mysql - 无法使用 HeidiSQL : "Can' t connect to MySQL server on 'localhost' "连接到 Vagrant

    plugins - Vagrant无法安装依赖nokogiri的插件