ansible server : 10.20.30.200
manager        : 10.20.30.204
worker1        : 10.20.30.205
worker2        : 10.20.30.206

<ansible 서버의 node구성 >

⇒ manager 그룹 , worker1 그룹 , dockernode 그룹 (여러 그룹을 지정)

cd /etc/ansible/hosts
[manager]
10.20.30.204
[worker1]
10.20.30.205
[worker2]
10.20.30.206

[dockernode:children]
worker1
worker2

< ansible 서버의 playbook>

https://markontech.com/devops/install-docker-using-ansible/ 참고 (도커설치)

https://intrepidgeeks.com/tutorial/install-docker-and-docker-soup-using-ansible-roles (도커컴포즈설치)

---
- name: docker service
  hosts: all     => 대상은 모두 모든 그룹을 묶은 dockernode로 지정해도 됨 
  become: yes
  gather_facts: false

  tasks:
  - name: Install Docker   => docker 설치 
    ansible.builtin.shell: cd ~ && curl -fsSL <https://get.docker.com> -o get-docker.sh && sudo sh get-docker.sh

  - name: install dockercompose   => docker-compose설치 
    shell: sudo curl -L <https://mirrors.aliyun.com/docker-toolbox/linux/compose/1.17.0/docker-compose-Linux-x86_64> > /usr/local/bin/docker-compose

  - name: sudo chmod +x /usr/local/bin/docker-compose
    shell: sudo chmod +x /usr/local/bin/docker-compose

- hosts: manager  => 대상은 manager그룹
  tasks:
  - command: "docker swarm init --advertise-addr 10.20.30.204"    => 스웜클러스터구현 

- hosts: manager 
  gather_facts: true
  tasks:
  - command: "docker swarm join-token -q worker"     
    register: swarm_token
  - set_fact: swarmtoken="{{ swarm_token.stdout }}"
=>토큰을 출력해서 변수에 담기 

- name: Join Swarm Nodes      =>worker, manager 조인 
  hosts: dockernode
  tasks:
    - command: docker swarm join --advertise-addr 10.20.30.204 --token "{{ hostvars[groups['manager'][0]].swarmtoken }}" 10.20.30.204:2377

- name: overlay network      => 오버레이 네트워크 구성 
  hosts: manager
  tasks:
  - command: "docker network create --driver=overlay --attachable wweb"

  - name: store file to remote server  => ansible서버에 있는 파일을 원격지(manager)에 복사 
    copy:
      src: /etc/ansible/docker-wp.yml
      dest: /root

  - name: stack    => 도커스택배포 
    shell: docker stack deploy --compose-file=docker-wp.yml wweb