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