Knife bootstrap 通过 Jenkins 执行 shell 失败

Posted

技术标签:

【中文标题】Knife bootstrap 通过 Jenkins 执行 shell 失败【英文标题】:Knife bootstrap failing through Jenkins execute shell 【发布时间】:2018-03-27 22:38:16 【问题描述】:

我正在尝试通过 Jenkins Web UI 执行 shell 执行“knife bootstrap”命令,但我不断收到以下错误消息: (这是我正在使用的刀引导命令):

"knife bootstrap [节点的 IP] --ssh-user ec2-user --sudo --identity-file "[我的节点密钥]" --node-name My123 --run-list '角色[role1]' "

这是错误信息:

" 错误:Errno::ENOENT: 没有这样的文件或目录@rb_sysopen - /etc/chef/validation.pem "

当我直接通过 CLI 运行“knife bootstrap”命令时,它工作正常。

知道为什么它在 Jenkins 执行 shell 中不起作用吗?

【问题讨论】:

当您调用knife bootstrap 时,它与运行 jenkins 的用户是否相同?引导过程需要有适当的厨师配置,您可能需要将刀指向适当的 client.rb。 是的,我还尝试了导出“export KNIFE_HOME=/var/lib/jenkins/starter_kit/.chef/”命令和符号链接命令:“ln -s /var/lib/jenkins/ starter_kit/.chef/ /var/lib/jenkins/" ,但仍然收到此错误消息。 你试过加--config吗? 是的,谢谢,我已经解决了,感谢您的帮助。 【参考方案1】:

这是由于缺少validation.pem 文件,这是验证文件的默认路径。您可以在 /chef-repo/.chef/knife.rb 文件中设置路径,也可以使用默认位置 /etc/chef/validation.pem。

您可以从 webUI 重新生成验证密钥并替换现有的,这应该可以解决您的问题。

【讨论】:

以上是关于Knife bootstrap 通过 Jenkins 执行 shell 失败的主要内容,如果未能解决你的问题,请参考以下文章

终于放弃了单调的swagger-ui了,选择了这款神器—knife4j

springboot整合swagger2+knife4j

linux通过docker容器下载和安装Jenkin

K8S环境的Jenkin性能问题处理

jenkin运行jmeter自动化脚本(jenkins+jmeter+ant)

Android RoboGuice开源框架Butter Knife开源框架浅析