【问题标题】:CHEF commands help ,CHEF 命令帮助,
【发布时间】:2014-09-19 16:47:33
【问题描述】:

如何在 chef 中编写此命令?

/home/vagrant$ source ~/.rvm/scripts/rvm (->enter)

我试过了……

execute "foo" do
 command "source ~/.rvm/scripts/rvm"
 action :run
end

简而言之,如何在 chef 中编写一个简单的命令?不安装东西。谢谢!!!

【问题讨论】:

  • 我也尝试了 bash "foo" do code "source ~/.rvm/scripts/rvm" end Error execution action run on resource 'bash[foo]'

标签: chef-infra chef-recipe chef-solo


【解决方案1】:

这不是 Chef 支持的。 source 是一个内置的 shell,而不是命令,无论如何它对 Ruby 没有影响,因为它不是 Ruby 脚本,而是一个 shell 脚本。您可以像这样使用 bash 资源:

bash 'do the needful' do
  code <<-EOH
    source ~/.rvm/scripts/rvm
    foo
  EOH
end

【讨论】:

  • 谢谢先生!!!!输入这个命令怎么样 > ~/.bashrc>> 方法一样吗?或者我现在可以使用执行命令动作运行方法?
  • 不,我真的不知道你的意思是什么,但这些东西的组合都不行。
  • @coderanger 我想他希望将source ~/.rvm/scripts/rvm 添加到他的.bashrc 文件中。在这种情况下,应该在 bash 资源 (user vagrant IIRC) 中提供用户。 @JustineGumba 你能确认一下吗?
【解决方案2】:

哦忘记回来了:

bash 'do the needful' do
  user "target user"
  code <<-EOH
    echo 'source ~/.rvm/scripts/rvm' >> ${HOME}/.bashrc
  EOH
end

我有点不确定 $HOME 在这种情况下会给出什么,也许您必须指定完整路径,例如 /home/"target user"/.bashrc。

试试看

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    • 2011-08-15
    • 2020-11-06
    • 2021-09-16
    相关资源
    最近更新 更多