如何使用Ansible docker_swarm 添加master节点

How to use Ansible docker_swarm to add master nodes

我正在尝试使用 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 是集群初始化的领导者。

如何正确使用。文档不是很清楚。

谢谢

根据文档:

- 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' ]

在初始化新的 swarm 集群时,您不必 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"