gpt4 book ai didi

jenkins - Chef 与 Jenkins 的集成

转载 作者:行者123 更新时间:2023-12-01 23:17:46 25 4
gpt4 key购买 nike

我正在尝试将 Chef 与 Jenkins 集成。

我的情况是,我在 Chef 中创建了一些 Recipe ,并希望通过 Jenkins 执行 Chef 运行列表。我已经在 J​​enkins 中安装了 chef 插件( https://github.com/melezhik/chef-plugin/ )并提供了所需的参数。但是当我现在在 Jenkins 中构建时,它会抛出“主机 key 验证失败错误”。

我也尝试了另一种方法,通过 Jenkins 将“sudo chef-client”作为 shell 命令执行,即使这样我也会收到同样的错误。

我还尝试将 Jenkins 放在有 Chef 节点可用的同一台服务器上,即使问题仍然存在。

任何人都可以在这方面指导我。

最佳答案

Chef 集成插件使用命令行 ssh 从 Jenkins 连接到客户端机器以运行 sudo chef-client。您需要完成此 ssh 连接和 sudo 命令,而无需来自 Jenkins 主机的任何密码提示,因为运行 Jenkins 的用户首先确认 Jenkins Web 界面将是能够做到。

以下内容与从 Chef 服务器到节点的 knife ssh 设置基本相同,只是您将 Chef 服务器/用户替换为 jenkins 服务器/用户。

以 Jenkins 用户身份登录到您的 jenkinshost 上的终端。

  1. 如果您还没有 a private/public key setup ,生成一个。

    ssh-keygen -t rsa -b 2048 -C "jenkinuser@jenkinshost" -N ''

    然后将公钥 id_rsa.pub 添加到 chefuser@clienthost~/.ssh/authorized_keys 文件中。

    ssh-copy-id chefuser@clienthost

    如果您还不能使用 ssh 登录到 clienthost,您可能需要手动执行此操作。

  2. 清理旧客户的任何痕迹(您的错误消息表明这可能是一个问题)

    ssh-keygen -R clienthost
  3. 测试 ssh 连接,并接受主机 key 。

    ssh chefuser@clienthost
  4. 现在在 clienthost 上,设置 sudo 以便 chefuser 可以运行 chef-client 作为

    visudo

    然后添加一行(你的chef-client路径可能不同)

    chefuser ALL=(ALL) NOPASSWD: /usr/local/bin/chef-client
  5. jenkinshost 上,确认 ssh chefuser@clienthost sudo chef-client -v 在没有密码提示的情况下运行。

    $ ssh chefuser@clienthost sudo /usr/local/bin/chef-client -v
    Chef: 11.16.0

一旦您可以做到这一点,Jenkins 插件也应该能够做到。

你想要从 Jenkins 运行 chef-client 的每台机器都需要添加公钥并测试手动 ssh 连接,直到它在没有提示你的情况下工作。

不幸的是,Jenkins chef 插件不允许您为 ssh 连接提供许多配置选项,因此您必须依赖 Jenkins 用户的一个默认 key (id_rsa)或说您想在每台主机上使用不同的 key ,通过 ssh_config 配置主机特定的 ssh 连接详细信息在 ~/.ssh/config

关于jenkins - Chef 与 Jenkins 的集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25739873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com