#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
---
- 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