Knife มีส่วนเสริมในการจัดการ virtual machine บน Microsoft Azure ด้วยคือ knife-azure สามารถจัดการ life cycle ของ virtual machine ได้ สั่ง knife bootstap เพื่อลงทะเบียนกับ Chef Server ได้เลย มาลองใช้งานกัน

ติดตั้ง Knife Azure โดยใช้ ChefDK

chef gem install knife-azure

ดาวน์โหลด subscription file เพื่อใช้งานร่วมกับ knife azure plugin จากนั้นแก้ไข knife.rb เพิ่ม config เข้าไปดังนี้

Continue reading

Knife มีส่วนเสริมในการจัดการ instance บน Amazon Web Service ด้วยคือ knife-ec2 ซึ่งสามารถจัดการได้ในเบื้องต้น ส่วนใหญ่เกี่ยวข้องกับ instance เป็นหลัก สามารถจัดการ life cycle ของ instance ได้ สั่ง knife bootstap เพื่อลงทะเบียนกับ Chef Server ได้เลย มาลองใช้งานกัน

เริ่มต้นจากติดตั้ง package ที่จำเป็นก่อนดังนี้

apt-get install make build-essential

จากนั้นติดตั้ง knife ec2 plugin โดยใช้ Chef Development Kit

chef gem install knife-ec2

แก้ knife.rb เพิ่ม AWS_ACCESS_KEY_ID และ AWS_SECRET_ACCESS_KEY ต่อท้ายไฟล์

Continue reading

ถ้าใช้งาน Chef ต้องลองสร้าง Cookbook ใช้เองด้วยถึงจะครบกระบวนการ นอกจาก Cookbook ใน Opscode Community แล้วเราสามารถสร้าง Cookbook แบบที่เราต้องการเองได้ด้วย สำหรับท่านที่ถนันภาษา ruby ก็คงได้เปรียบสักหน่อย แต่สำหรับท่านที่ไม่ถนันก็ไม่เป็นไร เราสามารถสร้าง Cookbook แบบง่ายได้ โดยใช้เครื่องมือเดิมคือ Knife

แนวคิดของ Cookbook เหมือนกับการทำอาหารมีสูตรในการทำ (recipe) ดังนั้น Cookbook หนึ่งมีสูตรอาการได้หลายสูตรแล้วแต่ว่าจะปรุงอะไรออกมา ในการปรุงแต่ละสูตรจะมีกระบวนการปรุงซึ่งจะทำหนด อยู่ใน recipe นั่นเอง สำหรับ resource ทีี่ต้องใช้ recipe ได้แก่

  • package: จัดการ package ใน node
  • service: จัดการ service ใน node
  • user: จัดการ user ใน node
  • group: จัดการ group ใน node
  • template: จัดการไฟล์ที่อยู่ในรูปแบบ ruby template
  • cookbook_file: เก็บไฟล์สำหรับย้ายไปใช้กับ node โดยตรง
  • file: จัดการไฟล์ ใน node
  • directory: จัดการไดเรคทอรี ใน node
  • execute: ใช้คำสั่ง ใน node
  • cron: แก้ไข cron ใน node

Continue reading

เผอิญมีคนถามเรื่อง Pootle แต่จำไม่ได้ว่าใครถามเอาเป็นว่า Pootle เป็นเครื่องมือแปล ui ของซอฟต์แวร์ผ่านเว็บ สนับสนุนทั้งไฟล์ po, xml ทำให้ทีมแปลทำงานร่วมกันได้ง่ายมากขึ้น หากอยากจะทดลองใช้ Pootle ก็สามารถติดตั้งกันได้ง่ายๆ โดยใช้ Docker ดังนี้

docker pull jannkleen/pootle

docker run -v /var/pootledb --name POOTLEDB busybox true

docker run -p 80:8000 --volumes-from POOTLEDB jannkleen/pootle

Continue reading

Knife DigitalOcean เป็นส่วนเสริมที่ช่วยให้คุณจัดการ Droplet บน DigitalOcean ได้ง่ายๆ ผ่าน Knife ซึ่งนอกจากจัดการ Droplet ได้แล้วยังสามารถสั่ง Bootstrap เพื่อ register node ไปยัง Chef Server ได้อีกด้วย หรือใช้ Knife กำหนด runlist ให้ droplet ได้เช่นกัน มาทดลองกัน

ก่อนอื่นใช้ ChefDK ติดตั้ง Knife DigitalOcean กันก่อนดังนี้

chef gem install knife-digital_ocean

สร้าง Personal Access Tokens ใน DigitalOcean เพื่อใช้กับ Knife ดังนี้

Continue reading

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

Continue reading

Chef เป็นเครื่องมือการจัดการตั้งค่าคอนฟิกระบบ (system configuration management) ตัวหนึ่งที่ได้รับความนิยม เหมาะสำหรับการ config เครื่องเซิร์ฟเวอร์ที่มีจำนวนมากๆ แบบไม่ต้อง ssh เข้าไป config ทีละเครื่อง การทำงานของ Chef จะทำตาม runlist ที่เรากำหนดให้ node หรือกำหนดใส่ไว้ใน Role ดังนั้นเราสามารถทำขั้นตอนซ้ำๆ ได้หลายรอบผ่านการกำหนดค่าตาม role หรือกำหนด runlist ให้กับ node จากนั้นก็สั่งให้ทำงาน

Chef มีเวอร์ชันที่เป็น Open Source และ Enterprise ในเวอร์ชัน Enterprise สามารถติดตั้งเองหรือใช้บริการ Chef Management แบบ Hosted ได้โดยไม่จำเป็นต้องติดตั้งเองก็ได้ ก่อนใช้งานต้องเข้าใจ Chef กันก่อน Chef มีส่วนประกอบที่ต้องใช้หลักๆ อยู่ 3 ส่วน

  • Chef Workstation คือ เครื่องที่ใช้สั่งงาน พัฒนา cookbook หรือเครื่องผู้ดูแลระบบ
  • Chef Server คือ เครื่องที่เก็บข้อมูล Node, Cookbook, Policy, Report ต่างๆ
  • Chef Client คือ เครื่องปลายทางที่ต้องการคอนฟิก

Continue reading

Docker มีบริการ Docker Registry ให้เราสามารถ pull image มาใช้งานได้ และให้เรา push image ขึ้นไปบน Docker Registry ได้เหมือนกัน หากเราดูจากหน้าเว็บ hub.docker.io จะพบว่านอกจากจำเป็น Registry แล้วยังมีบริการอื่นๆ อีกมาก เช่น Private Registry, Repository, Auto Build จาก VCS เป็นต้น ครั้งนี้จะมาใช้งานบริการ Auto Build กัน โดยปกติเวลาทำ Image เพียงแค่เขียน Dockerfile จากนั้นสั่ง Build จะได้ Docker Image อยู่ในเครื่อง ถ้ามีการเปลี่ยนแปลง ก็ต้องสั่ง Build ใหม่อีกรอบ ซึ่งหลายท่านหันไปใช้ CI/CD ช่วยให้อัตโนมัติมากขึ้น

แต่ Docker Hub มีบริการ Auto Build จาก VCS ที่คุณใช้งานอยู่ได้ด้วย เพียงแค่เชื่อมบริการของ Docker Hub และ VCS ที่ใช้อยู่เท่านั้น จากนั้นก็เลือก Repository ที่ต้องการใช้ Docker Hub ให้ คุณก็มีหน้าที่แค่ทดสอบและ commit ไฟล์ไปยัง VCS เท่านั้น อันดับแรกสมัครสมาชิก Docker Hub ก่อน จากนั้นให้เข้าไปที่หน้า Profile ของเรา

Continue reading

วิธีการ Backup Container มีอยู่หลายวิธี เช่น Commit Container ที่กำลังทำงานอยู่แล้ว push ไปที่ Docker Registry เคยแนะนำไปแล้วเรื่องการย้าย Container ข้าม Cloud Provider หรือการ Save Container แล้วโยนผ่าน ftp, scp ไปยังเครื่องปลายทาง ซึ่งมีหลายทางเลือก วิธีที่จะมาแนะนำในครั้งนี้เป็นวิธีที่ 2 คือการ Save Container ลองมาดูตัวอย่างกัน

ให้สั่ง run container สั่งตัวนึงขึ้นมาก่อน

docker run -dP --name web1 anoochit/apache2

จากนั้นแก้ไขข้อมูลใน Container ที่กำลังทำงานอยู่ผ่าน bash

docker exec -it web1 bash

คุณจะ drop เข้าไปที่ bash shell ของ container จากนั้นแก้ไขไฟล์สักไฟล์นึง ยกตัวอย่างเช่น /var/www/index.html เป็นต้น

echo "<h1>Hello, World</h1>" > /var/www/index.html

จากนั้นให้ exit ออกจาก Container ตอนนี้ข้อมูลใน /var/www/index.html เปลี่ยนไปแล้ว เราจะ Save Container นี้เอาไปใช้งานที่อื่นดังนี้

Continue reading

Geard เป็นเครื่องมือบน command-line ใช้สำหรับเชื่อมโยง Docker Container กับ Systemd หรือเชื่อม Docker Container จากหลายๆ Host เข้าด้วยกัน ซึ่งโครงการนี้จะถูกใช้ใน OpenShift รุ่นถัดไป สำหรับท่านที่อยากลองใช้ Geard สามารถใช้งานได้จาก Linux ตระกูล RedHat ได้แก่ RHEL, CentOS, Fedora เป็นต้น ใน Fedora 20 มี Geard อยู่ใน Repository (testing) เรียบร้อยแล้ว เราสามารถนำมาใช้งานได้เลย

ครั้งนี้เราจะใช้ Fedora 20 ให้ติดตั้ง Geard กันก่อนดังนี้

yum install --enablerepo=updates-testing geard

เมื่อติดตั้งเสร็จให้สั่ง start docker ดังนี้

systemctl start docker

Continue reading