小编Art*_*son的帖子

Chef bash 资源未以指定用户身份执行

我正在写一本 Chef 食谱来安装Hubot。在配方中,我执行以下操作:

bash "install hubot" do
  user hubot_user
  group hubot_group
  cwd install_dir
  code <<-EOH
    wget https://github.com/downloads/github/hubot/hubot-#{node['hubot']['version']}.tar.gz && \
    tar xzvf hubot-#{node['hubot']['version']}.tar.gz && \
    cd hubot && \
    npm install
  EOH
end
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试在安装食谱的服务器上运行 Chef-client 时,我获得了写入到运行 Chef-client 的用户目录而不是 hubot 用户的权限被拒绝的权限。出于某种原因,npm试图在错误的用户下运行,而不是在 bash 资源中指定的用户下。

我可以sudo su - hubot -c "npm install /usr/local/hubot/hubot"手动运行,这得到了我想要的结果(将 hubot 安装为 hubot 用户)。但是,似乎chef-client 并没有以hubot 用户的身份执行命令。您将在下面找到厨师 - 客户执行。先感谢您。

Saving to: `hubot-2.1.0.tar.gz'

     0K ......                                                100%  563K=0.01s

2012-01-23 12:32:55 (563 KB/s) - `hubot-2.1.0.tar.gz' saved [7115/7115]

npm ERR! …
Run Code Online (Sandbox Code Playgroud)

chef node.js

12
推荐指数
2
解决办法
8460
查看次数

标签 统计

chef ×1

node.js ×1