gpt4 book ai didi

Jenkins Swarm 插件身份验证

转载 作者:行者123 更新时间:2023-12-02 12:58:52 25 4
gpt4 key购买 nike

我有一个 Jenkins 主服务器和一个单独的从服务器。我使用 swarm 插件将从站连接到主站。在我配置 LDAP 身份验证并撤销匿名用户的授权之前,一切工作正常。

enter image description here显然,现在我必须对 swarm 客户端进行身份验证,但我无法做到这一点。如果有人有 swarm 插件的经验,请告诉我。

从属机器的控制台:

$ java -jar swarm-client-2-0.jar -master http://x.x.x.x:8080/ -username 'exxxx' -password common.pwd
Discovering Jenkins master
Oct 01, 2015 2:14:51 PM org.apache.commons.httpclient.auth.AuthChallengeProcessor selectAuthScheme
INFO: basic authentication scheme selected
Oct 01, 2015 2:14:51 PM org.apache.commons.httpclient.HttpMethodDirector processWWWAuthChallenge
INFO: Failure authenticating with BASIC 'Jenkins'@x.x.x.x:8080
Failed to fetch slave info from Jenkins CODE: 401
Retrying in 10 seconds

Br,

最佳答案

您至少需要“创建从站”权限或更高权限才能使用 Swarm 插件创建从站。

您有以下选择:

  1. 打开请求并让您的网络团队创建一个新的 LDAP/服务帐户(通用),这样您就不必担心它的密码在接下来的 N 个时间内被更改。天。

  2. 分配该用户或授予其“创建从属”权限或其中看到的所有访问权限(根据图像快照的“从属”部分)。

  3. 使用该用户的用户 ID/密码。您可以创建一个全局变量/使用 Jenkins 中的管理凭据部分来定义用户/密码,并且可以使用 ENV 变量或进行基于凭据的身份验证。

  4. 运行命令来创建从属设备,它将起作用,例如:

$ java -jar swarm-client-2.0-jar-with-dependencies.jar \    -name "$(hostname -a)_01" \    -fsroot "$(pwd)/$(hostname -a)_01" \    -master http://my_jenkins_server.my.company.com:8081 \    -disableSslVerification \    -username c123456_or_slaveSpecialUser \    -password $p \    -description "$(hostname -a) " \    -executors 5 \    -labels "Linux CentOS ANSIBLE" \    -mode 'normal' \    -retry 3 \    -showHostName \    -t java=~/tools/jdk1.8.0_45 \    -t gradle=~/tools/gradle-2.9 \    -t Maven=~/tools/apache-maven-3.3.3 \    -t Groovy2=~/tools/groovy-2.4.5 \    --showHostName \    -disableClientsUniqueId

注意:
模式可以是-mode 'exclusive'
使用 -disableClientsUniqueId 选项将根据您的 -name 参数创建名称的从属设备(而不是使用唯一/字母数字 ID 作为后缀)。

添加:为了在从属配置中创建工具位置,我最初使用-t **Java=~/tools/jdk1.8.0_45 -t Gradle=~/tools/gradle-2.9* * 并且该命令给了我一个错误Jenkins 上没有定义工具“Java”

javax.servlet.ServletException: java.lang.RuntimeException: No tool 'Java' is defined on Jenkins.

经过研究,我发现这是因为在我的 Jenkins Master(我使用的)中,Jenkins 全局设置中的 JDK 安装 部分将此工具名称值设置为“java ”(全部较低)。

尝试 -t java=~/tools/jdk1.8.0_45 解决了该问题,现在我可以看到具有值 ~/tools/jdk1.8.0_45< 的 (JDK) java 工具/strong> 在从属配置中。

注意:
如果您正在连接或想要使用“匿名”用户将从站连接到 Jenkins 主站(即您不必提供-username c123456_or_slaveSpecialUser -password $p参数),然后在 Jenkins Master 中(具有管理员级别权限,仅执行一次设置)> 在管理角色和用户下 > 在全局角色部分下,创建一个角色(或更改现有的查看者角色)并分配“总体 + 读取”和“从属 + 创建”访问权限。

然后,在同一页面的“从属角色”下,创建一个角色,例如:autoslave 或类似的角色,并分配所有访问权限(连接、配置、...、删除)和MAKE 确保在其中分配一个模式(正则表达式),例如:“swarm_slave.*”。这样做的作用是,从现在开始,您可以运行 java -jar Slave-client-...depedcies.jar 使用 -username 和 -password 参数,并且如果您要创建具有 name 的 swarm Slave从“swarm_slave ....”开始,它们将自动创建/连接/删除(只要swarm从属java进程将在从属服务器上运行/存在)。

如果您使用 Jenkins Rest/API (groovy) 脚本来维护 swarm 从站,那么遵循从站的标准名称模式也将为您提供更多控制权。

另请参阅此处了解更多信息(如何将环境变量添加到新创建的节点):Jenkins Slave - How to add or update ENVIRONMENT variables

下一步是使用 Docker 在从属节点上创建容器。不要忘记在这里阅读有关这些的更多信息:

http://dockins.github.io/和 奥 git _a https://wiki.jenkins.io/display/JENKINS/Docker+Slaves+Plugin

关于Jenkins Swarm 插件身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32886262/

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