Chef & Docker
2014.06.09
CHEF와 DOCKER을 함께
- Chef와 Docker을 함께 쓸 경우 의 이점은 무엇일까?
- Chef-Metal이란?
DOCKER의 장점 1
-
빠르게 컨테이너를 만들수 있다
- Dev/Test/Prod 환경에 대한 구성을 직접 할수 있다
- Application 수준에서 환경을 구성할 필요 없이 각 환경에 대한 Docker 컨테이너를 구성할때 각 환경에 맞는 구성을 할수 있다
- 예를 들어 Django Settings등이 필요 없거나 필요성이 감소한다
- 일반적인 서버에 재 디플로이 할때 기존 환경에 대한 영향을 고려해야 하지만, Docker는 (빠르기때문에)배포시에 새로운 컨테이너를 생성할 수 있기 때문에 기존 환경에 대한 영향을 최소화하거나 없을 수 있다
Docker의 장점 2
- 하나의 물리적인 서버나 클라우드 인스턴스에 여러 애플리케이션 서버를 구성하려고 할때 서로 독립적인 환경을 보장 할수 있다
- 물리적인 서버나 클라우드 인스턴스의 구성의 변화에 애플리케이션 서버의 구성의 변화를 최소화 할수 있다
Chef-Metal이란?
- Chef가 하나의 서버에 대한 설정 관리 도구라면
- Chef-metal을 하나의 클러스터에 대한 설정 관리 도구
- 클러스터는 하나 이상의 머신에 대한 설정 단위
machine 'db' do
recipe 'mysql'
end
machine 'web1' do
recipe 'apache'
end
Chef-metal의 개념
- machine resource
machine 'mario' do
recipe 'postgresql'
recipe 'mydb'
tag 'mydb_master'
end
num_webservers = 1
1.upto(num_webservers) do |i|
machine "luigi#{i}" do
recipe 'apache'
recipe 'mywebapp'
end
end
- drivers
- docker
- vargant
- ec2
- digitial ocean
- ...
chef-metal 사용하기
> CHEF_DRIVER=vagrant:~/vms
> chef-client -z cluster.rb
Recipe: talk1::cluster
* machine[db] action create
- run vagrant up db
- write file /etc/chef/client.rb on db
Starting Chef Client, version 11.8.2
Recipe: mysql::default
* file[/etc/mysql.txt] action create
- create new file /etc/mysql.txt
Chef Client finished, 1 resources updated
- run 'chef-client' on db
* machine[web1] action create
- run vagrant up web1
- write file /etc/chef/client.rb on web1
- run 'chef-client' on web1
Chef Client finished, 2 resources updated
Chef & Docker
By Myoungsoo Shin
Chef & Docker
- 2,417