【问题标题】:Linux "Set" command usage in Chef recipeChef 食谱中的 Linux“设置”命令用法
【发布时间】:2016-07-13 13:43:10
【问题描述】:

我需要在 Chef 配方中使用 Linux “set”命令,我尝试使用“execute”资源,以便在节点服务器上设置位置参数。运行融合“厨师客户端”后,它没有显示错误。但是当我在节点上检查它时,为了回显位置变量的值(例如:“echo $2”),没有显示任何值。我该如何解决它,它们是其他任何过程还是我弄错了?以下是配方中的确切行

execute "temp_password" do
  command "set `cat temppasswd.txt`"
end

【问题讨论】:

    标签: chef-infra chef-recipe


    【解决方案1】:

    set 不是命令,它是 shell 内置函数。我想你是想说你想根据文件的内容设置一些环境变量,以便稍后在配方中使用。不幸的是,这不是 Unix 的工作方式,在子进程 (bash) 中设置环境变量对其父进程 (chef-client) 没有影响。在这种情况下,我也不知道您所说的“位置参数”是什么意思。如果您可以提供有关您的实际目标的更多详细信息,我可以提供更多帮助,但正如我所写的那样,我能说的最好的就是您的问题的任何部分实际上都不是问题。

    【讨论】:

    • 感谢您的回复。在日志中生成用户的临时密码。我确实使用 temp.grep 对行内容进行了 grep。密码并将输出粘贴到一个文件(在我的例子中是 tempasswd.txt)。我最初需要使用此密码,以便稍后设置永久密码。所以我可以使用“set”函数来设置包含 temp 的文件内容的位置参数(变量)。密码。稍后我们可以将特定变量与 temp 一起使用。通过传递参数在其中输入密码值。
    • 例如,如果温度。密码在文件内容中的第 7 位,我们可以回显以验证该值,例如回显 $7。我想稍后在设置永久密码时使用 $7 变量。当我通过执行 shell 脚本在 Linux 测试服务器上尝试它时,这是可行的。那么,我需要一种方法来在 Chef 中使用诸如“bash”之类的资源或其他方式来自动化这个过程?
    • 最好的方法是从 Ruby 代码中读取和处理文件,但您可以使用 bashscript 资源,只要您需要对环境进行所有操作变量在一个脚本中。一旦控制权传回 Chef,环境变量就会丢失。
    • 我对厨师有点陌生。我主要研究 Linux 脚本。我试图通过自动化我使用 shell 脚本完成的过程来获得动手厨师。请更正我在配方中的以下红宝石代码
    • 我无法更正您包含的代码,因为它不是您问题的完整描述。我已经告诉过你如何自己修复它。
    猜你喜欢
    • 2014-11-06
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多