#Ansible 서버에서 id_rsa.pub 생성하기

ssh-kegen
#(엔터 세번)
vi .ssh/id_rsa.pub
#내용을 각 노드의 auth에 복사

#Ansible 서버에서 host 등록하기

#sudo vi /etc/ansible/host
#맨 아래 부분에 작성

[master]
<master EC2의 ip>
ubuntu@<master EC2의 ip>

[worker]
<worker EC2의 ip>
ubuntu<worker EC2의 ip>

#master와 worker의 host를 묶어서 사용할 때 사용
[dockerswarm:children]
master
worker

#Ansible 서버에서 EC2에 키 복사해주기

ssh-copy-id root@<EC2-master의 ip>
ssh-copy-id root@<EC2-worker의 ip>

#각 EC2에 접속해서 authorized_keys파일에 Ansible의 공유키(id_rsa.pub) 입력하기

ssh ec2-user@<EC2의 ip>로 접속

ssh-keygen

vi .ssh/authorized_keys

아래 부분에 Ansibl의 공유키 입력

#ansible 서버에서 접속 확인

ansible dockerswarm -m ping

Untitled

---
- name: docker service
  hosts: dockerswarm 
  become: yes
  gather_facts: false
  vars: 
    master_node_ip: 

  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
  name: init_docker_swarm
  tasks:
  - command: docker swarm init --advertise-addr "{{master_node_ip}}"

- hosts: manager 
  name: get_tokken
  gather_facts: true
  tasks:
  - command: "docker swarm join-token -q worker"     
    register: swarm_token
  - set_fact: swarmtoken="{{ swarm_token.stdout }}"

- name: Join Swarm Nodes
  hosts: worker
  tasks:
    - command: docker swarm join --advertise-addr "{{master_node_ip}}" --token "{{ hostvars[groups['manager'][0]].swarmtoken }}" "msater_node_ip":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