앤서블&도커

2020-12-16 hit count image

앤서블 플레이북(Ansible Playbook)을 사용하여 vagrant 가상 머신(guest system)에 도커(Docker)와 도커 컴포즈(Docker Compose)를 설치해 봅시다.

개요

서버 개발에 이제는 도커(Docker)를 빼놓을 수 없네요. 여기에서 도커(Docker)에 관한 모든 설명을 하는 것은 힘들거 같습니다. 블로그를 작성하면서 필요할 때 조금씩 조금씩 설명하는 것으로 도커(Docker)를 설명하겠습니다. 이 블로그에서는 앤서블 플레이북(Ansible Playbook)을 사용하여 vagrant에 도커(Docker)와 도커 컴포즈(Docker Compose)를 설치하는 방법을 소개하겠습니다.

이 블로그는 이전 블로그를 모두 진행했다고 가정하에 설명합니다.

앤서블 플레이북에 도커 설정

지금까지 만든 vagrant 가상 머신(guest system)을 위한 디렉토리(directory) 구조는 아래와 같습니다.

|-- ansible
|    |-- init
|    |    |-- tasks
|    |    |    |-- main.yml
|    |-- playbook.yml
|-- Vagrantfile

여기에 우리는 도커(Docker) 설치에 관한 role을 정의하고 앤서블 플레이북(Ansible Playbook)에 추가할 예정입니다. 아래와 같이 ansible 폴더 밑에 docker/tasks/main.yml 파일을 추가합니다.

|-- ansible
|    |-- init
|    |    |-- tasks
|    |    |    |-- main.yml
|    |-- docker
|    |    |-- tasks
|    |    |    |-- main.yml
|    |-- playbook.yml
|-- Vagrantfile

앤서블 플레이북(Ansible Playbook)의 시작점인 playbook.yml 파일을 열어 아래와 같이 추가합니다.

---
- hosts: localhost
  connection: local
  roles:
    - init
    - docker

추가한 docker/tasks/main.yml 파일을 아래와 같이 수정합니다.

---
- name: Install docker
  shell: curl https://get.docker.com | sh

- name: Modify privilege
  become: true
  shell: usermod -aG docker $USER

- name: Change privilege of docker
  become: true
  file: dest=/usr/bin/docker mode=+x

- name: python docker / docker-compse module
  pip:
    name:
        - docker
        - docker-compose

이제 앤시블(Ansible) 명령어를 하나씩 자세히 보겠습니다.

- name: Install docker
  shell: curl https://get.docker.com | sh

도커(Docker) 설치 스크립트를 사용하여 도커(Docker)를 설치합니다.

- name: Modify privilege
  become: true
  shell: usermod -aG docker $USER

- name: Change privilege of docker
  become: true
  command: chmod +x /usr/bin/docker

도커(Docker)의 사용자와 권한을 변경합니다.

- name: python docker / docker-compse module
  pip:
    name:
        - docker
        - docker-compose

파이썬(python)의 pip를 이용해 파이썬 도커 모듈(python docker module)과 도커 컴포즈(Docker Compose)를 설치합니다.

앤서블 실행

위에서 앤서블 플레이북(Ansible Playbook)에 추가한 도커(Docker) 설치 role을 실행하기 위해 아래에 앤서블(Ansible) 명령어를 가상 머신(guest system)에서 실행합니다.

vagrant ssh

sudo ansible-playbook /vagrant/ansible/playbook.yml

이미 환경이 구성된 상태에서 진행하였기 때문에 앤서블 플레이북(Ansible Playbook)을 실행시켰습니다. 새로 개발 환경을 구성할 경우 vagrat의 프로비전 쉘(provision shell)에 앤서블 플레이북(Ansible Playbook) 실행 스크립트를 추가하였기 때문에 자동으로 실행됩니다.

확인을 위해 아래에 vagrant 명령어를 로컬 머신(host system)에서 실행합니다.

vagrant destroy
vagrant up

도커 설치 확인

도커(Docker)가 앤서블 플레이북(Ansible Playbook)에 의해 가상 머신(guest system)에 잘 설치되었는지 아래에 도커(Docker) 명령어로 확인합니다.

vagrant ssh

docker --version
docker-compose --version

완료

앤서블 플레이북(Ansible Playbook)에 도커(Docker)와 도커 컴포즈(Docker Compose)를 추가하여 가상 머신(guest system)에 설치하는 방법을 살펴보았습니다. 이제 도커(Docker)를 통해 원하는 개발 환경을 만들 수 있게 되었습니다. 다음 블로그에서는 도커(Docker)와 도커 컴포즈(Docker Compose)를 이용하여 라라벨(Laravel) 개발 환경을 구성하는 방법에 대해서 살펴보겠습니다.

제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!

앱 홍보

책 홍보

블로그를 운영하면서 좋은 기회가 생겨 책을 출판하게 되었습니다.

아래 링크를 통해 제가 쓴 책을 구매하실 수 있습니다.
많은 분들에게 도움이 되면 좋겠네요.

스무디 한 잔 마시며 끝내는 React Native, 비제이퍼블릭
스무디 한 잔 마시며 끝내는 리액트 + TDD, 비제이퍼블릭
[심통]현장에서 바로 써먹는 리액트 with 타입스크립트 : 리액트와 스토리북으로 배우는 컴포넌트 주도 개발, 심통
Posts