如何通过ADF调用虚拟机内的脚本?含其他替代方案咨询
通过Azure服务调用VM内Bash脚本的方案
一、Azure Data Factory(ADF)实现方式
1. 自定义活动 + 自托管集成运行时
- 在目标VM上部署自托管集成运行时(Self-hosted IR),完成ADF与VM的网络连通配置。
- 在ADF管道中添加「自定义活动」,将计算目标指定为该自托管IR。
- 在活动的「命令」字段中输入调用脚本的指令,例如:
bash /opt/scripts/your_download_script.sh,运行管道后ADF会在VM上执行该脚本。
2. SSH活动
- 确保VM开启SSH服务,且NSG规则允许ADF访问VM的SSH端口(默认22)。
- 在ADF中添加「SSH活动」,配置VM的IP、端口、登录凭据(用户名+密码/SSH密钥)。
- 在「命令」框中输入脚本调用命令,例如:
bash /home/user/download_files.sh,活动会通过SSH远程执行脚本。
二、Azure Functions实现方式
- 创建PowerShell或Python类型的Function,集成SSH客户端工具:
- Python可使用
paramiko库建立SSH连接,执行脚本命令; - PowerShell可借助
PSSession模块实现远程SSH调用。
- Python可使用
- 将VM的登录凭据存储在Azure Key Vault中,Function通过访问密钥安全获取凭据,避免硬编码。
- 可配置HTTP触发器,让其他服务或手动请求触发Function执行脚本。
三、Logic Apps实现方式
- 在Logic Apps工作流中添加「SSH连接器」,配置VM的SSH连接信息。
- 添加「运行命令」动作,输入调用Bash脚本的指令,例如:
bash /path/to/your_script.sh。 - 可结合定时触发器或HTTP触发器,实现按需/定时执行脚本的逻辑。
四、Databricks实现方式
- 在Databricks集群中确保已安装SSH客户端(多数Linux集群默认自带)。
- 在Notebook或Databricks作业中执行Shell命令,通过SSH连接VM并运行脚本,示例命令:
ssh -i /path/to/private_key.pem vm-user@vm-public-ip 'bash /opt/scripts/download_script.sh' - 可将该命令封装为Databricks作业,设置定时调度或通过API触发执行。
五、其他可选方案
- Azure Automation Runbook:创建PowerShell/Python Runbook,利用SSH连接VM执行脚本,适合周期性任务,自带监控和告警能力。
- VM自定义脚本扩展:若脚本无需频繁触发,可通过Azure门户或ARM模板部署自定义脚本扩展,直接在VM上执行脚本,适合一次性配置场景。
内容的提问来源于stack exchange,提问作者Anonymous
相关产品推荐
相关产品推荐

