Мне нужно загрузить файл с веб-адреса и загрузить его на удаленный сервер, у которого нет доступа в Интернет.
- Rundeck загружает файл по локальному пути wget, а затем отправляет файл на целевой сервер с помощью SSH.
- Rundeck для выполнения сценария на удаленном узле, чтобы раздуть файл, скопированный с помощью вышеуказанного шага, и выполнить другие служебные действия (это сценарий оболочки bash)
У меня очень мало знаний об использовании Rundeck.
Шаг первый, я сделал это. Файл загружается в rundeck с URL-адреса и отправляется на целевой сервер.
[ -d "/apps/support/dump/CNRLS2" ] && rm -r "/apps/support/dump/CNRLS2"
echo "Creating workspace folder"
mkdir -p /apps/support/dump/CNRLS2
cd /apps/support/dump/CNRLS2
export ArtifactURL="https://artifact.dummy.dummyurl.com/artifactory/generic-release/XRSL/CNRLS/develop/113/RLAWESOME-1379.tar.gz"
echo "Downloading Artifact at $ArtifactURL from Artifactory"
wget -q $ArtifactURL --no-check-certificate
export packageName=$(echo "${ArtifactURL##*/}")
echo $packageName
scp -r /apps/support/dump/CNRLS2/*.* [email protected]:/xmodules/fixes/migreq/
Это подтолкнуло мой пакет к удаленному серверу /xmodules/fixes/migreq/
Теперь Шаг второй
Я использую встроенный доступный файл в качестве следующего шага для выполнения распаковки на целевом узле. Анзибл переходит на целевой узел и вызывает unpack.sh, Я не могу передать значение packageName с предыдущего шага встроенному анзиблю.
---
- hosts: "{{host_name}}"
remote_user: "{{run_user}}"
tasks:
- name: Unpack the package
shell: sh /home/yurtdxx67a/mig/unpack.sh "{{$packageName}}"
Любая идея будет для меня большим подспорьем.
Изменить: 12 февраля 2020 г.
В моем случае заменяемые переменные находятся в пределах "ansible-extra-param"
<command>
<step-plugin type='com.batix.rundeck.plugins.AnsiblePlaybookInlineWorkflowStep'>
<configuration>
<entry key='ansible-become' value='false' />
<entry key='ansible-disable-limit' value='false' />
<entry key='ansible-extra-param' value='-i /tmp/workspace/CNRLS/hosts -e host_name=myhost -e run_user=${data.runUser} -e package_name=${data.packageName} --limit ${data.nodeIP} --ssh-extra-args='-o StrictHostKeyChecking=no' ' />
<entry key='ansible-playbook-inline' value='--- - hosts: "{{host_name}}" remote_user: "{{run_user}}" tasks: - name: Check for connectivity shell: sh /home/yurtdxx67a/mig/unpack.sh "{{package_name}}" ' />
</configuration>
</step-plugin>
</command>
Я хочу использовать эти переменные.
run_user = $ {data.runUser} -e package_name = $ {data.packageName} --limit $ {data.nodeIP}
эта переменная имеет значение. когда я показываю echo $ {data.packageName}; эхо $ {data.runUser}; эхо $ {data.nodeIP};
Я не уверен, как использовать эту переменную как часть аргумента ansible-extra-param
Еще раз спасибо
Спасибо. Двиджа