Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ansible 远程节点上的命令和全局日志筛选器在Rundeck中出现问题_Ansible_Rundeck - Fatal编程技术网

Ansible 远程节点上的命令和全局日志筛选器在Rundeck中出现问题

Ansible 远程节点上的命令和全局日志筛选器在Rundeck中出现问题,ansible,rundeck,Ansible,Rundeck,当我在远程节点上执行带有一些特殊字符的命令(如|)时,我遇到了一个问题。例如,如果我在本地运行ls/var/log/| grep rundeck,则结果如中所示是正确的,而在节点中出现错误(该节点还安装了rundeck,并且存在文件夹“rundeck”,因此命令应该可以工作) 在创建全局日志筛选器(如键值数据)时,我也会遇到同样的问题。我想获取正在使用的shell,因此我创建了一个带有键值数据的作业,然后我添加了第一步,其中包括运行命令env,第二步,echo'shell是“${Data.she

当我在远程节点上执行带有一些特殊字符的命令(如
|
)时,我遇到了一个问题。例如,如果我在本地运行
ls/var/log/| grep rundeck
,则结果如中所示是正确的,而在节点中出现错误(该节点还安装了rundeck,并且存在文件夹“rundeck”,因此命令应该可以工作)

在创建全局日志筛选器(如键值数据)时,我也会遇到同样的问题。我想获取正在使用的shell,因此我创建了一个带有键值数据的作业,然后我添加了第一步,其中包括运行命令
env
,第二步,
echo'shell是“${Data.shell}”
,以显示我从日志中获取的变量(从中提取的示例)。它在localhost中运行良好,但在选择远程节点时不会捕获任何数据。这可以分别在和中看到

我想知道这是一个bug,还是我在远程执行某些操作时做错了什么。我使用了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
包含键值数据的作业。本地工作,远程不捕获任何数据。

- 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”,并更改了“user name”的真实用户名

编辑3:


我已经知道问题出在哪里了。这是我添加到ansible.cfg文件的
force_color=1
行,以在Rundeck中获得彩色输出。如果删除该部分,那么键值数据功能也可以在远程节点上完美地工作。我猜这是一个bug。

关于第一个问题,似乎是一个Ansible插件bug,我在这里打开了一个问题来跟进:

关于第二个问题,我做了一个有效的示例,看一下,只需将“分派到节点”更改为您的节点:


节点
真的
假的
提升
假的
1.
真的
29c0cb64-681c-4888-b2a8-f9eb02322155
信息
你好世界
假的
姓名:192.168.33.2*
真的
真的
第二期。
环境
真的
^(SHELL)\s*=\s*(.+)$
29c0cb64-681c-4888-b2a8-f9eb02322155
1) 这是数据的价值


2) 请回答。

您能提供一个答案吗?提前谢谢,再见。可能重复。@Zeitounator我在yaml中添加了两个作业定义。很抱歉延迟响应,我的Rundeck计算机出现问题,无法访问。@Vladimir Botka,这可能就是发生的情况,Rundeck必须使用命令模块。是否可以将其更改为shell?询问。非常感谢您的帮助。我将跟踪您就第一个错误打开的问题的进度。相对于第二个,我尝试了你分享的工作定义,我遇到了与我在主要评论中描述的相同的问题,没有捕获数据。证据:1)命令步骤:2)剧本步骤:。我看到你的输出是黑色的,而我的是绿色的。我获得黑色输出的唯一时间是在本地执行作业时(键值数据不起作用)。我不知道这是否有什么关系。我编辑了我的主要帖子,其中有一个问题导致键值数据无法工作。它是ansible.cfg文件中的线force_color=1。谢谢你的帮助。