当我|在远程节点上执行带有一些特殊字符的命令时遇到问题。例如,如果我在ls /var/log/ | grep rundeck本地运行,结果是正确的,如command_locally所示,而在节点中出现command_remotely中的错误(该节点还安装了 Rundeck 并且存在文件夹“rundeck”,因此该命令应该可以工作)。
当我创建全局日志过滤器(例如Key Value Data )时,我遇到了同样的问题。我想获取正在使用的 shell,所以我创建了一个带有Key Value Data的作业,然后我添加了包含运行命令的第一步env,以及第二个步骤echo 'SHELL is "${data.SHELL}"',以显示我从日志(从此处提取的示例)。它在 localhost 中完美运行,但在选择远程节点时不会捕获任何数据。这可以分别在Key_Value_Data_locally和Key_Value_Data_remotely中看到。
我想知道这是一个错误还是我在远程执行某些事情时做错了什么。我使用 Rundeck 的 Ansible 插件,可能与此有关吗?
编辑 1 与工作定义:
有命令的工作。本地工作,远程失败。
- defaultTab: output
description: ''
executionEnabled: true
id: 4e10310c-b5e2-419e-a828-1ed7df4840e9
loglevel: INFO
name: Command_problem
nodeFilterEditable: false
scheduleEnabled: true
sequence:
commands:
- exec: ls /etc | grep yum
keepgoing: false
strategy: node-first
uuid: 4e10310c-b5e2-419e-a828-1ed7df4840e9
具有键值数据的工作。本地工作,远程不捕获任何数据。
- defaultTab: output
description: ''
executionEnabled: true
id: 1da43d9b-691d-437b-882e-8fbee2790c73
loglevel: INFO
name: Key_Value_Data_problem
nodeFilterEditable: false
scheduleEnabled: true
sequence:
commands:
- exec: env
- exec: ' echo ''SHELL is "${data.SHELL}"'''
keepgoing: false
pluginConfig:
LogFilter:
- config:
logData: 'false'
regex: ^(SHELL|USER|PWD)\s*=\s*(.+)$
type: key-value-data
strategy: node-first
uuid: 1da43d9b-691d-437b-882e-8fbee2790c73
在调试模式下使用作业输出编辑 2:
我已分别更改了 Rundeck 机器的 ip 和“localhost”和“node ip”的节点,以及“用户名”的真实用户名。
编辑 3:
我已经弄清楚问题所在了。这是force_color = 1我添加到 ansible.cfg 文件中以在 Rundeck 中获得彩色输出的行。如果我删除该部分,键值数据功能也可以在远程节点上完美运行。我想这是一个错误。