Проблема в Rundeck с командами и фильтрами глобального журнала на удаленных узлах - PullRequest
0 голосов
/ 23 октября 2019

У меня проблема при выполнении команд с некоторыми специальными символами, такими как |, на удаленных узлах. Например, если я запускаю ls /var/log/ | grep rundeck локально, результат будет правильным, как показано в command_locally , тогда как в узле возникает ошибка, которая появляется в command_remotely (на этом узле также установлена ​​Rundeckи папка 'rundeck' существует, поэтому команда должна работать).

Я сталкиваюсь с той же проблемой, когда создаю глобальный фильтр журнала, такой как Key Value Data . Я хочу получить используемую оболочку, поэтому я создаю задание с Key Value Data , затем добавляю первый шаг, который состоит из запуска команды env, и второй, echo 'SHELL is "${data.SHELL}"', чтобы показать переменную, которую я получил из журнала (пример извлечен из здесь ). Он отлично работает в localhost, но не захватывает никаких данных, когда выбран удаленный узел. Это можно увидеть в Key_Value_Data_locally и Key_Value_Data_remotely соответственно.

Я хотел бы знать, если это ошибка, или это я, что я делаю что-то неправильно, когда этоприходит к выполнению чего-то удаленно. Я использую плагин Ansible для Rundeck, это может быть что-то связанное с этим?

РЕДАКТИРОВАТЬ 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 С ВЫХОДОМ ЗАДАНИЯ В РЕЖИМЕ ОТЛАДКИ:

Я изменил ip машины Rundeck и узла для'localhost' и 'node ip' соответственно и реальное имя пользователя для 'username'.

Проблема с командой: вывод в режиме отладки

Key ValueПроблема с данными: вывод в режиме отладки

1 Ответ

0 голосов
/ 31 октября 2019

Что касается первой проблемы, то, похоже, ошибка плагина Ansible, я открыл здесь проблему, чтобы продолжить:

https://github.com/Batix/rundeck-ansible-plugin/issues/255

Что касается второй проблемы, я сделал пример, который работает, возьмитепосмотрите, просто измените «рассылку на узлы» на ваши узлы:

<joblist>
  <job>
    <defaultTab>nodes</defaultTab>
    <description></description>
    <dispatch>
      <excludePrecedence>true</excludePrecedence>
      <keepgoing>false</keepgoing>
      <rankOrder>ascending</rankOrder>
      <successOnEmptyNodeFilter>false</successOnEmptyNodeFilter>
      <threadcount>1</threadcount>
    </dispatch>
    <executionEnabled>true</executionEnabled>
    <id>29c0cb64-681c-4888-b2a8-f9eb02322155</id>
    <loglevel>INFO</loglevel>
    <name>HelloWorld</name>
    <nodeFilterEditable>false</nodeFilterEditable>
    <nodefilters>
      <filter>name: 192.168.33.2.*</filter>
    </nodefilters>
    <nodesSelectedByDefault>true</nodesSelectedByDefault>
    <scheduleEnabled>true</scheduleEnabled>
    <sequence keepgoing='false' strategy='node-first'>
      <command>
        <description>Second Issue.</description>
        <exec>env</exec>
        <plugins>
          <LogFilter type='key-value-data'>
            <config>
              <logData>true</logData>
              <regex>^(SHELL)\s*=\s*(.+)$</regex>
            </config>
          </LogFilter>
        </plugins>
      </command>
      <command>
        <node-step-plugin type='com.batix.rundeck.plugins.AnsiblePlaybookInlineWorkflowNodeStep'>
          <configuration>
            <entry key='ansible-base-dir-path' value='/playbooks' />
            <entry key='ansible-become' value='false' />
            <entry key='ansible-playbook-inline' value='# This playbook prints a simple debug message&#10;- name: Echo &#10;  hosts: farm&#10;&#10;  tasks:&#10;  - name: Print debug message &#10;    debug:&#10;      msg: Hello ${data.SHELL}!&#10;' />
          </configuration>
        </node-step-plugin>
      </command>
    </sequence>
    <uuid>29c0cb64-681c-4888-b2a8-f9eb02322155</uuid>
  </job>
</joblist>

1) это займет данные vaule.

2) pass к ответу.

...