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
Made with Slides.com