Jenkins Swarm插件验证

esz*_*k.k 2 jenkins jenkins-plugins

我有一个jenkins master和一个单独的slave服务器.我使用swarm插件将slave连接到master.在配置LDAP认证并撤消匿名用户授权之前,一切正常.

在此输入图像描述 显然现在我必须验证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
Run Code Online (Sandbox Code Playgroud)

BR,

Aru*_*gal 11

您至少需要Create Slave权限或更高权限才能使用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参数创建具有名称的slave(而不是使用唯一/字母数字ID对其进行后缀).

另外:要在slave的配置中创建Tool位置,我最初使用-t**Java =〜/ tools/jdk1.8.0_45 -t Gradle =〜/ tools/gradle-2.9**并且该命令给了我一个错误没有工具'Java'是在Jenkins上定义的.

javax.servlet.ServletException:java.lang.RuntimeException:在Jenkins上没有定义工具'Java'.

经过研究,我发现这是因为在我的Jenkins Master(我用过的)中,它在Jenkins全局设置中的JDK安装部分将此工具的Name值设置为" java "(全部更低).

尝试-t java =〜/ tools/jdk1.8.0_45解决了这个问题,现在我可以在slave的配置中看到(JDK)带有值〜/ tools/jdk1.8.0_45的 java工具.

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

然后,在同一个页面,在"关于奴隶的角色 ",创建前一个角色:像autoslave或东西,分配所有访问(连接,配置,...,删除)和MAKE确保分配模式为前(正则表达式) :" swarm_slave.* ".这样做,从现在开始,您可以运行java -jar slave-client -... depedencies.jar 而不使用-username和-password参数,如果您要创建名称以"swarm_slave"开头的swarm从属... "然后,他们将自动创建/连接/删除(只要swarm slave java进程将在从属服务器上运行/存在).

如果您使用Jenkins Rest/API(groovy)脚本来维护群集从属,那么遵循标准的从属名称模式也可以为您提供更多控制.

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

下一步是使用Docker在从属节点上创建容器.别忘了在这里阅读更多相关内容:

http://dockins.github.io/https://wiki.jenkins.io/display/JENKINS/Docker+Slaves+Plugin https://github.com/jenkinsci/docker-slaves-plugin