You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure DevOps管道模板中传递字典?求可用示例

Azure DevOps管道模板传递字典变量至Ansible模板实现示例

需求:在Azure DevOps管道模板中,将变量以字典形式传递给子模板,子模板通过Ansible任务处理字典内所有键值对,使用type: object类型定义参数。

main-template.yml(主管道模板)

trigger:
- main

stages:
- stage: Deploy
  jobs:
  - job: DeployJob
    pool:
      vmImage: 'ubuntu-latest'
    steps:
    - template: ansible-template.yml
      parameters:
        ansibleVars:
          var1: value1
          var2: value2

说明:主模板设置main分支为触发源,在Deploy阶段的DeployJob任务中调用ansible-template.yml子模板,并以字典结构传递ansibleVars参数,包含var1和var2两组键值对。

ansible-template.yml(Ansible处理子模板)

parameters:
- name: ansibleVars
  type: object
  default: {}

jobs:
- job: AnsibleJob
  pool:
    vmImage: 'ubuntu-latest'
  steps:
  - task: UsePythonVersion@0
    inputs:
      versionSpec: '3.x'
      addToPath: true

  - script: |
      python -m pip install ansible-core
    displayName: '安装Ansible'

  - script: |
      echo "${{ parameters.ansibleVars }}" > vars.yml
    displayName: '生成变量文件'

  - task: Ansible@0
    displayName: '运行Ansible Playbook'
    inputs:
      ansibleInterface: 'agentMachine'
      playbookPathOnAgentMachine: './ansible/playbook.yml'
      inventoriesAgentMachine: 'file'
      inventoryFileOnAgentMachine: './ansible/inventory/hosts'
      args: -vv -e @vars.yml
    failOnStdErr: false

说明:

  1. 定义ansibleVars参数为object类型,默认值为空字典,用于接收主模板传递的字典变量。
  2. 通过UsePythonVersion@0任务指定使用3.x版本的Python环境。
  3. 执行脚本安装ansible-core依赖包。
  4. 将接收的字典变量写入vars.yml文件,作为Ansible的外部变量源。
  5. 使用Ansible@0任务运行指定路径下的Playbook,通过-e @vars.yml加载生成的变量文件,开启详细日志输出(-vv),并设置标准错误输出不触发任务失败。

内容的提问来源于stack exchange,提问作者bbaassssiiee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 13:26:15