【问题标题】:Deleting ECS services with Ansible使用 Ansible 删除 ECS 服务
【发布时间】:2021-03-12 19:44:45
【问题描述】:

我正在尝试使用 Ansible 2.9.13 删除四个 ECS 服务。我知道 Ansible 无法删除运行任务的 ECS 服务,所以我尝试将 desired_count 设置为“0”,然后将其删除:

- name: Set Service Tasks to 0
  ecs_service:
    name:  "{{service}}"
    state: present
    desired_count: 0
    cluster:  "{{cluster_name}}"
    task_definition: "{{service_data.services[0].taskDefinition}}"
    region: "{{region}}"

- name: Delete OLD ECS service
  ecs_service:
    state: absent
    name:  "{{service}}"
    cluster:  "{{cluster_name}}"
    region: "{{region}}"

它适用于第一个服务,但在第二个服务上失败并出现此错误:

"msg": "It is not possible to update the load balancers of an existing service"

有人遇到过这个问题吗?有什么绕过它的建议吗?

【问题讨论】:

  • 有点google-fu说容器端口整数有时被读成字符串。我通过获取信息并将其添加回代码中指定为containerPort: "{{service_data.services[0].loadBalancers[0].containerPort | int}}",但我仍然遇到相同的错误。 :(
  • 您好,首先删除 ALB 规则,然后是目标组,然后是 AWS ECS 服务。

标签: amazon-web-services ansible yaml amazon-ecs


【解决方案1】:

好吧,我想我明白了。它一直认为我正在尝试更改负载均衡器,但我没有。不知道为什么。所以我选择获取所有 ALB 信息,然后直接将其提供给模块。成功了。

由于四个服务中只有两个实际上有负载均衡器,这带来了另一个问题。它会在没有的情况下失败。通过添加条件来解决这个问题。所以这是最后的混乱:

- name: Get Service Data
  ecs_service_info:
    cluster: "{{cluster_name}}"
    region: "{{region}}"
    service: "{{service}}"
    details: true
  register: service_data

- set_fact: with_lb=true
  when: service_data.services[0].loadBalancers|length == 1

- set_fact: with_lb=false
  when: service_data.services[0].loadBalancers|length == 0

- name: Set Tasks with ALB to 0
  ecs_service:
    name: "{{service}}"
    state: present
    desired_count: 0
    cluster: "{{cluster_name}}"
    load_balancers:
      - containerPort: "{{service_data.services[0].loadBalancers[0].containerPort | int}}"
        containerName: "{{service_data.services[0].loadBalancers[0].containerName}}"
        targetGroupArn: "{{service_data.services[0].loadBalancers[0].targetGroupArn}}"
    task_definition: "{{service_data.services[0].taskDefinition}}"
    region: "{{region}}"
  when: with_lb|bool

- name: Set Remaining Tasks to 0
  ecs_service:
    name: "{{service}}"
    state: present
    desired_count: 0
    cluster: "{{cluster_name}}"
    task_definition: "{{service_data.services[0].taskDefinition}}"
    region: "{{region}}"
  when: not with_lb|bool

- name: Delete OLD ECS service
  ecs_service:
    state: absent
    name:  "{{service}}"
    cluster:  "{{cluster_name}}"
    region: "{{region}}"

干杯!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-14
    • 2018-08-29
    • 2019-12-15
    • 2016-05-04
    相关资源
    最近更新 更多