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