首页 > 解决方案 > community.aws.elb_application_lb:如何在侦听器中为新添加的规则分配下一个优先级

问题描述

我创建了一个 ansible playbook,它通过 community.aws.elb_application_lb 插件向负载均衡器侦听器添加新规则。

- name: Create the listener rule in the load balancer
  community.aws.elb_application_lb:
    ...
    listeners:
      - Protocol: "{{ listener.protocol }}"
        ...
        Rules:
          - Conditions:
              - Field: host-header
                Values: "{{ domains }}"
            Actions:
              - TargetGroupName: "{{ target_group_name }}"
                Type: forward
            Priority: "{{ some_value }}"

看起来 Priority 参数是必需的,并且必须是整数。对于任何新添加的规则,我需要找到一种方法来告诉插件为新添加的规则设置下一个优先级。例如,如果我在侦听器中定义了 10 条规则,则新添加的规则将具有优先级 11。

我知道我可以通过调用community.aws.elb_application_lb_info插件并解析生成的 json 以获得最后一个优先级并添加 1 来计算最后一个优先级。我已经尝试过了,但问题是我的剧本可能会并行运行。因此,在并行执行中,运行中的 playbook 可能都确定下一个优先级是 11(因为在它们收集有关负载均衡器侦听器的信息时,定义了 10 条规则)。所以两者都添加了一个优先级为 11 的新规则,最后一个剧本基本上覆盖了之前剧本定义的规则。

如果剧本按顺序而不是并行运行,这个问题就会消失。但不幸的是,要求是它们应该能够并行运行。

那么,是否有可能只告诉插件将下一个优先级分配给新添加的规则?或者任何其他方法来避免覆盖新规则?

标签: amazon-web-servicesansibleamazon-elb

解决方案


推荐阅读