วันอังคารที่ 22 เมษายน พ.ศ. 2557

มาเล่น Chef กัน

Chef เป็นเครื่องมือด้าน System Configuration อีกตัวนึง เหมาะสำหรับการ config เครื่องเซิร์ฟเวอร์ที่มีจำนวนมากๆ แบบไม่ต้อง ssh เข้าไปทีละเครื่อง แนวคิดของ Chef ก็เหมือนกับชื่อล่ะครับ กุ๊กอยากจะทำอาหารอะไร ก็ต้องมีตำราอาหาร (Cookbook) วิธีการทำ (Recipe) และ ขั้นตอนการทำ (Run list) ก่อนที่มาเล่น Chef ลองมาดูส่วนประกอบต่างๆ ที่จะต้องมีกันก่อน






  1. Workstation คือ เครื่องที่ System Admin ใช้ทำงาน เขียนตำราอาหาร เขียนสูตรอาหาร

  2. Chef Server คือ เครื่องที่ใช้เก็บตำราอาหาร สูตรอาหารต่างๆ

  3. Node คือ เครื่องที่เราต้องการ config โดยดึงข้อมูลจาก Chef Server มาประมวลผล



จะใช้งาน Chef ต้องมี Chef Server ครับ สำหรับท่านที่ต้องการใช้ Chef Server ที่ทาง OpsCode เป็นคนดูแลก็สามารถใช้งานได้ (ผมแนะนำ) แต่ถ้าต้องการตั้ง Chef Server เองก็สามารถทำได้ครับ ก่อนอื่นมาติดตั้ง Chef Server กันก่อน ผมมีเครื่อง Ubuntu Server 64ิBits ต้องเป็น 64Bits เท่านั้นนะครับ



ดาวน์โหลด Chef Server และติดตั้งด้วยคำสั่ง



sudo dpkg -i chef-server_11.0.12-1.ubuntu.12.04_amd64.deb



sudo chef-server-ctl reconfigure



เมื่อติดตั้งเสร็จให้เปิด browser ไปที่ https://chef-server ใส่ username = admin และ password = p@ssw0rd1 จะได้หน้าตาแบบนี้





ได้ Chef Server แล้ว กลับมาที่เครื่อง Admin Workstation หรือเครื่องที่เราใช้งานกันนี่แหละครับ ดาวน์โหลด Chef Client มาติดตั้งที่เครื่องเรากันก่อนดังนี้



curl -L https://www.opscode.com/chef/install.sh | sudo bash



รอให้ติดตั้งจนเสร็จ จากนั้นมาเขียนไฟล์ config กัน ถ้าคุณใช้ Hosted Chef Server ดึงออกมาจาก Kick Start ได้เลยครับ แต่เรายากจนติดตั้ง Chef Server เองก็ต้องมาเขียน config กันเอาเอง ดังนี้



mkdir ~/.chef



เขียน config ชื่อ knife.rb ใส่ข้อมูลลงไปดังนี้



node_name 'admin'



chef_server_url 'https://chef-server.ffeee.org'



validation_client_name 'chef-validator'



validation_key '/etc/chef/chef-validator.pem'



cookbook_path ["~/.chef/cookbooks"]



สร้างไฟล์ /etc/chef/client.pem เอา Private Key ของ Admin มาใส่







และไฟล์ /etc/chef/chef-validator.pem เอาค่า chef-validator มาใส่







สร้างไดเรคทอรี cookbook ใน ~/.chef/cookbooks ดังนี้



mkdir -p ~/.chef/cookbooks



จากนั้น init git repository ที่ไดเรคทอรี cookbooks ดังนี้



cd ~/.chef/cookbooks



touch readme.md



git init



git add .



git commit -m 'init repo'



ลองใช้คำสั่ง knife ดูครับ



knife client list



ค่าที่ได้จะแสดง chef-validator และ chef-webui ออกมา และไม่ error ถือว่าเป็นอันใช้ได้ :)



เมื่อได้ Workstation, Chef Server แล้วก็ถึง Node ต่างๆ Chef มีเครื่องมือลัดให้เราติดตั้ง Chef Client โดยที่เราไม่ต้อง ssh ไปทีละ node ทำให้ไม่เหนื่อยมากนัก โดยใช้คำสั่งดังนี้



knife bootstrap node01.example.com --sudo -x username -P password -N "chef-node01"



จากนั้น knife จะติดตั้ง Chef Client ที่เครื่อง Node ให้ สั่งแบบนี้จนครบทุกเครื่องครับ :P ถ้าไม่อยากเหนื่อยก็เขียน shell script เอาก็ได้ :) เมื่อติดตั้งเสร็จแล้วเราจะพบว่ามีรายละเอียดของ Node ใน Chef Server แล้ว





เมื่อได้ Node ครบแล้ว กลับมาที่ Workstation เราครับ เราจะดึง Cookbook จาก Chef Community Cookbook มาใช้กัน ตัวอย่างเป็น Apache2 :) ใช้คำสั่งดังนี้



knife cookbook site install apache2



Knife จะดาวน์โหลด Cookbook ของ Apache2 และ dependency cookbook มาให้เราด้วย :) ถ้าอยากจะแก้ไข หรือ recipe ก็สามารถแก้ไขได้เลย จากนั้นอัพโหลด Cookbook ไปไว้ที่ Chef Server โดยใช้คำสั่ง



knife cookbook upload apache2 iptables logrotate pacman



ลองเข้าไปดูใน Chef Server เราจะเห็นว่ามี Cookbook อัพโหลดเข้ามาแล้ว





จากนั้นมากำหนด run list ให้ node01 ที่เราจะติดตั้ง Apache2 กันดังภาพ





เมื่อกำหนด run list แล้วสั่ง chef-client ที่เครื่อง node ได้เลย หรือจะสั่งผ่าน knife ได้เช่นกัน ตัวอย่างเช่น ให้ node ที่มีชื่อ * (คือทุก node) ใช้คำสั่ง chef-client ดังตัวอย่าง



knife ssh 'name:*' 'chef-client' --sudo -x username -P password



เมื่อสั่ง chef-client เครื่อง node จะเรียกดูข้อมูลจาก Chef Server ว่าเครื่องนี้้ต้องใช้ Cookbook อะไรบ้าง จากนั้นก็ทำตามลำดับที่กำหนดไว้ใน run list ลองเปิด browser เข้าไปดูที่เครื่อง node01 ก็จะพบว่า ได้ติดตั้ง Apache2 เรียบร้อยแล้ว ;)


วันอาทิตย์ที่ 20 เมษายน พ.ศ. 2557

5 สิ่งที่ต้องทำหลังจากติดตั้ง Ubuntu 14.04 LTS

Ubuntu 14.04 LTS ออกรุ่นแล้ว มีคุณสมบัติใหม่ๆ และแก้ bug ที่เป็นปัญหาหลายอย่างในรุ่นที่แล้ว (13.10) ซึ่งเป็นปัญหาขัดใจหลายเรื่อง โดยเฉพาะเรื่อง Keyboard สำหรับรุ่นนี้การตั้งค่า Keyboad ทำได้ดีมากขึ้นเลยทีเดียว เอ้า ก่อนจะมาลงในรายละเอียดการตั้งค่าต่างๆ มาดาวน์โหลด Ubuntu 14.04 กันก่อน สำหรับรุ่นที่ release แล้วดาวน์โหลดได้ที่ releases.ubuntu.com ครับ สำหรับท่านที่ต้องการอัพเกรดทำได้ 3 วิธี คือ




  1. สั่งอัพเกรดจาก Software Updater

  2. อัพเดทผ่านตัวติดตั้ง

  3. ลงใหม่ทับของเดิม (สำหรับผู้ที่แยก /home เอาไว้แล้ว)



5 สิ่งที่ต้องทำหลังจากติดตั้ง




  1. เลือก repository ใกล้คุณ

  2. อัพเดท software และ patch ล่าสุด

  3. ติดตั้งซอฟต์แวร์ที่จำเป็นต้องใช้ (สำหรับผู้ติดตั้งใหม่)

  4. ตั้งค่า Keyboard เพิ่มเติม และเปลี่ยนปุ่มสลับภาษา ตั้งเป็นปุ่มตัวหนอนได้แล้ว

  5. ติดตั้งฟอนต์ภาษาไทย


วันจันทร์ที่ 24 มีนาคม พ.ศ. 2557

แหล่งเรียนเขียนโปรแกรมออนไลน์

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




วันเสาร์ที่ 15 มีนาคม พ.ศ. 2557

มาเล่น Puppet Enterprise กัน

เนื่องจากมีโอกาสได้กลับมาเล่น Puppet อีกรอบก็เลย blog ไว้สักหน่อย เป็นที่ระลึก เพราะครั้งนี้เล่น Puppet Enterprise เลยทีเดียว Puppet เป็นเครื่องมือใช้ทำ System Configuration Management ช่วย ติดตั้ง และ config package ลงในเครื่องเซิร์ฟเวอร์หลายๆ เครื่องได้อย่างรวดเร็ว โดยไม่ต้องไล่ ssh ไปทีละเครื่องเพิ่อติดตั้ง package นั้นๆ เอง Puppet สนับสนุนการใช้ใช้งานร่วมกับ Cloud Infra และ Bare Metal อีกด้วย (Razor) ก่อนเล่น Puppet ต้องเข้าใจเรื่องโครงสร้าง Puppet กันคร่่าวๆ สักหน่อย



puppet enterprise diagrame



Puppet ทำงานแบบ master - node คุยกันผ่าน mcollective ซึ่งจะต้องมี Puppet master และ node ที่ติดตั้ง agent เอาไว้ Puppet master จะทำหน้าที่ orchestration node ที่ผูกผ่าน agent ทำให้ Puppet master สามารถที่จะ config ติดตั้ง package ที่เราต้องการไปยัง node ผ่าน Puppet master ได้ อธิบายคร่าวๆ อย่างนี้ก็แล้วกันครับ อ้อ เกือบลืมไป Puppet Enterprise สามารถใช้งานได้ฟรี ผูก node ได้ 10 เครื่อง อยากผูก node เพิ่มต้องจ่ายตังค์เพิ่มครับ มาลงมือกันดีกว่า



เนื่องจากผมมีเครื่อง Ubuntu ก็ขอใช้ Ubuntu server 12.04.4 LTS ละกัน ติดตั้ง Ubuntu server, OpenSSH server และตั้ง NTP กับ time server ให้เรียบร้อย ทั้ง 2 เครื่อง คือ master, node1 ตามรูป เครื่อง master และเครื่อง node มองเห็นกันทดสอบ ping ผ่าน hostname ดูครับ



pupetlabs



เข้าไปที่เว็บไซต์ http://puppetlabs.com จากนั้น download Puppet Enterprise แบบ Full Install ให้ตรงกับ OS และ Architecture ที่คุณใช้ ซึ่งก็คือ Ubuntu 12.04 ของผมใช้ 32bits



puppet download



คุณจะได้ไฟล์ puppet-enterprise-3.2.0-ubuntu-12.04-i386.tar.gz มา ถ้าใช้ amd64 คุณจะได้ไฟล์ puppet-enterprise-3.2.0-ubuntu-12.04-amd64.tar.gz มาครับ อย่าดาวน์โหลดผิดเวอร์ชันเป็นพอ จากนั้นก็แตกไฟล์นี้ที่เครื่อง master และ เครื่อง node ให้เรียบร้อย



เครื่อง master สั่งติดตั้ง Puppet master



cd puppet-enterprise-3.2.0-ubuntu-12.04-i386
./puppet-enterprise-installer



ตัวติดตั้งจากถามคือถามเราเรื่อยๆ ก็ตอบ yes/no ไปเรื่อยๆ ดังนี้



ติดตั้ง Puppet master มั๊ย ตอบ y



Install puppet master? [y/N] y



ติดตั้ง PuppetDB มั๊ย ตอบ y



Install PuppetDB and console on this node? [Y/n] y



จะ provision vm บน cloud มั๊ย ตอบ n เพราะไม่ได้ใช้อ่ะ



Install the cloud provisioner? [y/N]



ตั้งชื่อ certificate อะไร ใช้ default



Puppet master's certname? [Default: master]



ตั้ง DNS aliase ใช้ default



Puppet master's DNS aliases (comma-separated list)? [Default: master,puppet]



ติดตั้ง PostgreSQL ไว้ที่เครื่อง master มั๊ย ตอบ y เพราะยังไม่มี PostgreSQL



Install the included Puppet Enterprise PostgreSQL server locally? [Y/n]



หลังจากนั้นก็ config console กำหนด admin account ใส่ email ที่จะใช้ login ลงไป



Admin email address (will be used as account name) for accessing the console interface? puppet@example.com



ใส่ password ที่เราต้องการ



Password for user puppet@example.com (minimum 8 characters)?



จากนั้นตัวติดตั้งจะแจ้งว่า package ที่ต้องใช้ติดตั้งเพิ่มเติมมีอะไรบ้าง และถามว่าเราว่าจะให้ติดตั้งให้ป่าว ตอบ y เพราะไม่มีก็ใช้ไม่ได้นี่



Install these packages automatically? [Y/n] y



จากนั้นตัวติดตั้งจะสรุปว่าจพติดตั้งอะไรบ้าง ตั้งแต่กด yes/no มายาวๆ แล้วถามว่าจะติดตั้งเลยมั๊ย ตอบ y



Perform installation? [Y/n] y



จากนั้นตัวติดตั้งก็จะทำการ ติดตั้ง package ที่ต้องใช้งาน และ config ค่าต่างๆ ให้อัตโนมัติ นั่งรอจนกระทั่งถึง STEP 4 ซึ่งจะแจ้งผลการติดตั้ง ที่อยู่ของ answer file เก็บ answer ไฟล์ไว้ดีๆ เพราะในไฟล์นี้จะมีข้อมูล config ต่างๆ และรวมถึงรหัสผ่านการเข้าใช้งาน PuppetDB และ PosgreSQL ด้วย ซึ่งอาจจะต้องใช้อีกในอนาคต :) เมื่อติดตั้งเรียบร้อยแล้วก็เปิด browser ขึ้นมาแล้ว browser ไปที่เครื่อง master ของคุณ ด้วย url https://master หรือตามด้วย ip ก็ได้ เช่น https://192.168.2.160 คุณก็จะได้หน้าล็อกอินแบบนี้



console login



ลอง login ดูว่าเข้าได้หรือเปล่า :)



after login



กลับมาที่เครื่อง node ติดตั้ง Puppet agent ดังนี้



cd puppet-enterprise-3.2.0-ubuntu-12.04-i386



./puppet-enterprise-installer



จากนั้นก็ตอบคำถาม yes/no กันอีกรอบ ดังนี้



Install puppet master? [y/N]



Install PuppetDB? [y/N]



Install the console? [y/N]



Install the cloud provisioner? [y/N]



Install puppet agent? [Y/n]



Install these packages automatically? [Y/n]



Perform installation? [Y/n]



นั่งรอจนกระทั่งถึง STEP 4 ซึ่งจะแจ้งผลการติดตั้ง ที่อยู่ของ answer file เก็บ answer ไฟล์ไว้ดีๆ เพราะเราอาจจะเอาไปใช้กับเครื่อง node เครื่องต่อไป หลังจาก config node เสร็จกลับไปดูที่หน้า web console จะพบว่ามี node request เข้ามาดังนี้



node request



กดเข้าไปแล้ว Acept Node ดังนี้



acept node request



รอ Agent ส่งข้อมูล factor เข้ามาที่ master ลอง refest หน้า web console ก็จะได้ node เข้ามา 1 ตัวแล้ว



add node



ที่เครื่อง node ทดสอบ Agent กันด้วยคำสั่ง



puppet agent --test



ให้ตรวจสอบว่า node ที่เพิ่มเข้ามาอยู่ในกลุ่ม mcollective หรือยัง



mcollective group



ทีนี้มาลองเล่น Live Management กัน เข้าไปที่ Live Management จากนั้นเลือก master, node ที่มีอยู่ แล้วลอง search package ดูว่าในเครื่อง master, node มี package ntp ติดตั้งหรือเปล่า เราก็จะได้ผลลัพท์ว่าเครื่อง master, node มี ntp ติดตั้งอยู่



find ntp package



มาเล่นในส่วน configuration management กันบ้าง เนื่องจาก Puppet Enterprise ที่ติดตั้งจะมี class พื้นฐาน ของ Puppet ที่ต้องใช้ แต่ไม่มีที่เราต้องใช้ T_T ดังนั้นเราต้องเขียน Puppet module กันเอาเอง หรือใช้บริการ Puppet module จาก Puppet Forge ก็ได้



puppet forge



วิธีการเล่นกับ Puppet Enterprise มีขั้นตอนง่ายๆ ดังนี้




  1. เขียน module หรือติดตั้งจาก Puppet Forge

  2. เพิ่ม Class เข้าไปในระบบ (ถ้าใช้ command line ก็เหมือนที่เราเขียน class ที่เป็น pp ไฟล์นั่นเอง)

  3. กำหนด node ให้อยู่ใน Class นั้นๆ หรือกำหนด node ให้อยู่ใน Group นั้นๆ



มาลองกันครับ



puppet module install puppetlabs-apache



puppet module install



ลองเช็คสักหน่อยว่าไม่มีอะไรพัง



puppet module list



puppet module list



ที่นี้กลับเข้ามาที่ web console เพิ่ม Class กัน กดปุ่ม Add Class แล้วค้นหา module Apache ดูครับ เราจะพบว่ามี Class ย่อยๆ อีกเยอะ สามารถเลือกได้ตามใจชอบ เช่น apapche, apache:php เป็นต้น จากนั้นกดปุ่ม Add Class เราก็จะได้ Class มาเพิ่มอย่างนี้



Class list apache



เพื่อความเป็นระเบียบเพิ่ม Group ขึ้นมาครับ กดปุ่ม Add Group สร้างกลุ่ม www ขึ้นมา เพิ่ม Class apache และ เพิ่ม node ของเราเข้าไป กดปุ่ม Create เท่านี้ก็เรียบร้อยแล้ว



add group



เข้าไปดูรายละเอียด node เราอยู่ใน Group www เรียบร้อยแล้ว



node1 detail



หลังจากนี้นั่งรอครับ mcollective จะเข้าไปคุยกับ node แล้ว deploy apache ให้ ถ้าใจร้อนก็เข้ามาที่ Live Management เลือก node เลือก Control Puppet เลือก runonce... กดปุ่ม run ได้เช่นกัน กลับไปดูหน้ารายละเอียด node จะพบว่ามี change แล้ว ดู report ว่าไม่มีอะไรพัง เป็นอันใช้ได้ครับ :)



change report



change event



อาจจะลองเข้าไปดู package list ว่า apache2 ติดตั้งหรือยังก็ได้



package list



ลอง browse ไปที่ node1 ดู ก็จะพบว่า apache ติดตั้งเรียบร้อยแล้ว



browse node1



หากคุณอยากได้เครื่อง webserver อีก ก็แค่เพิ่ม node ใหม่อยู่ในกลุ่ม www เท่านี้ node ที่เพิ่มเข้ามาก็จะติดตั้ง apache ให้เสร็จเรียบร้อยโดยไม่ต้อง ssh ไปติดตั้ง apapche เลย สำหรับการใช้งาน Puppet เราสามารถสร้าง module เพื่อ deploy application ที่เราต้องการได้ เช่น ติดตั้ง apache + php + mysql + wordpress เป็นต้น หากไม่อยากเขียนเอง ก็ download module จาก Puppet Forge มาใช้งานกันได้ :)


วันพุธที่ 12 มีนาคม พ.ศ. 2557

มาเล่น Add-ons บน Google Docs และ Google Sheets กัน

Google เพิ่มความสามารถใหม่ให้กับ Google Docs และ Google Sheets โดยเพิ่ม Add-on ทำให้คุณสามารถทำงานกับเอกสารต่างๆ ได้หลากหลายมากขึ้น สำหรับท่านที่ใช้ Google Docs อยู่แล้วดูตรงเมนู Add-ons > Get Add-ons จากนั้นจะเข้่าหน้า Add-on Store เลือกใช้ Add-ons ที่คุณต้องการได้เลย



สำหรับ Add-ons ที่น่าเล่น ได้แก่




  • Label Merge

  • EasyBlib

  • Merge by MailChimp

  • Workflows

  • PandaDoc

  • HelloSign



ลองไปเล่นกันดูนะครับ :)




วันพุธที่ 5 มีนาคม พ.ศ. 2557

มาแล้วฟอนต์ TH Sarabun ใน Google Doc

เฝ้ารอคอยมานานเนื่องจาก Google มีชุด Office บน Web อย่าง Google Doc มานานแต่ฟอนต์ภาษาไทยมีแต่ฟอนต์ไทยใน Windows วันนี้ฟอนต์ไทยมาครบเซ็ต ดังภาพซึ่งรวมเอาฟอนต์ภาษาไทยบน Windows, Mac และฟอนต์ภาษาไทยพิเศษอย่าง TH SarabunPSK มาด้วย





หลายท่านอาจเริ่มไปกดดูใน Google Doc แล้วพยายามหาฟอนต์ ให้กำหนดเอกสารเป็นภาษาไทยก่อนนะครับ ไม่อย่างนั้นรายการฟอนต์จะไม่โผล่มา





การตั้ง Style ก็ทำได้ง่ายมากๆ





เท่านี้ปัญหาเรื่องรูปแบบหน้าตาฟอนต์ใน Google Doc ก็หมดไปอีกเรื่องแล้วครับ สำหรับเรื่อง TH SarabunPSK ต้องขอขอบคุณผู้ที่อยู่เบื้องหลังในเรื่องนี้ทุกท่านครับ ปล. เอา TH Sarabun New เข้าไปด้วยจะดีมากเลยครับ :)


วันจันทร์ที่ 3 มีนาคม พ.ศ. 2557

ใช้ Sencha และ PhoneGap แบบ Command Line

เนื่องจากไปเรียน Cross Platform Mobile App Development ที่ SoftwarePark มา 4 วันก็เลยพยายามจะทำสรุปว่าเรียนอะไรไปบ้าง เนื่องจากผมถนัดใช้ command line ก็ขอทำเป็น slide สั้นๆ อธิบายและสรุปเกี่ยวกับคำสั่งที่ผมใช้บ่อยจะดีกว่า เหมือนบันทึกกันลืม มี 2 หัวข้อคือ




  • Sencha Cmd

  • PhoneGap Command Line



ส่วน Wikitude ที่ใช้พัฒนา AR Application เดี๋ยวคงจะทะยอยเขียนสรุปอีกทีครับ