如何在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
说明:
- 定义
ansibleVars参数为object类型,默认值为空字典,用于接收主模板传递的字典变量。 - 通过
UsePythonVersion@0任务指定使用3.x版本的Python环境。 - 执行脚本安装
ansible-core依赖包。 - 将接收的字典变量写入
vars.yml文件,作为Ansible的外部变量源。 - 使用
Ansible@0任务运行指定路径下的Playbook,通过-e @vars.yml加载生成的变量文件,开启详细日志输出(-vv),并设置标准错误输出不触发任务失败。
内容的提问来源于stack exchange,提问作者bbaassssiiee
相关产品推荐
相关产品推荐

