79 lines
2.6 KiB
YAML
79 lines
2.6 KiB
YAML
---
|
|
- hosts: swarm_master
|
|
become: true
|
|
|
|
roles:
|
|
- role: geerlingguy.swap
|
|
- role: geerlingguy.docker
|
|
- role: common
|
|
|
|
tasks:
|
|
- name: Debug all relevant variables
|
|
debug:
|
|
msg: |
|
|
=== SWARM JOIN DEBUG INFO ===
|
|
Current host: {{ inventory_hostname }}
|
|
Current host IP: {{ ansible_host }}
|
|
|
|
Master group hosts: {{ groups['swarm_master'] }}
|
|
First master: {{ groups['swarm_master'][0] }}
|
|
|
|
Master hostvars:
|
|
- ansible_host: {{ hostvars[groups['swarm_master'][0]]['ansible_host'] }}
|
|
- inventory_hostname: {{ hostvars[groups['swarm_master'][0]]['inventory_hostname'] }}
|
|
|
|
Remote address calculation:
|
|
- Raw master ansible_host: {{ hostvars[groups['swarm_master'][0]]['ansible_host'] }}
|
|
- Fallback to hostname: {{ groups['swarm_master'][0] }}
|
|
- Final address: {{ hostvars[groups['swarm_master'][0]]['ansible_host'] | default(groups['swarm_master'][0]) }}
|
|
- With port: {{ hostvars[groups['swarm_master'][0]]['ansible_host'] | default(groups['swarm_master'][0]) }}:2377
|
|
|
|
- name: Init a new swarm with default parameters
|
|
community.docker.docker_swarm:
|
|
state: present
|
|
advertise_addr: "{{ ansible_eth1.ipv4.address }}"
|
|
listen_addr: "{{ ansible_eth1.ipv4.address }}"
|
|
|
|
- name: print listen addr
|
|
debug:
|
|
msg: "{{ ansible_eth1.ipv4.address }}"
|
|
|
|
- name: Get Docker Swarm information
|
|
community.docker.docker_swarm_info:
|
|
register: swarm_info
|
|
|
|
- name: Save worker join token to file
|
|
copy:
|
|
content: "{{ swarm_info.swarm_facts.JoinTokens.Worker }}"
|
|
dest: /tmp/swarm_worker_token
|
|
mode: '0600'
|
|
|
|
- name: Save manager join token to file
|
|
copy:
|
|
content: "{{ swarm_info.swarm_facts.JoinTokens.Manager }}"
|
|
dest: /tmp/swarm_manager_token
|
|
mode: '0600'
|
|
|
|
# Copy tokens to host filesystem
|
|
# - name: Fetch worker join token to host
|
|
# fetch:
|
|
# src: /tmp/swarm_worker_token
|
|
# dest: ./tokens/swarm_worker_token
|
|
# flat: yes
|
|
|
|
# - name: Fetch manager join token to host
|
|
# fetch:
|
|
# src: /tmp/swarm_manager_token
|
|
# dest: ./tokens/swarm_manager_token
|
|
# flat: yes
|
|
# - name: Create Portainer data volume
|
|
# community.docker.docker_volume:
|
|
# name: portainer_data
|
|
# state: present
|
|
|
|
# - name: Deploy Portainer stack from compose file
|
|
# community.docker.docker_stack:
|
|
# name: portainer
|
|
# state: present
|
|
# compose:
|
|
# - "{{ lookup('file', 'files/docker-base-stack.yml') | from_yaml }}" |