Подробная информация о запланированном задании Rundeck - PullRequest
0 голосов
/ 05 августа 2020

В rundeck (OpenSource v3.3.1 с H2 SQL) есть ли способ просмотреть детали запланированного задания? Для нас важно знать список узлов, на которых будет выполняться задание. Я искал в файлах и в базе данных H2, и я не могу найти узлы или фильтр, используемый для планирования работы.

1 Ответ

0 голосов
/ 05 августа 2020

Вы можете видеть, что на панели «Действия» щелкните любое выполнение (запланированное или нет) и щелкните в «Выводе журнала», вы можете увидеть вся подробная информация о вакансии. Кроме того, вы можете проверить журналы выполнения, обычно по пути /var/lib/rundeck/logs/rundeck/<projectname>/job/<job-id>/logs.

Подробнее об этом можно узнать здесь .

ОБНОВЛЕНИЕ 1: вы можете использовать вызов API прогноза , чтобы проверить задания, которые «должны быть выполнены», я оставляю сценарий, который его использует:

#!/bin/sh

#############################################
echo "Insert the Rundeck Server hostname:"; read -r rundeckServer
echo -e "\nWhich port?:"; read -r rundeckPort
echo -e "\nCopy and Paste the Rundeck API Token:"; read -r rundeckApitoken

#############################################
# to run unatended mode, please comment the code above and uncomment the code below, and replace with your props
#############################################
# rundeckServer="node01.rundeck.local"
# rundeckPort="4440"
# rundeckApitoken="P0K0EvIAoWkAbmvj3JnlelmwaVhF5AJd"
#############################################
# Options Variables
#############################################
rundeckProtocol="http"
rundeckApiversion="31"
rundeckApiformat="json"
curlOptions="-s"
#############################################
echo
echo "The following Jobs are Scheduled:"
echo

for projectName in $(curl -X "GET" "$curlOptions" -H "Accept: application/$rundeckApiformat" -H "Content-Type: application/$rundeckApiformat" -H "X-Rundeck-Auth-Token: $rundeckApitoken" "$rundeckProtocol"://"$rundeckServer":"$rundeckPort"/api/"$rundeckApiversion"/projects|sed 's/,/\n/g'| grep name | cut -d ":" -f2 | tr -d '"')
    do
        for jobId in $(curl "$curlOptions" -X "GET" -H "Accept: application/$rundeckApiformat" -H "Content-Type: application/$rundeckApiformat" -H "X-Rundeck-Auth-Token: $rundeckApitoken" "$rundeckProtocol"://"$rundeckServer":"$rundeckPort"/api/"$rundeckApiversion"/project/"$projectName"/jobs | sed 's/,/\n/g' | grep id | cut -d ":" -f2 | tr -d '"')
            do
                output=$(curl "$curlOptions" -X "GET" -H "Accept: application/$rundeckApiformat" -H "Content-Type: application/$rundeckApiformat" -H "X-Rundeck-Auth-Token: $rundeckApitoken" "$rundeckProtocol"://"$rundeckServer":"$rundeckPort"/api/"$rundeckApiversion"/job/"$jobId"/forecast?time=7d | grep "futureScheduledExecutions")
                if [ -n "$output" ]
                    then
                        echo $output | sed -r 's/.+("href":".+),.+("futureScheduledExecutions":\[.+\]),.+("project":".+),("name":".+).+/\1\n\3\n\4\n\2/g'
                        echo
                fi
        done
done

ОБНОВЛЕНИЕ 2: Я оставляю более простой вызов API прогноза (требуется jq ).

curl --location --request GET 'http://localhost:4440/api/35/job/your-job-id/forecast' --header 'Accept: application/json' --header 'X-Rundeck-Auth-Token: your-user-token' --header 'Content-Type: application/json' --data-raw '' | jq

Это выводит всю информацию:

{
  "href": "http://localhost:4440/api/35/job/328789d1-986f-4aa2-9013-de8eb6b6df98",
  "id": "328789d1-986f-4aa2-9013-de8eb6b6df98",
  "scheduleEnabled": true,
  "scheduled": true,
  "enabled": true,
  "permalink": "http://localhost:4440/project/ProjectEXAMPLE/job/show/328789d1-986f-4aa2-9013-de8eb6b6df98",
  "group": null,
  "futureScheduledExecutions": [
    "2020-08-06T14:33:00Z"
  ],
  "description": "",
  "project": "ProjectEXAMPLE",
  "name": "ExampleJob"
}

ОБНОВЛЕНИЕ 3: Теперь, объединив информацию о задании экспорта и вызов API прогноза, вы можете получить информацию о задании и узлах. Я оставляю пример сценария:

#!/bin/sh

#####################################################
# rundeck instance values
server="localhost"
port="4440"
api="35"
jobid="328789d1-986f-4aa2-9013-de8eb6b6df98"
token="MhloqezoV3IygvOIA6yzE9TNlzYCbi4m"

info=$(curl -s --location --request GET "http://$server:$port/api/$api/job/$jobid/forecast" --header "Accept: application/json" --header "X-Rundeck-Auth-Token:$token" --header "Content-Type: application/json" | jq)

nodes=$(curl -s --location --request GET "http://$server:$port/api/$api/job/$jobid" --header "Accept: application/xml" --header "X-Rundeck-Auth-Token:$token" --header "Content-Type: application/xml" --data-raw "" | grep -oPm1 "(?<=<filter>)[^<]+")

echo "######################"
echo "Job information: $info"
echo "######################"
echo "Nodes: $nodes"
echo "######################"

Со следующими данными:

######################
Job information: {
  "href": "http://localhost:4440/api/35/job/328789d1-986f-4aa2-9013-de8eb6b6df98",
  "id": "328789d1-986f-4aa2-9013-de8eb6b6df98",
  "scheduleEnabled": true,
  "scheduled": true,
  "enabled": true,
  "permalink": "http://localhost:4440/project/ProjectEXAMPLE/job/show/328789d1-986f-4aa2-9013-de8eb6b6df98",
  "group": null,
  "futureScheduledExecutions": [
    "2020-08-07T14:33:00Z"
  ],
  "description": "",
  "project": "ProjectEXAMPLE",
  "name": "ExampleJob"
}
######################
Nodes: localhost
######################

ОБНОВЛЕНИЕ 4: Данные определения задания «распределяются» по базе данных (H2 или что-то еще). Так, например, если вы настроили Rundeck для MySQL и получаете доступ к базе данных с помощью любого инструмента, фильтр узлов будет сохранен в scheduled_execution таблице.

...