구리의 창고

Ubuntu에 Docker 설치하기 with Chef 본문

DevOps

Ubuntu에 Docker 설치하기 with Chef

구리z 2017. 7. 5. 10:16

개요

Ubuntu에 Docker 설치하기에서 설명한 것처럼 수동으로 Docker를 설치 하는 방법은 개발 환경에 설치시 적합한 방법이다.
만약에 Production 환경에서 Docker를 사용하고 설치해야 한다면, Docker 설치도 자동화 되어야한다.
이를 자동화 시켜주는 방법은 여러가지가 있는데 그 중 Chef를 사용하려고한다.

이 글을 이해하려면 Chef에 대한 선행 지식이 필요하다.

Chef를 간단하게 설명하면, Recipe라고 부르는 일종의 명령어 모음집이라고 할 수 있다. 여기서 다룰 내용은 Docker 설치하는 Recipe를 사용 할 것이다. 

Recipe에 무슨 내용이 담길 것인가?

Docker 설치 스크립트에 있는 내용을 그대로 Chef에 옮겨온다고 생각하면 된다.
운영체제에 맞는 Docker repository를 추가하고, 원하는 버전을 설치하도록 하자.

사용 할 오픈소스

이미 이런 고민들이 작업된 친절한 오픈 소스가 있다.

https://github.com/chef-cookbooks/chef-apt-docker 

Docker repository를 운영체제에 추가해준다.

https://github.com/chef-cookbooks/docker

Docker 설치에 필요한 Library가 있다.

설치1. ChefDK 설치

https://downloads.chef.io/chefdk에서 각자 환경에 맞는 버전의 패키지를 받도록하자.
이 글에서는 Ubuntu 16.04에서 진행 할 것이다. 그리고 패키지 설치로 17.03.1을 설치하도록 한다.
$ wget https://packages.chef.io/files/stable/chefdk/1.5.0/ubuntu/16.04/chefdk_1.5.0-1_amd64.deb
$ dpkg -i chefdk_1.5.0-1_amd64.deb
$ chef -v
Chef Development Kit Version: 1.5.0
chef-client version: 12.21.2
delivery version: master (17c1b0fed9be4c70f69091a6d21a4cbf0df60a23)
berks version: 5.6.4
kitchen version: 1.16.0
inspec version: 1.25.1

설치2. Cookbook 생성 및 작성

docker-setup이란 이름을 갖는 cookbook을 생성한다.
$ chef generate cookbook docker-setup

metadata.rb에 의존성 추가

depends 'docker'
depends 'chef-apt-docker'

Berksfile에 cookbook 추가

source 'https://supermarket.chef.io'

metadata

cookbook 'chef-apt-docker', git: 'https://github.com/chef-cookbooks/chef-apt-docker.git', branch: 'master'
cookbook 'docker', git: 'https://github.com/chef-cookbooks/docker.git', branch: 'master'

recipes/default.rb 작성

include_recipe 'chef-apt-docker::default'

docker_service 'default' do
  action [:create, :start]
  install_method 'package'
  version '17.03.1'
end

설치3. Cookbook 설치

이 예제에서는 /pool 디렉토리에서 Cookbook을 실행 할 것이므로 아래처럼 설치한다.
$ berks vendor /pool/cookbooks/
Resolving cookbook dependencies...
Fetching 'docker-setup' from source at .
Using chef-apt-docker (1.1.1) from https://github.com/chef-cookbooks/chef-apt-docker.git (at master)
Using docker (2.15.14) from https://github.com/chef-cookbooks/docker.git (at master)
Using docker-setup (0.1.0) from source at .
Vendoring chef-apt-docker (1.1.1) to /pool/cookbooks/chef-apt-docker
Vendoring docker (2.15.14) to /pool/cookbooks/docker
Vendoring docker-setup (0.1.0) to /pool/cookbooks/docker-setup

설치4. Chef 실행 및 설치확인

chef-solo를 실행한다.
$ cd /pool
$ chef-solo --config-option cookbook_path=/pool/cookbooks -o recipe[docker-setup::default]
docker 설치가 잘 된것을 확인 할 수 있다.
$ docker -v
Docker version 17.03.1-ce, build c6d412e


'DevOps' 카테고리의 다른 글

docker-compose 사용  (0) 2017.07.12
docker-compose 설치  (0) 2017.07.12
Docker Container 실행하기  (0) 2017.07.08
Chef resource 실행 순서 with notifies  (0) 2017.07.06
Ubuntu에 Docker 설치하기  (0) 2017.07.03
Comments