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

如何在单个Ansible任务中按版本执行不同OC命令?

可以合并,给你两种实用的实现方案

完全可以把这两个任务合并成单个任务,核心思路是根据vars.version的值动态选择命名空间,以下是两种常用方案:

方案一:字典映射(适合多版本扩展)

先定义版本与命名空间的映射关系,后续新增版本时只需更新字典,维护起来更方便:

- name: fetch configuration
  command: "oc get disk -n {{ ns_map[vars.version] }} -o json"
  vars:
    ns_map:
      "2.1": "xyz"
      "3.0": "abc"
  when: vars.version in ns_map.keys()  # 仅当版本在映射表里才执行,避免无效命令
  register: oc_result

方案二:直接用Jinja2条件表达式(轻量简洁)

如果只有这两个版本的简单判断,直接在命令中嵌入条件表达式更省事:

- name: fetch configuration
  command: "oc get disk -n {{ 'xyz' if vars.version == '2.1' else 'abc' }} -o json"
  when: vars.version in ['2.1', '3.0']  # 限制仅指定版本执行
  register: oc_result

两种方案都会根据vars.version的值自动切换命名空间执行命令,执行结果都会存到oc_result变量里,和原来两个任务的效果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 09:36:23