You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chef部署Jenkins节点时apt_repository[openjdk-r-ppa]资源SSL验证失败问题求助

解决Chef部署Jenkins节点时apt_repository SSL验证失败的问题

针对你在Ubuntu 16.04上用Chef 12.17.44和java cookbook 3.1.2部署时遇到的apt_repository[openjdk-r-ppa] SSL验证失败问题,我整理了几个实用的解决方案:

方案1:更新系统CA证书并临时跳过SSL验证(应急用)

老版本Ubuntu的CA证书库可能过时,无法验证launchpad的SSL证书链。先手动更新系统证书:

apt-get update && apt-get install -y ca-certificates
update-ca-certificates

如果更新后还是失败,可以临时在apt_repository资源里禁用SSL验证(注意:这会降低安全性,仅作为临时应急方案)。你可以在自己的wrapper cookbook里覆盖原资源:

apt_repository 'openjdk-r-ppa' do
  uri 'ppa:openjdk-r'
  distribution node['lsb']['codename']
  ssl_verify false
end

方案2:升级Chef Client版本

Chef 12.17.44是2017年的旧版本,存在不少SSL相关的已知问题。升级到较新的稳定版(比如16.x系列,兼容Ubuntu 16.04)能从根源解决这类问题:

curl -L https://omnitruck.chef.io/install.sh | sudo bash -s -- -v 16.28.14

升级完成后重新运行chef-client即可。

方案3:替换为Ubuntu官方OpenJDK源,弃用第三方PPA

Ubuntu 16.04的官方软件源已经包含了OpenJDK包,完全不需要依赖openjdk-r-ppa这个第三方源。你可以通过设置java cookbook的属性来切换到官方源:
在你的wrapper cookbook的attributes/default.rb里添加:

default['java']['install_flavor'] = 'openjdk'
default['java']['openjdk']['package'] = 'openjdk-8-jdk' # 根据需求选择版本
default['java']['openjdk']['use_ppa'] = false

这样java cookbook就不会尝试添加那个有问题的PPA,直接从官方源安装OpenJDK。

额外注意(针对Kitchen测试环境)

如果你是用Test Kitchen测试的话,可以在.kitchen.yml的provisioner环节先执行CA证书更新命令,确保测试节点的证书是最新的:

provisioner:
  name: chef_zero
  run_list:
    - recipe[apt]
  attributes:
    apt:
      update_cache: true
  custom_config: |
    execute 'update-system-certs' do
      command 'apt-get update && apt-get install -y ca-certificates && update-ca-certificates'
      action :run
    end

内容的提问来源于stack exchange,提问作者Garry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 18:39:09