【问题标题】:Jenkins Slave Nodes on OCI Won't DeployOCI 上的 Jenkins 从属节点不会部署
【发布时间】:2020-12-16 02:58:51
【问题描述】:

我正在尝试将 Jenkins 与 OCI 中的 Jenkins Master 和从节点一起部署。我正在按照甲骨文大学的分步说明和视频进行操作。但是,它无法部署从节点。以下链接与我遵循的说明非常相似:

https://reachmnadeem.wordpress.com/2019/08/22/jenkins-up-and-running-on-oracle-cloud-infrastructure-oci/

在设置 OCI 插件后,我确保我验证了我的凭据并且 Jenkins 可以登录到 OCI - 它可以。然后我设置了一个模板并尝试通过单击“构建执行器状态”然后“配置 Oracle 云基础设施计算”来部署从节点。

我的模板正在尝试部署 Linux 从节点。

它显示以下消息:“Started provisioning node oci-compute-8ddc4d29-cad9-46cd-b565-eed7611d6fc5 with 1 executors” - 但它从未实际部署任何节点。

我已在本文末尾的 Jenkins 日志中列出了错误消息。

我发现我所做的和我遵循的说明之间的唯一区别是,说明似乎显示的是旧版本的 Jenkins(在配置系统的同一页面上具有新的云设置,而不是它自己的)页面。对于模板,它要求提供私有和公共 ssh 密钥,但当前版本的 Jenkins 只要求提供私有)。

如果您对如何解决或解决此问题有任何想法,请告诉我?当我对这个问题进行搜索时,我没有找到很多有用的信息。

以下日志

配置新的云基础架构实例 2020 年 12 月 16 日上午 2:47:57 信息 com.oracle.bmc.core.ComputeClient setEndpoint 将端点设置为https://iaas.us-phoenix-1.oraclecloud.com 2020 年 12 月 16 日凌晨 2:47:57 警告 com.oracle.cloud.baremetal.jenkins.BaremetalCloud$ExplicitProvisioner 通话 配置的奴隶 jenkins-192.168.0.11-8ddc4d29-cad9-46cd-b565-eed7611d6fc5 失败! java.lang.Exception:实例创建失败,因为:null 在 com.oracle.cloud.baremetal.jenkins.client.SDKBaremetalCloudClient.createInstance(SDKBaremetalCloudClient.java:237) 在 com.oracle.cloud.baremetal.jenkins.BaremetalCloud.provision(BaremetalCloud.java:230) 在 com.oracle.cloud.baremetal.jenkins.BaremetalCloud.access 100 美元(BaremetalCloud.java:65) 在 com.oracle.cloud.baremetal.jenkins.BaremetalCloud$Provisioner.call(BaremetalCloud.java:222) 在 com.oracle.cloud.baremetal.jenkins.BaremetalCloud$ExplicitProvisioner.call(BaremetalCloud.java:382) 在 com.oracle.cloud.baremetal.jenkins.BaremetalCloud$ExplicitProvisioner.call(BaremetalCloud.java:372) 在 jenkins.util.ContextResettingExecutorService$2.call(ContextResettingExecutorService.java:46) 在 jenkins.security.ImpersonatingExecutorService$2.call(ImpersonatingExecutorService.java:80) 在 java.util.concurrent.FutureTask.run(未知来源) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(未知来源) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(未知来源) 在 java.lang.Thread.run(Unknown Source)

【问题讨论】:

  • 确保你的从机与Master连接,在从机执行一些示例powershell命令,如果该命令成功则继续下一步
  • 感谢您的回复。由于从机永远不会被部署,所以我没有什么可以登录的。我在底部添加了一个链接,指向看起来与我遵循的非常相似的说明。我只是无法通过第 3 步,构建执行程序 - 请参阅第 3 步的第三张图片(页面上大约下降了 85%,因此您必须向下滚动一点)。我收到与它显示的相同的消息,但没有部署任何内容。我只在日志中得到错误。 reachmnadeem.wordpress.com/2019/08/22/…

标签: jenkins jenkins-plugins oracle-cloud-infrastructure jenkins-slave


【解决方案1】:

我找到了答案,所以我把它贴在这里。似乎问题在于它不支持受密码保护的 ssh 密钥。一旦我生成了一个没有密码保护的新密钥,日志中的 java null 错误就消失了,它部署了从节点。

我通过首先在 OCI 内的 Oracle Linux 上再次安装 Jenkins 发现了这一点,从属节点将存在。这个测试的目的是看看原来的master和oci之间有没有通信问题。我原来的主人不在 OCI 中,但我试图在 OCI 中启动奴隶。因此,如果主服务器现在也在 OCI 中并且在从服务器所在的同一子网中,则很容易消除两者之间的任何通信问题作为可能的原因。这次测试仍然没有部署从节点,所以这不是原因。

然后我安装了 AWS EC2 插件,看看是否可以让从节点部署在 AWS 上。我试图排除 OCI 插件与我正在运行的 Jenkins 版本存在错误或兼容性问题。如果这不起作用,我将降级到旧版本的 Jenkins,因为我正在为我的 Linux 发行版使用可用于 repo 的最新版本。

安装 AWS-EC2 插件并尝试部署从节点后,它在验证我的凭据时出现错误,即使我确信它们是正确的。我查看了 Jenkins 日志,它显示了更详细的答案 - 它说“不支持受密码保护的私钥”。这让我想知道这是否也是 OCI 的问题。所以我生成了一个没有密码保护的新 ssh-Key。从节点创建现在可以在 AWS 和 OCI 云中使用。

为了确保这是解决方案,我使用受密码保护的密钥重复了测试,但再次失败。但是这次我确实注意到 OCI 的错误日志现在也说它不支持受密码保护的密钥。我回到没有密码的那个,它再次起作用。这就是答案 - 不要使用受密码保护的 ssh 密钥。

我不太清楚为什么这次我在日志中收到了更详细的错误消息。我认为我安装的 AWS 插件一定与它有关。不是这样,因为后来我在我原来的 master 上安装了 AWS 插件,它仍然给出了 Java = Null 的相同神秘错误消息。

然后我注意到安装在 Oracle Linux 上的 Jenkins 版本是 Jenkins 2.271 - 比我原来的主版本(Debian/Ubuntu 发行版)更新的版本 - 其 Jenkins 版本为 2.263。我使用的 Debian/Ubuntu 存储库中没有更新版本的 Jenkins。一定是更新版本的 Jenkins 导致了更用户友好的错误消息,然后让我能够弄清楚这一点。我很幸运 Oracle Linux(一个基于 redhat 的发行版)的 repo 有更新版本的 Jenkins,否则我永远也不会想到这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-24
    • 2019-10-13
    • 2016-12-02
    • 1970-01-01
    • 2018-09-22
    • 1970-01-01
    • 2020-06-18
    • 2020-12-08
    相关资源
    最近更新 更多