Как использовать Ansible docker_swarm для добавления мастер-узлов

Я пытаюсь добавить три главных узла с помощью Ansible.

- name            : Init a new swarm with default parameters
  community.general.docker_swarm:
    advertise_addr: "{{ docker_swarm_master_ip }}"
    state         : present
  register        : swarm_info
  when            : 
                  - ansible_eth1.ipv4.address == docker_swarm_master_ip

- name            : Add master nodes
  community.general.docker_swarm:
    advertise_addr: docker_swarm_master_ip
    remote_addrs  : "{{ swarm_master_nodes }}"
    join_token    : "{{ swarm_info.swarm_facts.JoinTokens.Manager }}"
    state         : join    
  when            : 
                  - inventory_hostname == "node1"

Это не добавляет узлы в список swarm_master_nodes Нет ошибок. node1 — это лидер, в котором был инициализирован рой.

Как его правильно использовать. Документация не очень понятна.

Спасибо

Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
0
0
675
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Согласно документации:

- name: Init a new swarm with default parameters
  community.general.docker_swarm:
    state: present

- name: Add nodes
  community.general.docker_swarm:
    state: join
    advertise_addr: 192.168.1.2
    join_token: SWMTKN-1--xxxxx
    remote_addrs: [ '192.168.1.1:2377' ]

Вам не нужно advertise_addr при инициализации нового роевого кластера. Кроме того, remote_addrs должен быть IP-адресом главного узла.

Итак, это должно быть то, что вы хотите:

- name            : Init a new swarm with default parameters
  community.general.docker_swarm:
    state         : present
  register        : swarm_info
  when            : 
                  - ansible_eth1.ipv4.address == docker_swarm_master_ip

- name            : Add master nodes
  community.general.docker_swarm:
    advertise_addr: "{{ node1 }}"
    remote_addrs  : ["{{ docker_swarm_master_ip }}"]
    join_token    : "{{ swarm_info.swarm_facts.JoinTokens.Manager }}"
    state         : join    
  when            : 
                  - inventory_hostname == "node1"

Без addvertise_addr как я могу точно указать, какой узел должен быть лидером? Да, он будет работать на первом запущенном удаленном хосте. Если на вашей машине много сетевых интерфейсов, это необходимо указать. В противном случае он будет жаловаться. remote_addrs также должен быть IP-адрес главного узла? Тогда где он найдет узлы, чтобы присоединиться к рою? В документации написано Remote address of one or more manager nodes of an existing Swarm to connect to. Used with state=join.. advertise_addr должен быть узлом swarm init. remote_addrs содержит адрес для соединения узлов, не так ли?

CodeWeed 25.12.2020 21:36

Я ничего не нашел об этом. Что я сделал, так это проверил некоторые коды из галактики Ansible, чтобы увидеть, как они реализуют рой докеров с помощью ansible. Я надеюсь, что один может вам помочь.

Bruno Criado 26.12.2020 01:12

Это документация по параметрам. Тем не менее, я ценю ваше время. Спасибо за ссылку, которая помогла.

CodeWeed 26.12.2020 01:30

Другие вопросы по теме