Automation Rundeck未使用不同的ssh端口为远程执行设置环境变量
Rundeck将传递给作业的所有选项设置为环境变量,如Automation Rundeck未使用不同的ssh端口为远程执行设置环境变量,automation,rundeck,Automation,Rundeck,Rundeck将传递给作业的所有选项设置为环境变量,如$RD\u OPTION.*,但当作业在具有不同ssh端口的远程节点中执行时,它不会设置这些变量。脚本成功登录到远程节点,但不存在环境变量。请帮我找个解决办法 作业定义示例: 职位描述 符合事实的 错误的 提升 1. 符合事实的 身份证件 调试 职务名称 名称:远程_节点 符合事实的 符合事实的 python路径/to/script.py$RD_OPTION\u OPTION1>/path/to/logfile\u$RD_作业\u EXE
$RD\u OPTION.*
,但当作业在具有不同ssh端口的远程节点中执行时,它不会设置这些变量。脚本成功登录到远程节点,但不存在环境变量。请帮我找个解决办法
作业定义示例:
职位描述
符合事实的
错误的
提升
1.
符合事实的
身份证件
调试
职务名称
名称:远程_节点
符合事实的
符合事实的
python路径/to/script.py$RD_OPTION\u OPTION1>/path/to/logfile\u$RD_作业\u EXECID.log 2>&1
java-jarpath/to/jarfile.jar${option.option1}>“/path/to/logfile{job.execid}.log”2>&1
作业uuid
我认为您混淆了Rundeck命令参数和Rundeck环境变量
这是一个“命令、脚本参数和作业引用参数”:
${job.execid}
正如其名称所述,您可以将其用作命令参数。就像你在工作定义中所做的一样
这是一个“环境变量”:
$RD\u JOB\u EXECID
在没有任何设置的情况下,如果在Rundeck服务器上运行作业,这两种方法都可以正常工作,但如果要将作业分派到节点,$RD\u job\u EXECID
将无法正常工作
要通过远程命令分派传递环境变量,需要
需要在远程端正确配置SSH服务器见
的“sshd_config(5)”中的AcceptEnv指令
说明。
使用通配符模式允许RD_uu前缀变量提供
打开对Rundeck生成的环境变量的访问
在Rundeck服务器上
确保在ssh\u配置中设置了SendEnv RD.*
对于您的用例,${job.execid}
,${option.option1}
将完美地解决sshd\u配置的混乱问题
它在不同的SSH端口上工作。 XML中的作业定义
<joblist>
<job>
<context>
<options preserveOrder='true'>
<option name='nodeFilter' />
</options>
</context>
<description></description>
<dispatch>
<excludePrecedence>true</excludePrecedence>
<keepgoing>false</keepgoing>
<rankOrder>ascending</rankOrder>
<threadcount>1</threadcount>
</dispatch>
<executionEnabled>true</executionEnabled>
<group>TEST</group>
<id>63b6f283-39b2-479d-bba9-b1742bc2ea53</id>
<loglevel>INFO</loglevel>
<name>test rundeck job context</name>
<nodefilters>
<filter>${option.nodeFilter}</filter>
</nodefilters>
<nodesSelectedByDefault>true</nodesSelectedByDefault>
<scheduleEnabled>true</scheduleEnabled>
<sequence keepgoing='false' strategy='node-first'>
<command>
<script><![CDATA[#!/usr/bin/python
import sys
print "I know ENV_VAR will not work as command line arguments %s " % sys.argv
]]></script>
<scriptargs> ">${job.execid}< >$RD_JOB_EXECID<"</scriptargs>
</command>
<command>
<script><![CDATA[#!/bin/bash
echo "But it works in Bash"
echo $RD_JOB_ID
echo $RD_JOB_EXECID
echo "Which port does sshd listening on?"
sudo netstat -tulpn | grep 2808]]></script>
<scriptargs />
</command>
</sequence>
<uuid>63b6f283-39b2-479d-bba9-b1742bc2ea53</uuid>
</job>
</joblist>
符合事实的
错误的
提升
1.
符合事实的
测验
63b6f283-39b2-479d-bba9-b1742bc2ea53
信息
测试rundeck作业上下文
${option.nodeFilter}
符合事实的
符合事实的
“${job.execid}$RD_job_execid”
63b6f283-39b2-479d-bba9-b1742bc2ea53
我认为您混淆了Rundeck命令参数和Rundeck环境变量
这是一个“命令、脚本参数和作业引用参数”:
${job.execid}
正如其名称所述,您可以将其用作命令参数。就像你在工作定义中所做的一样
这是一个“环境变量”:
$RD\u JOB\u EXECID
在没有任何设置的情况下,如果在Rundeck服务器上运行作业,这两种方法都可以正常工作,但如果要将作业分派到节点,$RD\u job\u EXECID
将无法正常工作
要通过远程命令分派传递环境变量,需要
需要在远程端正确配置SSH服务器见
的“sshd_config(5)”中的AcceptEnv指令
说明。
使用通配符模式允许RD_uu前缀变量提供
打开对Rundeck生成的环境变量的访问
在Rundeck服务器上
确保在ssh\u配置中设置了SendEnv RD.*
对于您的用例,${job.execid}
,${option.option1}
将完美地解决sshd\u配置的混乱问题
它在不同的SSH端口上工作。 XML中的作业定义
<joblist>
<job>
<context>
<options preserveOrder='true'>
<option name='nodeFilter' />
</options>
</context>
<description></description>
<dispatch>
<excludePrecedence>true</excludePrecedence>
<keepgoing>false</keepgoing>
<rankOrder>ascending</rankOrder>
<threadcount>1</threadcount>
</dispatch>
<executionEnabled>true</executionEnabled>
<group>TEST</group>
<id>63b6f283-39b2-479d-bba9-b1742bc2ea53</id>
<loglevel>INFO</loglevel>
<name>test rundeck job context</name>
<nodefilters>
<filter>${option.nodeFilter}</filter>
</nodefilters>
<nodesSelectedByDefault>true</nodesSelectedByDefault>
<scheduleEnabled>true</scheduleEnabled>
<sequence keepgoing='false' strategy='node-first'>
<command>
<script><![CDATA[#!/usr/bin/python
import sys
print "I know ENV_VAR will not work as command line arguments %s " % sys.argv
]]></script>
<scriptargs> ">${job.execid}< >$RD_JOB_EXECID<"</scriptargs>
</command>
<command>
<script><![CDATA[#!/bin/bash
echo "But it works in Bash"
echo $RD_JOB_ID
echo $RD_JOB_EXECID
echo "Which port does sshd listening on?"
sudo netstat -tulpn | grep 2808]]></script>
<scriptargs />
</command>
</sequence>
<uuid>63b6f283-39b2-479d-bba9-b1742bc2ea53</uuid>
</job>
</joblist>
符合事实的
错误的
提升
1.
符合事实的
测验
63b6f283-39b2-479d-bba9-b1742bc2ea53
信息
测试rundeck作业上下文
${option.nodeFilter}
符合事实的
符合事实的
“${job.execid}$RD_job_execid”
63b6f283-39b2-479d-bba9-b1742bc2ea53
正如杨所说,这是由于ssh配置。同样地,sshd\u-config
中的AcceptEnv
变量在ssh\u-config
中有SendEnv
变量,因此我必须在SendEnv
中指定SendEnv-RD.*
在本地主机ssh\u-config中,这将指示ssh将这些环境变量发送到服务器。我发现在使用环境变量时需要做以下几件事
SendEnv
需要在localhost中的ssh\u config
文件中设置,以发送环境变量AcceptEnv
需要在远程节点的sshd\u config
文件中设置,以便接受传递给服务器的环境变量正如杨所说,这是由于ssh配置。同样地,
sshd\u-config
中的AcceptEnv
变量在ssh\u-config
中有SendEnv
变量,因此我必须在SendEnv
中指定SendEnv-RD.*
在本地主机ssh\u-config中,这将指示ssh将这些环境变量发送到服务器。我发现在使用环境变量时需要做以下几件事
SendEnv
需要在localhost中的ssh\u config
文件中设置,以发送环境变量AcceptEnv
需要在远程节点的sshd\u config
文件中设置,以便接受环境