【问题标题】:Does chef overwrite file owners when deploying? Can it be avoided?部署时厨师会覆盖文件所有者吗?可以避免吗?
【发布时间】:2017-07-11 02:02:31
【问题描述】:

我有一本用于部署我们的 web 应用程序的厨师食谱,有一些文件夹和文件需要由 www-data:www-data 创建和拥有。在部署应用程序时,我在 deploy.rb 食谱中使用了厨师的 deploy 命令,如下所示:

deploy "#{app_dir}" do
  repository tmp_dir
  user "root"
  group "root"
  environment app[:environment]
  symlink_before_migrate({})
end

然后这些文件和文件夹的创建和权限集在before_symlink.rb 脚本中完成,如下所示:

execute "ensure correct owner of storage folder" do
  command "chown -R www-data:www-data #{release_path}/storage"
end

我一直在调试,我已经检查过了:

  1. chown被执行,用户存在,在厨师日志中可以看到。
  2. 如果我在 before_symlink 的末尾执行 sleep 命令,然后通过 ssh 进入机器,我可以在 storage 文件夹中看到该文件夹​​如我所愿归 www-data 所有。
  3. 如果我在 deploy.rb 上的 deploy 命令之后立即执行 sleep 命令,然后 ssh 到机器,现在发布文件夹将链接到 current 文件夹,并且每个文件和文件夹都将归root:root 导致权限错误。

因此,似乎在部署结束时,厨师似乎将每个已部署文件的所有者覆盖给进行部署的用户。这是真的?有什么方法可以将文件和文件夹的所有者设置为before_symlink.rb

【问题讨论】:

  • 如果所有者/组是www-data:www-data,为什么要将资源分配给root:root?直接在deploy资源中设置正确的。

标签: deployment chef-infra devops


【解决方案1】:

真的真的不要使用部署资源。您想要的可能是git 资源及其user 属性。

【讨论】:

    猜你喜欢
    • 2014-04-20
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    • 1970-01-01
    • 2019-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多