Я новичок в Рундеке. Я хочу иметь возможность передать файл (в качестве обязательного варианта) в вызов задания Rundeck, а затем заставить Rundeck загрузить этот файл на удаленный узел, а затем запустить команду на удаленном узле, чтобы что-то сделать с файлом. Это работает со значением по умолчанию rundeck
узел, но не удаленный узел.
У меня есть экземпляр Rundeck (версия 3.0.21-20190424) в сети, и он успешно взаимодействует с одним внешним узлом. В документация объясняет, как получить текст параметры, передаваемые через соединение SSH в качестве переменных среды на удаленный узел, но ничего не говорит о том, как получить файл параметр для передачи удаленному узлу.
Это мое определение работы:
- defaultTab: summary
description: Test Job
executionEnabled: true
id: 62fdba6d-70c8-4174-9bab-dde364076e8c
loglevel: INFO
name: test2
nodeFilterEditable: false
nodefilters:
dispatch:
excludePrecedence: true
keepgoing: false
rankOrder: ascending
successOnEmptyNodeFilter: false
threadcount: '1'
filter: .*
nodesSelectedByDefault: true
options:
- description: This is an example of a text option.
name: example_text_option
- description: This is an example file option.
name: example_file_option
required: true
type: file
scheduleEnabled: true
sequence:
commands:
- fileExtension: sh
script: |-
#!/usr/bin/env bash
echo "hostname: $(hostname)"
echo "PWD: $PWD"
echo ----
echo "RD_OPTION_EXAMPLE_FILE_OPTION (UUID): $RD_OPTION_EXAMPLE_FILE_OPTION"
echo "RD_FILE_EXAMPLE_FILE_OPTION_FILENAME (Original file name): $RD_FILE_EXAMPLE_FILE_OPTION_FILENAME"
echo "RD_FILE_EXAMPLE_FILE_OPTION_SHA (SHA256 has of file): $RD_FILE_EXAMPLE_FILE_OPTION_SHA"
echo ----
echo "option.example_file_option: @option.example_file_option@"
echo "file.example_file_option: @file.example_file_option@"
echo "file.example_file_option.fileName: @file.example_file_option.fileName@"
echo "file.example_file_option.sha: @file.example_file_option.sha@"
echo ----
ls -l @file.example_file_option@
keepgoing: false
strategy: node-first
uuid: 62fdba6d-70c8-4174-9bab-dde364076e8c
Это результат работы на rundeck
узел:
hostname: rundeck
PWD: /home/rundeck
----
RD_OPTION_EXAMPLE_FILE_OPTION (UUID): 8c370949-51d8-467a-8f2d-b80774469e8b
RD_FILE_EXAMPLE_FILE_OPTION_FILENAME (Original file name): 2aOErzD.jpg
RD_FILE_EXAMPLE_FILE_OPTION_SHA (SHA256 has of file): b5e490d0f96d033367b8a4addef58b7e2904ea3c7465b2f801b600443ef562ec
----
option.example_file_option: 8c370949-51d8-467a-8f2d-b80774469e8b
file.example_file_option: /home/rundeck/var/upload/8c370949-51d8-467a-8f2d-b80774469e8b
file.example_file_option.fileName: 2aOErzD.jpg
file.example_file_option.sha: b5e490d0f96d033367b8a4addef58b7e2904ea3c7465b2f801b600443ef562ec
----
-rw-r--r-- 1 rundeck rundeck 115069 Sep 3 15:20 /home/rundeck/var/upload/8c370949-51d8-467a-8f2d-b80774469e8b
Это результат работы на удаленном узле:
hostname: test_node
PWD: /home/rundeck
----
RD_OPTION_EXAMPLE_FILE_OPTION (UUID): 8c370949-51d8-467a-8f2d-b80774469e8b
RD_FILE_EXAMPLE_FILE_OPTION_FILENAME (Original file name): 2aOErzD.jpg
RD_FILE_EXAMPLE_FILE_OPTION_SHA (SHA256 has of file): b5e490d0f96d033367b8a4addef58b7e2904ea3c7465b2f801b600443ef562ec
----
option.example_file_option: 8c370949-51d8-467a-8f2d-b80774469e8b
file.example_file_option: /home/rundeck/var/upload/8c370949-51d8-467a-8f2d-b80774469e8b
file.example_file_option.fileName: 2aOErzD.jpg
file.example_file_option.sha: b5e490d0f96d033367b8a4addef58b7e2904ea3c7465b2f801b600443ef562ec
----
ls: cannot access '/home/rundeck/var/upload/8c370949-51d8-467a-8f2d-b80774469e8b': No such file or directory
Failed: NonZeroResultCode: Remote command failed with exit status 2`
Очевидно, что, вероятно, можно сделать это в несколько этапов, то есть скопировать файл с узла rundeck на узел назначения, но это похоже на то, что Rundeck должен автоматизировать для меня. Кроме того, это кажется очень обычным делом, поэтому я не уверен, почему мне так сложно найти какую-либо информацию об этом.
Любые предложения приветствуются.
В конфигурации вашего проекта настройте SSH в качестве исполнителя узла по умолчанию и настройте SCP в качестве копира файлов по умолчанию. Затем создайте задание, в котором есть шаг копирования файла, за которым следует шаг команды («Выполнить удаленную команду»). Вам также потребуется настроить соответствующий источник узла для проекта. Выглядит это так: Настройка задания - рабочий процесс
- defaultTab: nodes
description: ''
executionEnabled: true
id: c7579365-98a9-4503-8192-149e41bfd711
loglevel: INFO
name: Copy File
nodeFilterEditable: false
nodefilters:
dispatch:
excludePrecedence: true
keepgoing: false
rankOrder: ascending
successOnEmptyNodeFilter: false
threadcount: '1'
filter: group:dev site:auburn service:bioraft3
nodesSelectedByDefault: true
options:
- name: File
type: file
scheduleEnabled: true
sequence:
commands:
- configuration:
destinationPath: /tmp/${file.File.fileName}
echo: 'true'
recursive: 'false'
sourcePath: ${file.File}
nodeStep: true
type: copyfile
- exec: cat /tmp/${file.File.fileName}
keepgoing: false
strategy: node-first
uuid: c7579365-98a9-4503-8192-149e41bfd711