Chef ไม่เพียงแค่ใช้ตั้งค่าและจัดการเครื่องเซิร์ฟเวอร์เท่านั้นแต่ยังสามารถใช้งานร่วมกับ Container อย่าง Docker ได้ด้วย ในเบื้องต้น ใช้สำหรับสร้าง Chef Container ที่มี chef client, cookbook, run list ฝังเข้าไปพร้อมกับ Docker Image ส่วนการจัดการ Container ยังคงใช้ Docker เหมือนเดิม

สร้าง Chef Container ต้องเริ่มจากสร้าง Image ก่อนด้วย Knife Container ซึ่งเป็น plug-in เสริมของ Knife ซึ่งเราจะต้องติดตั้งเพิ่ม ก่อนจะติดตั้ง Knife Container ติดตั้งเครื่องมือที่จำเป็นต้องใช้ก่อน ได้แก่ Docker, ChefDK และ Knife Container

เริ่มจากติดตั้ง Docker ก่อน ดังนี้

curl -sSL https://get.docker.com/ubuntu/ | sudo sh

ติดตั้ง Chef Development Kit

wget https://opscode-omnibus-packages.s3.amazonaws.com/ubuntu/12.04/x86_64/chefdk_0.3.5-1_amd64.deb

dpkg -i chefdk_0.3.5-1_amd64.deb

ติดตั้ง Knife Container โดยใช้ Chef Development Kit

chef gem install knife-container

เท่านี้เราก็ได้เครื่องมือสร้าง Chef Container แล้ว มาลองดูตัวอย่างง่ายๆ จากการสร้าง Chef Container สำหรับ Apache 2 ให้สร้างโครงสร้างของ Image ดังนี้

knife container docker init demo/apache2 -r 'recipe[apache2]' -z -b

เราจะได้ Dockerfile ใน dockerfiles/demo/apache2/ และไฟล์ dockerfiles/demo/apache2/chef/first-boot.json สำหรับสั่งให้ service ทำงาน

มาแก้ไฟล์นี้เพิ่ม container service เข้าไปดังนี้

{
  "run_list": [
    "recipe[apache2]"
  ],
  "container_service": {
    "apache2": {
      "command": "/usr/sbin/apache2 -k start"
    }
  }
}

สั่ง build image

knife container docker build demo/apache2

เมื่อ build เสร็จคุณจะได้ docker image พร้อมใช้งาน

ทดลองสั่ง run ดู

docker run -d -p 80:80 demo/apache2

Comments are closed.