向节点添加角色不起作用

Vis*_*ani 9 chef-infra chef-recipe knife

我遵循确切的语法,但在将角色添加到我的一个节点时看到一些奇怪的行为

我正在运行以下命令,理想情况下应该添加角色 - webserver到do_node

knife node run_list add do_node 'role[webserver]'
Run Code Online (Sandbox Code Playgroud)

但相反,这是返回的:

do_node:
 run_list: recipe[roles]
Run Code Online (Sandbox Code Playgroud)

show node命令也显示出错:

Run List:    recipe[roles]
Roles:
Run Code Online (Sandbox Code Playgroud)

我的工作站是Win7机器并使用托管主厨.多次尝试但同样的事情.尝试了详细的输出,但没有显示出很多!

小智 9

可能发生的是

role[webserver]
Run Code Online (Sandbox Code Playgroud)

被解释为glob并且正在完成到chef目录中的'roles'目录.因此,从刀的角度来看,你输入了:

knife node run_list add do_node roles
Run Code Online (Sandbox Code Playgroud)

它转变为'配方[角色]'.通常单引号避免了这种类型的通配,但我看到问题突然出现了mingw.您可以通过尝试添加与当前目录中的文件夹不匹配的角色来确认这是问题:

knife node run_list add do_node 'role[foo]'
Run Code Online (Sandbox Code Playgroud)

引用原始命令的最佳方法取决于您的shell和终端设置,但您可以尝试以下方法:

knife node run_list add do_node '"role[webserver]"'
Run Code Online (Sandbox Code Playgroud)

或(在运行列表项的外部使用双引号)

knife node run_list add do_node "'role[webserver]'"
Run Code Online (Sandbox Code Playgroud)

在Chef问题跟踪器中存在许多针对此的错误.这是一个:https://tickets.opscode.com/browse/CHEF-4277

  • 我认为"'角色[网络服务器]'"做了伎俩而不是''角色[网络服务器]"' (2认同)
  • 就像(我认为)@ vishal.biyani评论的那样,`''role [webserver]'"`(即在*outside*上使用双引号)在MINGW32("Git Bash")终端窗口中工作,但不是内部的双引号. (2认同)