Изменение порядка инвентаризации Ansible Dynami c в зависимости от состояния проверки работоспособности целевой группы. - PullRequest
0 голосов
/ 12 марта 2020

Я пытаюсь настроить непрерывное развертывание в кластере с двумя узлами AWS EC2 за ALB через Ansible. Грубый процесс идет так для каждого последовательного узла -

+----------+   +----------+   +----------+
|Remove app|   |Redeploy  |   |Add back  |
|from load |-->|new app   |-->|to load   |
|balancer  |   |          |   |balancer  |
+----------+   +----------+   +----------+

Я использую инвентарь Ansible dynamici c, чтобы выбрать мои узлы, и они по умолчанию сортируются по IP-адресу. Теперь рассмотрим эти 4 сценария ios непосредственно перед развертыванием -

  1. Оба узла исправны.
  2. Узел № 1 неработоспособен, а узел № 2 исправен.
  3. Узел № 1 исправен, а узел № 2 нездоров.
  4. Оба узла нездоровы.

Теперь в сценарии № 3 я бы в итоге удалил единственный исправный узел. Как мне избежать этого?

Ответы [ 2 ]

0 голосов
/ 13 марта 2020

ОК, поскольку у вас есть флаг healthy, используйте его для включения роли update:

- hosts: all
  gather_facts: yes
  tasks:
  - include_role:
      role: update
    when: not healthy
  - include_role:
      role: update
    when: healthy

Таким образом, нездоровые сначала выполняются.

0 голосов
/ 12 марта 2020

либо добавьте в свою игровую книгу шаг, который выполняет проверку работоспособности, которая не позволяет вам удалить узел из loadbalancer, если оставшееся количество исправных узлов будет меньше, чем один

или

выяснить, как в первую очередь удалить нездоровые узлы из балансировщика нагрузки. Можете ли вы разбить узлы на группы по статусу проверки работоспособности, а затем сначала обработать нездоровые узлы? Или поочередно изменить порядок сортировки так, чтобы он выполнялся по статусу проверки работоспособности, а не по IP-адресу?

В качестве альтернативной методологии - вы не можете добавлять новые узлы до удаления старых?

...