Author: wiboon.w

  • แลกเปลี่ยนเรียนรู้ Virtual Desktop Infrastructure (VDI)

    ผมได้จัดแลกเปลี่ยนเรียนรู้ เรื่อง “การจัดการห้องบริการคอมพิวเตอร์ในแนวทาง Virtual Desktop Infrastructure” เมื่อวันที่ 11 มิถุนายน 2562 ณ ห้องปฏิบัติการคอมพิวเตอร์ 3 งานเทคโนโลยีสารสนเทศ ฝ่ายสารสนเทศและทรัพยากรการเรียนรู้ อาคารวิทยบริการ ชั้น 3 มหาวิทยาลัยสงขลานครินทร์ วิทยาเขตตรัง

    คิดว่านำมาเล่าสู่กันฟังในที่นี้น่าจะเกิดประโยชน์

    คุณลักษณะของระบบ

    • VMware vSphere ESXi 6.7 เป็น software จัดการ server
    • Dell EMC PowerEdge Systems เป็น hardware ชนิด Rack Server จำนวน 5 เครื่อง แต่ละเครื่องมี RAM 512 GB มี GPU ชนิด NVIDIA Tesla M10 32 GB และมี SAN Storage ขนาด 50 TB
    • L2/3 network switch ที่มี 10 G Base-T จำนวน 2 ตัว
    • VMware Horizon 7 เป็น software สำหรับทำ VDI
    • เครื่องที่ให้ใช้งานเป็น PCoIP zero client จำนวน 480 ชุด
    • user account เป็น Local Microsoft AD สำหรับห้องคอม

    ประโยชน์ที่ได้รับจากการแลกเปลี่ยนเรียนรู้ในครั้งนี้

    • ได้ทดลองใช้งานเป็นผู้ใช้งาน
    • ได้รับข้อคิดเห็นจากประสบการณ์ใช้งานตั้งแต่จัดซื้อเป็นเวลาเกือบ 1 ปีแล้ว
    • ได้เห็นวิธีการ cloning VM ทำภายใน server สะดวกมาก เพราะ zero client ไม่มี hard disk เป็นแค่จอภาพ+อุปกรณ์เชื่อมต่อกับ server

    สิ่งที่ต้องเตรียมพร้อมในการนำระบบ VDI ไปใช้งาน

    • ผู้ดูแลต้องมีความรู้เกี่ยวกับระบบ Virtualization Technology
    • ผู้ดูแลต้องมีความรู้เกี่ยวกับ DHCP Sever, DNS Server
    • ผู้ดูแลต้องมีความรู้เกี่ยวกับ Microsoft AD
    • ผู้ดูแลต้องมีความรู้พื้นฐานการจัดการ PC , Windows
    • ผู้ดูแลควรมีการติดตั้งและทดสอบโปรแกรมที่จะนำมาใช้กับระบบ VDI
    • ผู้ดูแลต้องมีความรู้เกี่ยวกับระบบ Server และ Network
    • ระบบไฟฟ้าและเครื่องปรับอากาศภายในห้อง Data Center ที่มีประสิทธิภาพ

    ปัญหาที่เจอในการใช้งานระบบ VDI

    • vcenter ล่ม (ระบบไฟฟ้าภายในห้อง Data Center มีปัญหา,ไฟล์สำคัญโดนลบ)
    • การ Clone เครื่อง (ใช้งานได้ไม่ครบทุกเครื่อง)
    • ค่า Error ไม่สื่อความหมาย (Clone แล้วเครื่องไม่พร้อมใช้งาน)
    • ข้อมูลทั้งระบบมีขนาดที่โตขึ้น (การเก็บข้อมูลในเครื่องผู้ใช้งาน Drive C,D)
    • ทรัพยากรไม่เพียงพอเมื่อมีการสร้างเครื่องใช้งานเยอะเกินไป ต้องประเมิน Disk Storage ให้เพียงพอ
    • ปัญหาเกี่ยวกับ user account ที่จะใช้ VM ในตอนแรกจะให้ใช้ Microsoft AD ของมหาวิทยาลัย แต่เนื่องจาก AD ของมหาวิทยาลัยไม่ได้ออกแบบมาให้คอนฟิกได้ง่าย จึงเปลี่ยนเป็นสร้าง Local AD ผูกกับ zero client เป็นเครื่อง ๆ ไป เปิดเครื่อง กด Enter ก็เข้าถึงหน้าต่าง Windows ราว ๆ 30-40 วินาที

    ข้อดีของการนำระบบ VDI มาใช้งาน

    • การบริหารจัดการเครื่องมีประสิทธิภาพขึ้น เมื่อเทียบระหว่าง Zero Client กับ PC
    • ประหยัดพลังงาน เมื่อเทียบระหว่าง Zero Client กับ PC
    • ลดอุณหภูมิภายในห้อง LAB Computer เมื่อเทียบระหว่าง Zero Client กับ PC
    • มีความยืดหยุ่นในการใช้งานทรัพยากร เมื่อเทียบระหว่าง Zero Client กับ PC
    • ประหยัดพื้นที่บนโต๊ะภายในห้อง LAB Computer เมื่อเทียบระหว่าง Zero Client กับ PC
    • การ Backup ข้อมูลทั้งระบบทำได้ง่าย เมื่อเทียบระหว่าง Zero Client กับ PC

    ถาม-ตอบ ที่พอจะประมวลได้จากการพูดคุย

    ถาม: วิทยาเขตตรัง มีนโยบายการให้บริการห้องคอมพิวเตอร์สำหรับการเรียนการสอน กี่แบบ
    ตอบ: มีแบบเดียว คือ มีเครื่องให้ใช้ร่วมกัน เก็บบันทึกไฟล์ไว้เอง เนื่องจากระบบ VDI ที่จัดซื้อทรัพยากรไม่เพียงพอที่จะสร้าง VM แยกให้นักศึกษาหรือให้แต่ละวิชา

    ถาม: ระบบนี้มีค่าใช้จ่ายเท่าไร แยกเป็นค่าอะไรบ้าง ขอทราบ specification ที่ใช้งานอยู่
    ตอบ: ไม่สามารถระบุเฉพาะระบบ VDI ได้ เพราะเป็นการเช่ารวมกับ PC และ Notebook อีกจำนวนหนึ่ง (ประมาณหยาบ ๆ ได้เครื่องละ 20,000 บาท/3ปี หรือ คิดเป็นค่าใช้เครื่อง 18 บาท/วัน) ส่วนการกำหนด VDI specification ได้คำนวณจากปริมาณ (PC, RAM และ Disk) ที่ต้องการใช้งาน บวกส่วนเผื่อไว้อีก 25%

    ถาม: ระบบนี้น่าจะเหมาะกับคณะที่ให้บริการห้องคอมพิวเตอร์สำหรับการเรียนการสอนการติดตั้งโปรแกรมหรือไม่
    ตอบ: ทำได้เพราะเปิดสิทธิ Administrator เหมือนกับ PC

    ถาม: ระบบนี้น่าจะเหมาะกับหน่วยงานที่ให้บริการฝึกอบรมหรือไม่
    ตอบ: ขึ้นอยู่กับความพร้อมของ data center ให้บริการได้ต่อเนื่องหรือไม่ และโปรแกรมที่อบรมได้ทดสอบติดตั้งใช้งานแบบ VDI ได้

    ถาม: ระบบนี้ดีกว่าระบบเก่าอย่างไร
    ตอบ: มีความยืดหยุ่นในการเพิ่มทรัพยากรให้ zero client ที่ต้องการใช้มาก ๆ ปรับเปลี่ยนได้สะดวก การ cloning สามารถ remote เข้าทำได้ที่ server ไม่ต้องทำที่ห้องคอม

    ถาม: ตั้งแต่เริ่มใช้ระบบนี้มีการประเมินการใช้งานแล้ว คุ้มหรือไม่คุ้ม ดีหรือไม่ดี อย่างไร
    ตอบ: ยังไม่ได้ประเมิน

    ขอขอบคุณข้อมูลที่ได้รับจาก presentation ของคุณพงษ์พันธ์ ประพันธ์ หัวหน้าฝ่ายสารสนเทศและทรัพยากรการเรียนรู้ มหาวิทยาลัยสงขลานครินทร์ วิทยาเขตตรัง

  • อัปเดต Apache2 ให้ได้เวอร์ชั่นล่าสุดด้วย Third-Party PPA ของ ondrej

    พบว่า ubuntu 16.04 จะใช้ apache2 v 2.4.18 แม้ว่าเราจะสั่ง apt update; apt upgrade แล้วก็ตามเมื่อเช็คด้วยคำสั่ง apache2 -v จะพบว่ายังคงเป็นเวอร์ชั่น 2.4.18 เช่นเดียวกับ ubuntu 18.04 จะใช้ apache2 v 2.4.29 เท่านั้น หลังจากหาข้อมูลอยู่ทั้งวัน มีผู้ให้ข้อมูลใน google search ว่า ทีมพัฒนาจะไม่เปลี่ยนเวอร์ชั่นใน ubuntu ตาม upstream developer จนกว่าจะทดสอบและออก ubuntu next release

    หากต้องการเป็นเวอร์ชั่น 2.4.39 ณ วันนี้ (4 เม.ย. 62 หลังจากข่าวช่องโหว่ apache2 2 วัน) ก็ต้องใช้ Third-Party PPA ของ ondrej (ผู้พัฒนาคนหนึ่งที่ทำ Debian Package)

    เพิ่มเติมล่าสุด (5 เม.ย. 62) ทำใน ubuntu server อีกเครื่องที่ยังไม่ได้ทำแบบ PPA

    $ sudo apt-get update ; sudo apt-get dist-upgrade
    $ apache2 -v
    Server version: Apache/2.4.18 (Ubuntu)
    Server built: 2019-04-03T13:34:47

    $ dpkg -l | grep apache2
    ii apache2 2.4.18-2ubuntu3.10 amd64 Apache HTTP Server

    พบว่ามีการปรับปรุงเวอร์ชั่น Server built 2019-04-03 ซึ่งตามหลัง patch PPA ไม่กี่ชั่วโมง ใครยังไม่สนใจจะเปลี่ยนเป็นเวอร์ชั่น 2.4.39 ก็น่าจะไม่ต้องทำแบบ PPA ตามข้อมูลใน link นี้
    https://usn.ubuntu.com/3937-1/ และ
    https://launchpad.net/ubuntu/xenial/+source/apache2/+changelog

    ข้อควรระวัง ให้ตรวจสอบว่ามีการเข้าไปปรับแต่งไฟล์ apache2.conf ไว้หรือไม่ ต้องมีการทำ backup ไว้ก่อนอัปเดต เช่น บางท่านอาจไปเขียน Rewrite Rule ในไฟล์นี้ เป็นต้น ก็ต้องแก้ไขหลังจากอัปเดต รวมถึง Apache configuration files อื่น ๆ ที่เราใช้ เราต้องมี backup

    อย่างไรก็ตามก่อนทำอัปเดต ต้องมั่นใจว่าถ้า server เราเป็น VM ก็ต้องมีการ backup VM ไว้ก่อน จะอุ่นใจขึ้น

    sudo add-apt-repository ppa:ondrej/apache2
    sudo apt-get update
    sudo apt-get upgrade

    หลังจากอัปเดต เช็คเวอร์ชั่นด้วยคำสั่ง apache2 -v ได้เวอร์ชั่นล่าสุด

    Server version: Apache/2.4.39 (Ubuntu)
    Server built: 2019-04-02T20:30:08

    หากพบว่า ยังคงได้ version เดิม ตรวจสอบดู output จะพบว่า

    Reading package lists… Done
    Building dependency tree
    Reading state information… Done
    Calculating upgrade… Done
    The following packages have been kept back:
    apache2 apache2-bin apache2-data apache2-utils libaprutil1
    libaprutil1-dbd-sqlite3 libaprutil1-ldap openssl
    0 upgraded, 0 newly installed, 0 to remove and 8 not upgraded.

    ทำคำสั่งนี้แทน

    sudo apt-get dist-upgrade
    Reading package lists… Done
    Building dependency tree
    Reading state information… Done
    Calculating upgrade… Done
    The following package was automatically installed and is no longer required:
    liblua5.1-0
    Use 'apt autoremove' to remove it.
    The following NEW packages will be installed:
    libbrotli1 libjansson4 liblua5.2-0 libnghttp2-14 libssl1.1
    The following packages will be upgraded:
    apache2 apache2-bin apache2-data apache2-utils libaprutil1
    libaprutil1-dbd-sqlite3 libaprutil1-ldap openssl
    8 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
    Need to get 4,628 kB of archives.
    After this operation, 6,757 kB of additional disk space will be used.
    Do you want to continue? [Y/n]

    กด Enter (เพื่อเลือก Y) แล้วจะมีการติดตั้งให้

    ตอนนี้ก็เฝ้าระวังกันต่อไปว่า หลังจากทำวิธีนี้จะมีผลกระทบอะไรตามมาในอนาคตบ้างมั้ย หวังว่าจะไม่มี เพราะพยายามหาข้อมูลว่ามีใครแจ้งปัญหาจากวิธีการนี้ก็ไม่พบ พบแต่คำแนะนำวิธีนี้

    ผมคงไม่สามารถรับประกันความปลอดภัยใด ๆ หรือผลที่ตามมาจากการทำขั้นตอนในโพสต์นี้นะครับ


    สำหรับวิธีไม่ใช้ PPA จะกลับไปใช้ของเดิม

    sudo apt-get install ppa-purge
    sudo ppa-purge ppa:ondrej/apache2

    ตรวจสอบ version ของ apache2

    apache2 -v
    dpkg -l | grep apache2

    และล้างไฟล์ใน sources.list.d

    ls -l /etc/apt/sources.list.d/
    sudo add-apt-repository --remove ppa:ondrej/apache2

    ลิงค์ที่เกี่ยวข้อง

  • DevOps Meeting #1

    รวม Link ที่ใช้งานแลกเปลี่ยนเรียนรู้ DevOps Meeting #1

  • Protect Windows Computer LAB using Toolwiz Time Freeze and Cygwin

    Toolwiz Time Freeze เป็น open source software freeware ติดตั้งเพิ่มใน Windows 10 สำหรับจัดการเครื่องคอมพิวเตอร์ในห้องบริการ ซึ่งจะทำให้เมื่อ restart เครื่อง จะกลับคืนสู่สภาพเหมือนครั้งที่ติดตั้งเสร็จไว้ให้บริการในตอนแรก Toolwiz Time Freeze ไม่ได้ให้ซอฟต์แวร์ควบคุมรวมศูนย์กลางแบบโปรแกรมอื่นประเภทเดียวกันนี้ เราจะต้องทำการเดินไปปลด Lock ที่หน้าเครื่อง Windows ทีละเครื่องเอง แต่อย่างไรก็ตาม Toolwiz Time Freeze ก็ให้คำสั่งรันแบบ command line มาด้วย

    http://www.toolwiz.com/lead/toolwiz_time_freeze.php

    ผมจึงลองเสนอไอเดีย วิธีใช้ linux ubuntu ในการควบคุมไม่ต้องเดินไปทำหน้าเครื่อง นั่นคือ ใช้คำสั่ง ssh ในการรัน ToolwizTimeFreeze.exe ด้วย option /freeze หรือ /freezealways หรือ unfreeze

    หลักการคร่าว ๆ
    ซอฟต์แวร์ที่เครื่องคอมพิวเตอร์ที่จะให้บริการ
    1.ติดตั้ง Windows 10
    2.login เข้าใช้งานด้วยบัญชีผู้ใช้ (user) สิทธิเทียบเท่า Administrator
    3.ติดตั้ง Cygwin for Windows จะได้ Linux emulator โดยเลือกติดตั้ง service sshd ทำงานอัตโนมัติเมื่อเปิดเครื่อง Windows
    4.ติดตั้ง Toolwiz Time Freeze ตั้ง Lock พร้อมตั้งค่า password ป้องกันการเปิดเข้าโปรแกรม

    ซอฟต์แวร์ที่เครื่องของ admin ผู้ดูแล
    1.ติดตั้ง Ubuntu server หรือ Desktop เพิ่ม 1 เครื่อง เพื่อที่จะสร้าง ssh key ด้วยคำสั่ง sshkeygen จะได้ key file ชื่อ id_rsa.pub และ id_rsa.key อยู่ในไดเรกทอรี .ssh
    2.ทำขั้นตอนส่ง id_rsa.pub ไปใส่เพิ่มต่อท้ายไฟล์ authorized_keys ของ user ที่ติดตั้ง Cygwin for Windows 10
    3.ตอนนี้ เราจะสามารถ ssh user@ip (IP ของ Windows 10) ได้แล้วโดยไม่มีการถาม password ทดสอบดู

    เมื่อต้องการปลด Lock (Unfreeze) Windows 10 ก็ใช้คำสั่งนี้ได้
    คำสั่งเขียนต่อกันเป็นบรรทัดเดียว

    ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $user@$ip  "/cygdrive/c/Program\ Files/Toolwiz\ Time\ Freeze\ 2017/ToolwizTimeFreeze.exe /unfreeze /usepass=$password" > /dev/null 2>&1 &

    โดยให้แทนที่ $user ด้วย ชื่อบัญชีผู้ใช้ที่ติดตั้ง Cygwin ให้แทนที่ $ip ด้วยไอพีแอดเดรสของ Windows 10 และให้แทนที่ $password ด้วย password ของโปรแกรม Toolwiz Time Freeze

    เมื่อรันคำสั่งนี้แล้ว Windows 10 จะ restart เมื่อตรวจสอบดูจะพบว่า Toolwiz Time Freeze อยู่ในสถานะ unprotect

    เมื่อต้องการ Protect Windows 10 (Freeze) ก็ใช้คำสั่ง 3 คำสั่งนี้ ต้องทำตามลำดับ คำสั่งเขียนต่อกันเป็นบรรทัดเดียว

    คำสั่งที่ 1/3

    ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $user@$ip "/cygdrive/c/Program\ Files/Toolwiz\ Time\ Freeze\ 2017/ToolwizTimeFreeze.exe /freeze /usepass=$password" > /dev/null 2>&1 &

    คำสั่งที่ 2/3

    ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $user@$ip "/cygdrive/c/Program\ Files/Toolwiz\ Time\ Freeze\ 2017/ToolwizTimeFreeze.exe /freezealways /usepass=$password" > /dev/null 2>&1 &

    คำสั่งที่ 3/3

    ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $user@$ip "shutdown -r -f -t 0" > /dev/null 2>&1 &

    เมื่อรันคำสั่งนี้แล้ว Windows 10 จะ restart เมื่อตรวจสอบดูจะพบว่า Toolwiz Time Freeze อยู่ในสถานะ protect

    ดังนั้น หากเรานำคำสั่งเหล่านี้มาเรียงเข้าเป็น shell script หรือ scripting language ที่ call คำสั่ง ssh ได้ ก็จะทำให้เราสั่ง Lock และ ปลด Lock เครื่องจำนวนมากได้อย่างง่ายขึ้น

    การ Lock หรือ Unlock ด้วย script จะมี process stopped ของ ssh ที่ไปสั่ง Toolwiz ให้ลบ process ด้วยวิธีนี้

    ps a | grep Toolwiz | awk '{print $1}' | xargs kill -9 > /dev/null 2>&1

    หมายเหตุ (ข้างล่างนี้คือตัวอย่าง)

    1.คำสั่งที่แนะนำ อ้างถึง path ที่ใช้ในการติดตั้งโปรแกรมแบบ default คือ

    c:\Program Files\Toolwiz Time Freeze 2017

    2.การตั้งค่าในโปรแกรม Toolwiz Time Freeze

    Download จาก ftp server โดยใช้ไฟล์นี้ Setup_TimeFreeze.exe

    ขั้นตอน installation จะมีตัวเลือกที่เป็นค่า default
    Use disk caching for the Time Freeze Engine (MB.): 5120 (ตัวเลขนี้คงต้องทดสอบกันเอาเอง)
    [ ] Enable Time Freeze on your system partition (C:) every time:
    [/] Disable Time Freeze while in Windows Safe-mode.
    [ ] Enable Password Protection

    ขั้นตอนตั้งค่า จะมีตัวเลือกที่ผมได้ทดลองใช้
    แท็บ Toolwiz Time Freeze
    In Time Freeze mode, your system will be protected from any changes. ให้คลิกปุ่ม Start Time Freeze
    [/] Enable Time Freeze automatically when Windows starts.
    [/] Enable Folder Exclusion when Time Freeze is ON
    และเลือกบาง folder ให้เก็บไฟล์ได้ เช่น c:\mywallpaper

    แท็บ Setting and Help
    [/] Enable Password Protection for the control
    [ ] Hide the tray icon
    [ ] Show toolbar on your Desktop

    3.การตั้งค่า Cygwin for Windows ให้มี service sshd

    ขั้นตอนติดตั้งโปรแกรม Cygwin
    login ด้วย user ชื่อ Administrator หรือ login ด้วย user ที่มีสิทธิเทียบเท่า Administrator ก็ได้
    ติดตั้ง cygwin ให้คลิกขวาที่ Link ข้างล่างนี้และเลือก Save as เพื่อ download ไว้ แต่ไม่ต้องสั่งรัน
    ไฟล์สำหรับ Windows 64 bit http://cygwin.com/setup-x86_64.exe
    แล้วออกไปที่ Windows CMD แบบ Run as Administrator
    ให้ทำคำสั่ง ณ ตำแหน่งโฟลเดอร์ที่ download ไฟล์ เช่น Downloads ดังนี้

    cd %HOMEPATH%/Downloads 
    setup-x86_64.exe -q -s http://mirrors.psu.ac.th/cygwin -P openssh,curl,wget,dialog,vim 

    หรือ

    cd %HOMEPATH%/Downloads 
    setup-x86_64.exe -q -s http://cygwin.mirror.constant.com/ -P openssh,curl,wget,dialog,vim 
    

    รอนานสักนิด เมื่อเสร็จจะมีข้อความ Ending cygwin install ให้กด Enter

    ขั้นตอนติดตั้ง script เพื่อจัดการเรื่องควบคุมเครื่อง
    เปิดโปรแกรม Cygwin Terminal แบบ Run as Administrator เพราะว่าจะมีการเข้าไปแก้ registry

    การตั้งค่า cygwin เพื่อจัดการเรื่องควบคุมเครื่อง ทำดังนี้

    wget -N ftp://ftp.psu.ac.th/pub/psu12-sritrang/cygwin/cygwin-config-sshd.sh
    bash -o igncr cygwin-config-sshd.sh

    script ติดตั้งจะถามยืนยันว่าจะติดตั้ง ให้กด y และ Enter
    จะเริ่มต้นด้วย
    (1)การติดตั้ง user ชื่อ cyg_server ให้ตั้ง password
    (2)program จะ run ไปเรือย ๆ จนเสร็จ (จะมีแวะระหว่างทาง ให้ใส่ password = ให้ใส่ตัวเดียวกับข้อ (1) (การติดตั้ง user ชื่อ cyg_server) และจะมีถาม reenter = ใส่ซ้ำอีกครั้งให้เหมือนกัน) Cygwin3.0.7(14พ.ค.62)ไม่มีหยุดถาม password แล้ว
    (3)program จะมาหยุดที่คำถาม Cygwin3.0.7(14พ.ค.62)ไม่มีหยุดถามแล้ว
    Warning: Registering the Cygwin LSA authentication package requires administrator privileges! You also have to reboot the machine to activate the change.
    Are you sure you want to continue? (yes/no)
    ให้ตอบ yes
    (4)เมื่อเสร็จจะมีข้อความ cygwin-config-sshd.sh finished เมื่อเสร็จจะออกสู่ prompt

    การตรวจสอบ cygwin มี sshd พร้อมให้บริการให้ทำดังนี้
    ให้ reboot Windows หลังจากติดตั้ง cygwin เพื่อให้มีการ start service sshd ขึ้นมาก่อน
    ให้ login ด้วย user สิทธิ Administrator
    เปิด program cygwin64 terminal โดยคลิกขวาเลือก Run as Administrator
    พิมพ์คำสั่ง ssh 127.0.0.1 ผลลัพธ์จะต้องมีคำถามให้ตอบ Yes และ ถาม password

    ในกรณี cygwin มีปัญหา ให้ทำดังนี้
    ให้ login ด้วย user สิทธิ Administrator
    เปิด program cygwin64 terminal โดยคลิกขวาเลือก Run as Administrator
    รัน script cygwin-uninstall.sh ดังนี้
    bash -o igncr cygwin-uninstall.sh
    ออก (exit) จาก cygwin terminal
    แล้วเข้า Windows Explorer ลบ c:\cygwin64 ทิ้ง
    ต่อไปก็ย้อนไปทำการติดตั้ง (reinstall) cygwin ใหม่ จนเสร็จ

    References:

  • Virtual data center with OpenNebula

    OpenNebula เป็นชื่อของ open source software สำหรับทำ virtual data center เวอร์ชั่นล่าสุดคือ 5.6.1 (https://opennebula.org)

    ผมได้ทดลองในห้องปฏิบัติการ และเขียนเป็นขั้นตอนการติดตั้งจนกระทั่งได้ VM ขึ้นมา แต่ยังไม่ลงรายละเอียดถึงขั้นใช้งาน storage network ได้ ซึ่งจะได้ทดลองกันต่อไป

    ในตอนนี้ จะเรียกว่า basic set up ก็ได้นะ ในการ set up ระบบจริงตามคำแนะนำ แต่ละเครื่องควรมี network card 2 cards เพื่อแยกระหว่าง network ที่ให้บริการ กับ Management network

    การ set up จะต้องมีเครื่องที่เป็น Front-end เพื่อทำหน้าที่เป็น database และเว็บเพจสำหรับทำ configuration และสั่งการ และจะต้องมีเครื่องที่เป็น Hypervisor อย่างน้อย 1 เครื่อง โดยเลือกได้ว่าจะใช้ KVM หรือ vcenter สเปคเครื่อง hypervisor นี้ต้องรองรับ Virtualization extensions (Intel VT-x or AMD-V)

    เตรียมการทดลองโดยใช้ เครื่องคอมพิวเตอร์ที่ผมนำมาใช้มี 3 เครื่อง อายุเครื่องก็พอสมควร (ตามกำลังทรัพย์ที่มีในห้องปฏิบัติการ) แต่ทั้ง 3 เครื่องนี้ มีเพียง 1 network card ครับ เครื่อง Front-end 1 เครื่อง สเปค Pentium(R) Dual-Core CPU E5200 @ 2.50GHz มี RAM 4 GB อันนี้เป็นเครื่องทั่วไปที่รัน apache2 web server และ mariadb database ได้ ใช้เครื่อง KVM จำนวน 2 เครื่อง เพื่อจะให้เห็นว่าสามารถสร้าง VM ไปที่ KVM node ที่ต้องการได้ เครื่อง KVM node01 เป็น AMD Phenom(tm) II X4 945 Processor มี RAM 8 GB และ KVM node02 เป็น Intel(R) Core(TM) i5 CPU M 520 @ 2.40GHz มี RAM 4 GB

    นอกจากเครื่องคอมฯ แล้ว ผมก็มี network switch (L2-managed) เพื่อกำหนด port ให้รองรับ 802.1Q VLAN ผมออกแบบให้มี 2 VLAN คือ VLAN ID 6 (untagged) และ VLAN ID 7 (tagged) ซึ่ง VLAN 6 ก็คือ ครึ่งแรกของ network class C 192.168.6.0 เขียนแบบ CIDR 192.168.6.0/25 มี gateway คือ 192.168.6.1 และ VLAN 7 ก็คือ ครึ่งหลังของ network 192.168.6.128/25 มี gateway คือ 192.168.6.129

    ผมเขียนขั้นตอนไว้ในเว็บไซต์ opensource.psu.ac.th จะสะดวกกว่านำมาใส่ไว้ในบล็อกนี้ทั้งหมด เข้าไปที่ https://opensource.cc.psu.ac.th/Ubuntu1804 ก็จะเห็น link ต่อไปนี้

    แล้วจะมานำเสนอเรืองราวถัดไปครับ

  • Ubuntu server 18.04 config static IP with netplan

    เดิมก่อนหน้า Ubuntu server 18.04 LTS จะออกมาให้ใช้งานกันนั้น จะเป็น Ubuntu server 16.04 LTS เราตั้งค่า (config) static IP ให้กับ server ด้วยไฟล์นี้ /etc/network/interfaces ซึ่งก็คือ software package ชื่อ ifupdown และ DNS resolver ที่ใช้ก็คือ resolvconf

    แต่ใน Ubuntu server 18.04 นี้ เปลี่ยนไปใช้ package ชื่อ netplan แก้ไขที่ไฟล์ /etc/netplan/01-netcfg.yaml และใช้ DNS resolver คือ systemd-resolve ซึ่งจะ connect สอบถามชื่อ DNS จาก internal DNS ที่ IP 127.0.0.53 (ตรวจดูด้วยคำสั่ง cat /etc/resolv.conf)

    โดย default จะเป็นค่า network interface แบบ รับค่า IP มาจาก DHCP server

    ไฟล์ /etc/netplan/01-netcfg.yaml

    network:
    version: 2
    renderer: networkd
    ethernets:
    enp0s3:
    dhcp4: yes
    dhcp6: yes

    หากต้องการใช้เลข IP แบบ Static IP ก็ต้องตั้งค่าเองในแฟ้ม /etc/netplan/01-netcfg.yaml เป็นตัวอย่างประมาณว่า IP คือ 10.0.100.251 ใน class C (/24) มี gateway คือ 10.0.100.1 ทำหน้าที่ nameserver ด้วย และมี nameserver ที่สองคือ 192.100.77.10

     network:
    version: 2
    renderer: networkd
    ethernets:
    enp0s3:
    dhcp4: no
    addresses: [ 10.0.100.251/24 ]
    gateway4: 10.0.100.1
    nameservers:
    addresses:
    - 10.0.100.1
    - 192.100.77.10

    หลังจากแก้ไขค่าเสร็จแล้ว สั่งให้ network ทำงานใหม่ ใช้คำสั่ง sudo netplan apply

    ถ้าตอนนี้ใช้ netplan version 0.36.3 เราสามารถตั้งชื่อ network interface เป็นชื่อ vif1 แทน physical network interface เดิม

    ก่อนอื่น ให้ใช้คำสั่ง ifconfig เพื่อดูค่า MAC address ของ enp0s3 สมมติคือ 44:bb:33:85:91:08

    ตัวอย่างการแก้ไขข้อมูล

    network:
    version: 2
    renderer: networkd
    ethernets:
    vif1:
    match:
    macaddress: "44:bb:33:85:91:08"
    set-name: vif1
    dhcp4: no
    addresses: [ 10.0.100.251/24 ]
    gateway4: 10.0.100.1
    nameservers:
    addresses:
    - 10.0.100.1
    - 192.100.77.10

    หลังจากแก้ไขค่าเสร็จแล้ว ใช้คำสั่ง sudo reboot

    หลาย ๆ คน อาจจะอยากตั้งชื่อ network interface เป็นชื่อ eth0 แบบเดิมที่ชินตา ก็ทำได้ครับ ลองดูครับ และหมายเหตุไว้สักนิดว่า ไวยกรณ์ของไฟล์ *.yaml นี้ ต้องมีการเว้นวรรค เยื้องเข้า ให้ถูกต้องด้วยนะ เยื้องด้วยช่องว่างอย่างน้อย 2 spaces (เค้าว่ามา)

    ผมได้รวบรวมเป็น wiki เอาไว้สำหรับเรื่องคล้าย ๆ กันนี้

  • pGina fork 3.9.9.12 configuration

    pGina 3.9.9.12 ส่ง RADIUS accounting ได้ และทำ option Remove account and profile after logout ได้ และ ปุ่ม Shutdown ก็ log off user ให้ด้วย (โดยตั้งค่าที่ Local Machine Plugin จะมีให้ ติ๊ก เลือก Notification เพิ่มมาอีกอัน) นอกจากนี้ก็มีเพิ่ม plugins อีกหลายตัว พร้อมแก้บั๊ก ที่น่าสนใจคือ scripting plugin ทำให้ customize ได้มากขี้น แต่ผู้เขียนบทความนี้ยังไม่ได้ลอง

    เวอร์ชั่น 3.9.9.12 ดาวน์โหลดได้จาก http://mutonufoai.github.io/pgina/index.html

    การตั้งค่าสำหรับทำเป็น Windows Authentication ในเครื่องคอมที่เป็น Windows 10 ผมได้ทำ screen capture มาเฉพาะที่ผมได้ใช้งาน ซึ่งก็คือ Local Machine, RADIUS plugin ดังนี้

    หน้าแรกคือแท็บ General จะแสดงให้เห็นว่าโปรแกรมพร้อมทำงาน ให้ดูที่ข้อความที่แสดงเป็นสีเขียวใต้ข้อความ pGina Service status

    pGina แท็บ General

    และตัวเลือกที่ผมเลือกใช้คือ Use original username to unlock computer คือหากหลุดไปที่หน้า screen saver ก็ปลดได้ด้วย username ที่ login นั้น

    แท็บถัดไปคือ แท็บ Plugin Selection อันแรกที่จะใช้คือ Local Machine คือ user ที่สร้างขึ้นภายใน Windows นั่นเอง สังเกตจะมีตัวเลือกที่ Authentication, Gateway และ Notification (เพิ่มมาใหม่) และที่ใช้อีกอันคือ RADIUS Plugin

    pGina แท็บ Plugin

    จากนั้นให้เลือก Local Machine แล้วให้คลิกปุ่ม Configure จะได้ค่าดีฟอลต์ ดังรูปข้างล่างนี้

    Configure Local Machine

    ผมจะใช้ค่าตัวเลือก Remove account and profile after logout เพื่อที่ไม่ต้องเก็บ user profile ที่เป็น user จาก user database ภายนอก เช่น จาก RADIUS server เป็นต้น และ หากต้องการให้ user นั้นมีสิทธิมากกว่า User ทั่วไป ก็ตั้ง Mandatory Group เช่น ตั้งเป็น Administrators หรือ ใส่ชื่อกลุ่ม Guests ไว้ เมื่อเวลาผู้ใช้ login ก็จะมีสิทธิแค่ Guest ติดตั้งโปรแกรมเพิ่มไม่ได้ เป็นต้น

    เราจะไม่ใช้ option Remove account and profile after logout ก็ได้โดยให้เก็บ user account ไว้ ก็จะทำให้การเข้าใช้งาน login ในครั้งต่อไปเร็วขึ้น เพราะไม่ต้องเสียเวลาสร้าง user profile ใหม่ แต่ก็ต้องเตรียม disk ไว้ให้ใหญ่เพียงพอ หรือ ทำรอบ cloning ใหม่ให้เร็วขึ้น

    ต่อไปก็มาถึงตั้งค่า RADIUS plugin หลังจากเลือก Authentication และ Notification แล้วจากนั้นคลิกปุ่ม Configure จะได้ค่าดีฟอลต์รวมกับที่แก้ไขแล้ว ดังรูป

    ผมจะเลือกใช้และใส่ค่าต่าง ๆ เหล่านี้ครับ

    เลือก Enable Authentication เพื่อสอบถาม username/password

    เลือก Enable Accounting เพื่อส่งข้อมูลบันทึกค่า Acct-Status-Type ไปยัง RADIUS Server

    แล้วระบุ Server IP และ Shared Secret ที่จะต้องตรงกันกับที่ระบุอยู่ใน config ที่ RADIUS server เช่น FreeRADIUS จะอยู่ในไฟล์ clients.conf เป็นต้น

    เลือก Called-Station-ID ด้วย หากต้องการเลข MAC Address เก็บด้วยนอกจากเก็บ IP

    พบว่าจำเป็นต้องเลือก Accounting Options หัวข้อ Send Interim Updates เพื่อให้มีการส่งค่า accounting ได้ (โดยใช้ค่า Send update every 900 seconds ตามที่เป็นค่าดีฟอลต์)

    แล้วระบุ IP Address Suggestion เช่น 192.168.1. หมายถึงระบุว่าจะใช้ข้อมูลของ network นี้ เพราะว่าในเครื่องอาจมีการติดตั้งซอฟต์แวร์ที่จำลอง network interface เพิ่มขึ้นมาอีกอัน เป็นต้น

    ส่วนค่าอื่น ๆ ปล่อยไว้ตามเดิม

    ตรวจดูแท็บ Order มีค่าดีฟอลต์ดังรูป

    ผลลัพธ์ของ radius accounting log ที่ไว้ตรวจสอบ ดังรูป

    เพิ่มเติมเนื้อหา

    คัดลอกเนื้อหามาจากเพจเดิม เรื่อง การตั้งค่า pGina และ FreeRADIUS เพื่อส่งค่า RADIUS Accounting ไปยัง Firewall ของมหาวิทยาลัย

    FreeRADIUS Version 2.2.8 แก้ไขไฟล์ /etc/freeradius/proxy.conf
    FreeRADIUS Version 3.0.16 แก้ไขไฟล์ /etc/freeradius/3.0/proxy.conf
    อาจด้วยคำสั่ง vi หรือ nano ตามชอบ

    เพื่อให้มีค่า realm NULL (ประมาณบรรทัดที่ 672) ที่กำหนดค่า Accounting Port เพียงอย่างเดียวส่งไปยังเครื่อง Firewall

    pgina06
    รูปก่อนแก้ไข

    pgina07
    รูปหลังแก้ไข

    ในรูปตัวอย่างเครื่อง Firewall คือ radius.hatyai.psu.ac.th และต้องรู้ค่า secret ที่ตั้งเพื่อใช้สำหรับเครื่อง FreeRADIUS และ Firewall ในที่นี้คือ yoursecret (อันนี้ต้องมีการติดต่อกับ network administrator ของมหาวิทยาลัยเพื่อร่วมกันตั้งค่านี้)

    และแก้ไขอีกแฟ้มคือ

    FreeRADIUS Version 2.2.8 แก้ไขที่แฟ้ม /etc/freeradius/sites-available/default
    FreeRADIUS Version 3.0.16 แก้ไขที่แฟ้ม /etc/freeradius/3.0/sites-available/default

    ประมาณบรรทัดที่ 325 Pre-accounting ใน module ชื่อ preacct

    preacct {
                   preprocess
                   เพิ่ม
    }

    หากยังไม่มีบรรทัดเหล่านี้ ให้เพิ่มด้วยต่อท้ายบรรทัด preprocess

    # append update for pGina no attribute Framed-IP-Address
    if (NAS-IP-Address != 127.0.0.1) {
           update request {
                 Framed-IP-Address = "%{NAS-IP-Address}"
           }
    }

    แล้ว restart FreeRADIUS ใหม่

    pgina08
    รูปแสดงคำสั่งในการ restart

    sudo service freeradius stop
    sudo service freeradius start

    จากนั้นรอให้ทางฝั่งผู้ดูแล Firewall ตั้งค่าโปรแกรมที่ดึงข้อมูลที่ FreeRADIUS ของเราส่งไปนำไปใส่ใน Firewall Rule อนุญาตเครื่องไคลเอ็นต์ไม่ต้อง login ซ้ำ

    ขั้นตอนข้างล่างนี้ ใช้ในขณะทดสอบ option เรื่อง Remove account and profile after logout

    การลบ Windows user account และ profile ที่สร้างโดย pGina

    1.เปิด Computer Management เพื่อเข้าไปลบ user account (ต้อง log off แล้วเท่านั้นจึงลบได้) คลิกขวาปุ่ม Start เลือก Computer Management

    จะได้หน้าต่าง 

    รายการที่มีคำว่า pGina created ค้างอยู่ ผลมาจากการไม่ได้เลือก option Remove  account and profile after logout

    2.เปิด System and Security เพื่อเข้าไปลบ user profile ชื่อ Account unknown

    โดยคลิกปุ่ม Start พิมพ์คำว่า advanc แล้วเลือก View advanced system settings

    คลิกเลือก Advanced system settings ได้หน้าต่างมีหลายส่วน ให้คลิก Setting ในส่วน User Profiles

    คลิกที่ Account unknown แล้วคลิก Delete

  • Fully Shut Down Windows 10

    ทดสอบ Windows 10 รุ่น 1803 พบว่า หากเราจะให้เป็นการ shutdown ที่สมบูรณ์ ไม่ใช่การ shutdown แบบ hibernate แล้วละก็เราจะต้องเปิด command line แบบ Run as Administrator แล้วทำ 2 คำสั่งนี้

    powercfg.exe   /hibernate off
    shutdown  /s  /t  0

    การทำ shutdown ที่สมบูรณ์ เมื่อเราต้องการจะบูตด้วยแผ่นCD SystemRescueCd (หรือ USB boot เป็น Linux) แล้วต้องการจะใช้คำสั่ง ntfs-3g เพื่อ mount แบบ Read Write ได้สำเร็จ เช่น ntfs-3g  /dev/sda1  /mnt/custom เป็นต้น

    การทำ shutdown ที่ไม่สมบูรณ์ เมื่อใช้คำสั่ง ntfs-3g เพื่อ mount แบบ Read Write จะได้ข้อความแจ้งเตือนว่า ทำไม่ได้ และถูกบังคับให้เป็นการ mount แบบ Read-Only แทน
    Windows is hibernated. 

    References:
    How to disable and re-enable hibernation on a computer that is running Windows
    https://support.microsoft.com/en-us/help/920730/how-to-disable-and-re-enable-hibernation-on-a-computer-that-is-running

  • WordPress new editor

    อีกไม่นาน WordPress เวอร์ชั่นถัดไป จะใช้ Editor ชื่อ Gutenberg เป็น default editor แทน โดยขยับให้ editor แบบเดิมไปเป็น plugin ชื่อ Classic editor ครับ

    วันนี้ก็ลองใช้ editor ใหม่นี้ และโพสต์เพจนี้ดูว่าใช้ยากมั้ย

    เมื่อ upgrade WordPress เป็น 4.9.8 ก็จะพบเพจเชิญชวน และ คำแนะนำ

    หน้าตา editor ก็ ประมาณนี้ 

    ตัวเลือกก็เป็น ปุ่มเปิด/ปิด ด้วยเครื่องหมาย สามเหลี่ยม เพื่อเปิดรายการมาให้เลือก เช่น categories ที่ต้องการ เมื่ออยู่ที่แท็บ document แต่ถ้า cursor วางอยู่ในข้อความ จะย้ายไปที่แท็บ Block จะเห็น ตัวเลือกอีกชุด

    น่าจะใช้งานได้ดีกว่าแบบเดิม