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

无法优化含when子句的Ansible代码,需将两段YAML合并为单块

合并后的Ansible任务代码

可以通过定义系统与包信息的映射关系,将两个任务合并为一个,同时保留原有的系统适配逻辑:

- name: Download Amazon CloudWatch Agent
  get_url:
    url: "{{ cloudwatch_agent_packages[ansible_facts['ansible_distribution']].url }}"
    dest: "{{ cloudwatch_agent_packages[ansible_facts['ansible_distribution']].dest }}"
  vars:
    cloudwatch_agent_packages:
      Debian:
        url: "https://s3.amazonaws.com/amazoncloudwatch-agent/debian/amd64/latest/amazon-cloudwatch-agent.deb"
        dest: "/tmp/temp_files/amazon-cloudwatch-agent.deb"
      RedHat:
        url: "https://s3.amazonaws.com/amazoncloudwatch-agent/redhat/amd64/latest/amazon-cloudwatch-agent.rpm"
        dest: "/tmp/temp_files/amazon-cloudwatch-agent.rpm"
  when: ansible_facts['ansible_distribution'] in ['Debian', 'RedHat']

说明

  • 通过vars定义cloudwatch_agent_packages字典,将不同系统对应的下载链接和目标路径做统一映射
  • 利用ansible_distribution的值作为字典键,动态匹配对应系统的包信息
  • 最后通过when条件限定只在Debian或RedHat系统上执行该任务,和原逻辑保持一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 18:42:43