Latest Entries »

บทความนี้อธิบายวิธีนำ API Signing Public Key ที่ได้จากคำสั่ง oci setup config ไป Upload เข้าสู่ Oracle Cloud Infrastructure หรือ OCI ผ่านหน้า Web Console

ขั้นตอนนี้จำเป็นสำหรับการใช้งาน OCI CLI จากเครื่อง client เช่น Windows, macOS หรือ Linux เพื่อให้ CLI สามารถ authenticate กับ OCI ได้


API Signing Key คืออะไร

API Signing Key คือ key pair ที่ใช้สำหรับยืนยันตัวตนระหว่าง เครื่อง client กับ OCI API โดยแบ่งออกเป็น 2 ส่วน:

  • Private Key เก็บไว้ที่เครื่อง client ห้ามส่งให้ผู้อื่น
  • Public Key ต้องนำไป upload เข้าหน้า OCI Console ของผู้ใช้

เมื่อใช้ oci setup config ระบบจะช่วยสร้าง key pair และไฟล์ config สำหรับใช้งานกับ OCI CLI

สิ่งที่ต้องเตรียมก่อนเริ่ม

  • บัญชีผู้ใช้ OCI ที่สามารถ login เข้า OCI Console ได้
  • ติดตั้ง OCI CLI บนเครื่อง client แล้ว
  • รันคำสั่ง oci setup config แล้ว
  • มีไฟล์ Public Key ที่สร้างจาก OCI CLI

1. ตรวจสอบไฟล์ Public Key ที่ได้จาก oci setup config

หลังจากรันคำสั่ง:

oci setup config

โดยทั่วไป OCI CLI จะสร้างไฟล์ key ไว้ที่โฟลเดอร์ .oci ภายใต้ user profile ของเครื่อง client

บน Windows path มักจะเป็น:

C:\Users\<your-user>\.oci\oci_api_key_public.pem

และ private key จะอยู่ที่:

C:\Users\<your-user>\.oci\oci_api_key.pem

ไฟล์ที่ต้อง upload เข้า OCI Console คือไฟล์:

oci_api_key_public.pem
ข้อควรระวัง: ห้าม upload หรือแชร์ไฟล์ oci_api_key.pem เพราะเป็น private key ให้ upload เฉพาะไฟล์ oci_api_key_public.pem เท่านั้น

2. เปิดไฟล์ Public Key เพื่อตรวจสอบ

สามารถเปิดไฟล์ public key ด้วย Notepad หรือใช้ PowerShell:

Get-Content "$HOME\.oci\oci_api_key_public.pem"

ตัวอย่างเนื้อหา public key จะมีลักษณะประมาณนี้:

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQE...
-----END PUBLIC KEY-----

ให้ตรวจสอบว่าไฟล์ขึ้นต้นด้วย -----BEGIN PUBLIC KEY----- และลงท้ายด้วย -----END PUBLIC KEY-----

3. Login เข้า OCI Console

เปิด browser แล้ว login เข้า OCI Console ด้วยบัญชีผู้ใช้ที่ต้องการใช้งานกับ OCI CLI

เมื่อ login สำเร็จ ให้คลิกที่ไอคอน Profile หรือรูปผู้ใช้บริเวณมุมขวาบนของหน้าจอ

4. เข้าเมนู User Settings

จากเมนู Profile ให้เลือก:

My Profile

หรือในบางหน้าจออาจแสดงเป็น:

User Settings
ตัวอย่างเมนู Profile และ User Settings ใน OCI Console
ตัวอย่างการเข้าเมนู Profile เพื่อไปยัง User Settings ใน OCI Console

หน้านี้เป็นหน้าสำหรับจัดการข้อมูลของผู้ใช้ เช่น API Keys, Auth Tokens, Customer Secret Keys และ credential อื่น ๆ

5. เปิดเมนู API Keys

ในหน้า User Settings ให้ดูเมนูด้านซ้าย แล้วเลือก:

API Keys

หน้านี้จะแสดงรายการ API Signing Keys ที่ผูกกับผู้ใช้ปัจจุบัน

6. เพิ่ม API Key ใหม่

คลิกปุ่ม:

Add API Key

จากนั้นเลือกวิธีเพิ่ม key เป็น:

Upload Public Key File

แล้วเลือกไฟล์ public key จากเครื่อง client:

C:\Users\<your-user>\.oci\oci_api_key_public.pem

เมื่อเลือกไฟล์แล้ว ให้กด:

Add

หรือ Save ตามที่หน้า Console แสดง

7. ตรวจสอบ Fingerprint หลัง Upload

หลังจาก upload สำเร็จ OCI Console จะแสดงค่า Fingerprint ของ API Key ที่เพิ่มเข้ามา

ตัวอย่าง Fingerprint:

12:34:56:78:90:ab:cd:ef:12:34:56:78:90:ab:cd:ef

ให้นำค่า Fingerprint นี้ไปตรวจสอบกับไฟล์ config ของ OCI CLI

บน Windows ไฟล์ config มักจะอยู่ที่:

C:\Users\<your-user>\.oci\config

ตัวอย่าง config:

[DEFAULT]
user=ocid1.user.oc1..aaaa...
fingerprint=12:34:56:78:90:ab:cd:ef:12:34:56:78:90:ab:cd:ef
tenancy=ocid1.tenancy.oc1..aaaa...
region=ap-singapore-1
key_file=C:\Users\<your-user>\.oci\oci_api_key.pem

ค่า fingerprint ในไฟล์ config ต้องตรงกับ Fingerprint ที่แสดงในหน้า OCI Console

8. ทดสอบ OCI CLI หลัง Upload Public Key

เปิด PowerShell แล้วรันคำสั่งทดสอบ:

oci iam region list

หาก config และ key ถูกต้อง จะเห็นรายการ region ของ OCI

หรือทดสอบดูข้อมูล user ปัจจุบัน:

oci iam user get --user-id <user_ocid>

หากใช้งานกับ OKE ต่อ สามารถทดสอบเรียก cluster ได้ เช่น:

oci ce cluster get `
  --cluster-id <cluster_ocid> `
  --region ap-singapore-1

9. ปัญหาที่พบบ่อย

ปัญหา: NotAuthenticated

ตัวอย่าง error:

ServiceError:
{
  "code": "NotAuthenticated",
  "message": "The required information to complete authentication was not provided or was incorrect."
}

สาเหตุที่เป็นไปได้:

  • ยังไม่ได้ upload public key เข้า OCI Console
  • Upload public key ผิด user
  • ค่า fingerprint ในไฟล์ config ไม่ตรงกับ key ที่ upload
  • ไฟล์ private key path ใน key_file ไม่ถูกต้อง
  • Private key ไม่ตรงกับ public key ที่ upload

ปัญหา: Permission Denied หรือ Authorization failed

หาก authenticate ผ่านแล้ว แต่ไม่มีสิทธิ์เรียก resource บางอย่าง อาจเกิดจาก IAM Policy ยังไม่อนุญาต

ตัวอย่าง:

Authorization failed or requested resource not found.

กรณีนี้ต้องให้ผู้ดูแลระบบตรวจสอบ IAM Policy ของ user หรือ group ที่ user อยู่

ปัญหา: ใช้ key ผิดไฟล์

ไฟล์ public key และ private key มีชื่อคล้ายกัน ควรตรวจสอบให้แน่ใจว่า:

  • ไฟล์ที่ upload คือ oci_api_key_public.pem
  • ไฟล์ที่ระบุใน key_file คือ oci_api_key.pem
หมายเหตุ: Public key ใช้สำหรับ upload เข้า OCI Console ส่วน private key ใช้สำหรับ sign request จากเครื่อง client และต้องเก็บไว้อย่างปลอดภัย

คำสั่งสรุปสำหรับตรวจสอบบน Windows

ดู public key:

Get-Content "$HOME\.oci\oci_api_key_public.pem"

ดู OCI CLI config:

Get-Content "$HOME\.oci\config"

ทดสอบ OCI CLI:

oci iam region list

ทดสอบเรียก OKE cluster:

oci ce cluster get `
  --cluster-id <cluster_ocid> `
  --region ap-singapore-1

สรุป

การ upload API Signing Public Key เข้า OCI Console เป็นขั้นตอนสำคัญหลังจากรัน oci setup config เพื่อให้ OCI CLI สามารถ authenticate กับ OCI API ได้

ผู้ใช้งานต้อง upload เฉพาะไฟล์ oci_api_key_public.pem เข้าไปที่เมนู My Profile → API Keys → Add API Key และตรวจสอบให้แน่ใจว่า Fingerprint ใน OCI Console ตรงกับค่า fingerprint ในไฟล์ ~/.oci/config

หลังจากตั้งค่าถูกต้องแล้ว สามารถใช้ OCI CLI เพื่อจัดการ resource บน OCI เช่น OKE Cluster, Compute, Networking และบริการอื่น ๆ ได้จากเครื่อง client

บทความนี้อธิบายวิธีเชื่อมต่อจากเครื่อง Windows Client ไปยัง Oracle Cloud Infrastructure Container Engine for Kubernetes หรือ OCI OKE ผ่าน Public Kubernetes API Endpoint โดยใช้ OCI CLI และ kubectl


สิ่งที่ต้องเตรียมก่อนเริ่ม

ก่อนเชื่อมต่อ OKE ควรมีข้อมูลและเครื่องมือต่อไปนี้:

  • Windows client ที่สามารถออกอินเทอร์เน็ตได้
  • สิทธิ์เข้าใช้งาน OCI Tenancy
  • สิทธิ์เข้าถึง OKE Cluster
  • Cluster OCID ของ OKE
  • Region ของ Cluster เช่น ap-singapore-1
  • Public Endpoint ของ Kubernetes API เปิดใช้งานแล้ว
  • ติดตั้ง OCI CLI
  • ติดตั้ง kubectl

1. ติดตั้ง OCI CLI และ kubectl บน Windows

เปิด PowerShell แล้วติดตั้งเครื่องมือที่จำเป็นด้วยคำสั่งนี้:

winget install Oracle.OCI-CLI
winget install Kubernetes.kubectl

หลังจากติดตั้งเสร็จ ให้ปิดและเปิด PowerShell ใหม่ แล้วตรวจสอบเวอร์ชัน:

oci --version
kubectl version --client

2. ตั้งค่า OCI CLI

รันคำสั่งต่อไปนี้เพื่อเริ่มตั้งค่า OCI CLI:

oci setup config

โดยปกติไฟล์ config จะถูกสร้างไว้ที่:

C:\Users\<your-user>\.oci\config

ระหว่างการตั้งค่า OCI CLI จะต้องใช้ข้อมูลต่อไปนี้:

Tenancy OCID
User OCID
Region
API Signing Key
Fingerprint

ตัวอย่าง Region สำหรับ Singapore:

ap-singapore-1

3. ค้นหา OKE Cluster OCID

เข้าไปที่ OCI Console แล้วไปที่:

Developer Services
→ Kubernetes Clusters
→ เลือก Cluster ที่ต้องการ
→ Cluster Details
→ OCID

คัดลอกค่า Cluster OCID เก็บไว้สำหรับใช้ในขั้นตอนถัดไป

ตัวอย่างรูปแบบ Cluster OCID:

ocid1.cluster.oc1.ap-singapore-1.aaaa...

4. สร้าง kubeconfig สำหรับเชื่อมต่อ OKE ผ่าน Public Endpoint

สร้างโฟลเดอร์ .kube ก่อน:

mkdir $HOME\.kube -Force

จากนั้นรันคำสั่งนี้เพื่อสร้าง kubeconfig:

oci ce cluster create-kubeconfig `
  --cluster-id <cluster_ocid> `
  --file "$HOME\.kube\config" `
  --region ap-singapore-1 `
  --token-version 2.0.0 `
  --kube-endpoint PUBLIC_ENDPOINT

ตัวอย่าง:

oci ce cluster create-kubeconfig `
  --cluster-id ocid1.cluster.oc1.ap-singapore-1.aaaa... `
  --file "$HOME\.kube\config" `
  --region ap-singapore-1 `
  --token-version 2.0.0 `
  --kube-endpoint PUBLIC_ENDPOINT

ค่าที่สำคัญคือ:

--region ap-singapore-1
--kube-endpoint PUBLIC_ENDPOINT

โดย PUBLIC_ENDPOINT หมายถึงการเชื่อมต่อไปยัง Kubernetes API Server ผ่าน Public Endpoint ของ OKE Cluster

5. ทดสอบการเชื่อมต่อด้วย kubectl

หลังจากสร้าง kubeconfig แล้ว ให้ทดสอบด้วยคำสั่ง:

kubectl get nodes

หากเชื่อมต่อสำเร็จ จะเห็นรายการ Worker Nodes ของ OKE Cluster

สามารถตรวจสอบ namespace ได้ด้วยคำสั่ง:

kubectl get namespaces

หรือตรวจสอบ pod ทั้งหมดใน cluster:

kubectl get pods -A

6. กรณีมีหลาย OCI Profile

หากในเครื่องมี OCI CLI หลาย profile สามารถระบุ profile ได้ตอนสร้าง kubeconfig:

oci ce cluster create-kubeconfig `
  --cluster-id <cluster_ocid> `
  --file "$HOME\.kube\config" `
  --region ap-singapore-1 `
  --token-version 2.0.0 `
  --kube-endpoint PUBLIC_ENDPOINT `
  --profile <profile_name>

หรือกำหนด environment variable ก่อนใช้งาน kubectl:

$env:OCI_CLI_PROFILE="<profile_name>"
kubectl get nodes

7. ตรวจสอบ Context ของ Kubernetes

ดู context ที่มีอยู่ใน kubeconfig:

kubectl config get-contexts

ดู context ที่กำลังใช้งานอยู่:

kubectl config current-context

หากต้องการเปลี่ยน context:

kubectl config use-context <context_name>

8. ปัญหาที่พบบ่อย

ปัญหา: Unauthorized

ตัวอย่าง error:

error: You must be logged in to the server

สาเหตุที่เป็นไปได้:

  • OCI CLI config ไม่ถูกต้อง
  • API Key หรือ Fingerprint ไม่ถูกต้อง
  • ใช้ OCI Profile ผิด
  • ผู้ใช้ไม่มี IAM Policy สำหรับเข้าถึง OKE
  • Kubernetes RBAC ยังไม่อนุญาตให้ผู้ใช้นี้เข้าถึง resource ใน cluster

ปัญหา: Connection Timeout

ตัวอย่าง error:

Unable to connect to the server: i/o timeout

สาเหตุที่เป็นไปได้:

  • OKE Cluster ไม่ได้เปิด Public Endpoint
  • เครื่อง Windows Client ถูก firewall หรือ proxy block
  • ระบุ region ผิด
  • ระบุ cluster OCID ผิด
  • Security List หรือ Network Security Group ของ Public Endpoint ไม่อนุญาต IP ของเครื่อง client

ปัญหา: kubectl ไม่เจอ kubeconfig

สามารถกำหนด path ของ kubeconfig ได้โดยตรง:

$env:KUBECONFIG="$HOME\.kube\config"
kubectl get nodes

ปัญหา: kubectl พยายามเชื่อมต่อไปที่ localhost:8080

หากพบ error ลักษณะนี้:

couldn't get current server API group list: Get "http://localhost:8080/api?timeout=32s":
dial tcp 127.0.0.1:8080: connectex: No connection could be made because the target machine actively refused it.

หมายความว่า kubectl ยังไม่ได้ใช้ kubeconfig ของ OKE หรือ kubeconfig ไม่ถูกโหลดอย่างถูกต้อง

ให้ลองระบุ kubeconfig โดยตรง:

kubectl --kubeconfig "$HOME\.kube\config" get nodes

หรือกำหนด environment variable:

$env:KUBECONFIG="$HOME\.kube\config"
kubectl config get-contexts
kubectl get nodes

ตรวจสอบว่า kubeconfig ชี้ไปที่ OKE endpoint ไม่ใช่ localhost:

kubectl config view --minify

ค่า server: ควรเป็น endpoint ของ OKE เช่น https://...:6443 ไม่ใช่ http://localhost:8080

คำสั่งสรุปแบบสั้น

ใช้ชุดคำสั่งนี้เมื่อต้องการเชื่อมต่อจาก Windows Client ไปยัง OCI OKE ผ่าน Public Endpoint:

mkdir $HOME\.kube -Force

oci ce cluster create-kubeconfig `
  --cluster-id <cluster_ocid> `
  --file "$HOME\.kube\config" `
  --region ap-singapore-1 `
  --token-version 2.0.0 `
  --kube-endpoint PUBLIC_ENDPOINT

kubectl get nodes

สรุป

การเชื่อมต่อ OCI OKE จาก Windows Client ผ่าน Public Endpoint มีขั้นตอนหลักคือ ติดตั้ง OCI CLI และ kubectl, ตั้งค่า OCI CLI, สร้าง kubeconfig ด้วยคำสั่ง oci ce cluster create-kubeconfig และทดสอบการเชื่อมต่อด้วย kubectl

เมื่อเชื่อมต่อสำเร็จ ผู้ใช้งานสามารถบริหารจัดการ Kubernetes resource บน OKE ได้จากเครื่อง Windows Client โดยตรงผ่านคำสั่ง kubectl

Update Pi-hole

หลังจากที่ได้ใช้ Pi-hole เพื่อบล็อคโฆษณามาซักพัก ก็ทำงานได้ดี แล้วก็ลืมไปเลยว่าเคยมีอยู่ พอวันนี้มาเปิดดูพบว่ามีเวอร์ชั่นใหม่ออกมาอีกเยอะเลย งั้นมาอัพเกรดกันดีกว่า

ขั้นตอนการอัพเกรดสามารถทำได้โดย
1. SSH ไปที่ Linux ที่ลง Pi-hole ด้วยคำสั่ง putty pi-hole.domain.com
2. รันคำสั่ง pihole -v เพื่อตรวจสอบเวอร์ชั่น

3. สั่งอัพเกรดด้วยคำสั่ง pihole -up (อาจต้องใส่ sudo ข้างหน้าด้วย ขึ้นอยู่กับ user ที่ล็อกอิน)

4. รอซัก 1-2 นาทีก็อัพเกรดเสร็จ

5. ถ้าลองมาตรวจสอบในหน้า web admin ก็จะแสดงเป็นเวอร์ชั่นใหม่เช่นกัน

6. แล้วเราก็จะได้หน้ากราฟสวยๆ กลับมาแล้ว ว่าแต่ 5.2.4 กับ 5.0 มันต่างกันตรงไหนหว่า ขอไปอ่าน releases note ก่อนนะ

สิ่งที่เราอาจจะเจอเมื่อหิ้ว Apple TV มาใช้งานกับ Wifi โรงแรมคือต้องทำ authentication เช่นกรอกเลขห้องและนามสกุล (ชื่ออย่างเป็นทางการคือ captive portal authentivation) ซึ่งปัญหานี้จะไม่เกิดกับอุปกรณ์ทั่วไปที่มี web browser แต่กับ Apple TV จะไม่สามารถ ทำงานได้ เพราะลุงทิมและลุงจ๊อบไม่ยอมใส่ web browser น่ะซิ ปัญหาก็เลยเกิด

แต่เราก็มีวิธีแก้ปัญหาเหมือนกัน แต่อาจจะเหนื่อยนิดนึง วิธีที่สามารถทำได้คือ

  1. จด mac address ของ Apple TV แล้วถอดปลั๊กไฟซะ
  2. เอา mac address ดังกล่าวมาใส่ Macbook หรือ Windows
  3. authenticate ผ่าน web browser ด้วย mac address ตามปกติ
  4. เปลี่ยน mac address กลับเป็นของเดิม
  5. เสียบสายไฟที่ Apple TV แล้วก็ใช้งานได้เลย

การเปลี่ยน mac address ใน OSX สามารถทำได้โดยรันคำสั่ง

sudo ifconfig en0 ether 08-66-98-xx-xx-xx

เรื่องที่แปลกคือ OSX Big Sur ต้องรันคำสั่งดังกล่าว 3 ครั้งรัวๆ ถึงจะได้ผล ทำไม่น่ะเหรอ ไม่รู้เหมือนกันครับ ใครรู้ช่วยบอกที

การอัพเกรด ESXi สามารถทำได้หลายวิธี ปกติผมจะใช้วิธีสร้าง USB Boot ESXi Installer แต่วันนี้จะมาใช้วิธี online upgrade ผ่าน cli

โดยเริ่มจาก
1) SSH หรือ console ที่ ESXi ขอละไม่พูดถึงวิธีเปิด service ดังกล่าวนะครับ
2) จากนั้นพิมพ์ vmware -v เพื่อตรวจสอบเวอร์ชั่นก่อนอัพเกรด

[root@NUC-1:~] vmware -v
VMware ESXi 6.0.0 build-3620759
[root@NUC-1:~]

3) เปิดไฟร์วอลล์ด้วยคำสั่ง

[root@NUC-1:~] esxcli network firewall ruleset set -e true -r httpClient
[root@NUC-1:~]

4) list เวอร์ชั่นอัพเกรดที่มี

[root@NUC-1:~] esxcli software sources profile list -d https://hostupdate.vmware.com/software/VUM/PRODUCTION/main/vmw-depot-index.xml | grep -i ESXi-6.5 | sort

จะได้ผลลัพธ์เป็น

ESXi-6.5.0-20170104001-no-tools VMware, Inc. PartnerSupported
ESXi-6.5.0-20170104001-standard VMware, Inc. PartnerSupported
ESXi-6.5.0-20170301001s-no-tools VMware, Inc. PartnerSupported
ESXi-6.5.0-20170301001s-standard VMware, Inc. PartnerSupported
ESXi-6.5.0-20170304001-no-tools VMware, Inc. PartnerSupported
ESXi-6.5.0-20170304001-standard VMware, Inc. PartnerSupported
ESXi-6.5.0-20170304101-no-tools VMware, Inc. PartnerSupported
ESXi-6.5.0-20170304101-standard VMware, Inc. PartnerSupported
ESXi-6.5.0-20170404001-no-tools VMware, Inc. PartnerSupported
ESXi-6.5.0-20170404001-standard VMware, Inc. PartnerSupported
ESXi-6.5.0-20170701001s-no-tools VMware, Inc. PartnerSupported
ESXi-6.5.0-20170701001s-standard VMware, Inc. PartnerSupported
ESXi-6.5.0-20170702001-no-tools VMware, Inc. PartnerSupported
ESXi-6.5.0-20170702001-standard VMware, Inc. PartnerSupported
ESXi-6.5.0-20171004001-no-tools VMware, Inc. PartnerSupported
ESXi-6.5.0-20171004001-standard VMware, Inc. PartnerSupported
ESXi-6.5.0-4564106-no-tools VMware, Inc. PartnerSupported
ESXi-6.5.0-4564106-standard VMware, Inc. PartnerSupported
[root@NUC-1:~]

no-tools หมายถึงไม่รวม VMware Tools
standard จะรวม VMware Tools มาด้วย แต่จำนวนข้อมูลที่ต้องดาวโหลดก็มาขึ้นอีกนิดหน่อย

5) สั่งอัพเกรด ด้วยเวอร์ชั่นที่ต้องการ

[root@NUC-1:~] [root@NUC-1:~] esxcli software profile update -p ESXi-6.5.0-20170104001-standard -d https://hostupdate.vmware.com/software/VUM/PRODUCTION/main/vmw-depot-index.xml

จะได้ผลลัพธ์ยาวมาก ตัวยย่างข้างล่างตัดมาแค่บางส่วน แต่ตอนต้นๆ จะมีบอกว่า “Reboot Required: true”

Update Result
   Message: The update completed successfully, but the system needs to be rebooted for the changes to be effective.
   Reboot Required: true
   VIBs Installed: VMW_bootbank_ata-libata-92_3.00.9.2-16vmw.650.0.0.4564106, VMW_bootbank_ata-pata-amd_0.3.10-3vmw.650.0.0.4564106, VMW_bootbank_ata-pata-atiixp_0.4.6-4vmw.650.0.0.4564106, VMW_bootbank_ata-pata-cmd64x_0.2.5-3vmw.650.0.0.4564106, VMW_bootbank_ata-pata-hpt3x2n_0.3.4-3vmw.650.0.0.4564106, VMW_bootbank_ata-pata-pdc2027x_1.0-3vmw.650.0.0.4564106, VMW_bootbank_ata-pata-serverworks_0.4.3-3vmw.650.0.0.4564106, VMW_bootbank_ata-pata-sil680_0.4.8-3vmw.650.0.0.4564106, VMW_bootbank_ata-pata-via_0.3.3-2vmw.650.0.0.4564106, VMW_bootbank_block-cciss_3.6.14-10vmw.650.0.0.4564106, VMW_bootbank_char-random_1.0-3vmw.650.0.0.4564106, VMW_bootbank_ehci-ehci-hcd_1.0-

6) เสร็จแล้วก็ปิดไฟร์วอลล์ ที่เปิดไว้ด้วยคำสั่ง

[root@NUC-1:~] esxcli network firewall ruleset set -e false -r httpClient


7) แล้วก็ reboot

[root@NUC-1:~] reboot

8) ถ้าอยากตรวจสอบก็ SSH เข้าไปรัน vmware -v อีกครั้ง

[root@NUC-1:~] vmware -v
VMware ESXi 6.0.0 build-4887370
[root@NUC-1:~]

อ้างอิงจาก
How to Upgrade ESXi 6.0 to 6.5 via CLI [On Line]

โดยค่ามาตรฐาน VMware vSphere ESXi สามารถทำงานร่วมกับ Synology NAS ได้ทั้ง iSCSI และ NFS แต่จะมีเฉพาะ iSCSI เท่านั้นที่สามารถทำ hardware acceleration เป็นค่าดีฟอล์ท ซึ่งหากใช้เป็น NFS จะทำให้มีปัญหา performance ได้ ต้องติดตั้งเพิ่มต่างหาก

เริ่มต้นสังเกตุที่ NFS datastore จะบอกว่า Unsupported

ดังนั้นจึงจำเป็นต้องติดตั้งไดรเวอร์หรือ vib ของ Synology NFS เสียก่อน โดยสามารถดาวน์โหลดได้ที่นี่ synonfs-vaai-plugin-1.1-1004.vib และ esx-nfsplugin.vib

แล้วก็อัพโหลดเข้าไปใน ESXi (อย่าลืมไป enable SSH service ก่อนนะครับ) ในรูปผมอัพโหลดด้วย FileZilla ง่ายดี

แล้วก็ connect ด้วย SSH ไปที่ ESXi

[root@NUC-3:~] esxcli software vib install -v /tmp/esx-nfsplugin.vib --no-sig-check

Installation Result
    Message: The update completed successfully, but the system needs to be rebooted for the changes to be effective.
    Reboot Required: true
    VIBs Installed: Synology_bootbank_esx-nfsplugin_1.0-1
    VIBs Removed:
    VIBs Skipped:
[root@NUC-3:~]
[root@NUC-3:~] esxcli software vib install -v /tmp/synonfs-vaai-plugin-1.1-1004.vib --no-sig-check
Installation Result
    Message: The update completed successfully, but the system needs to be rebooted for the changes to be effective.
    Reboot Required: true
    VIBs Installed: Synology_bootbank_synonfs-vaai-plugin_1.1-1004
    VIBs Removed:
    VIBs Skipped:
[root@NUC-3:~]

หลังจากนั้น reboot ESXi ก็จะใช้งานได้ หากต้องการตรวจสอบหลังจาก reboot สามารถเข้าไปดูได้ที่

[[root@NUC-3:~] esxcli software vib list | grep 'nfs'
esx-nfsplugin 1.0-1 Synology VMwareAccepted 2017-10-22
synonfs-vaai-plugin 1.1-1004 Synology VMwareAccepted 2017-10-22
[root@NUC-3:~]

เมื่อตรงสอบผ่าน vSphere Web Client ก็จะเห็นเป็น Supported แบบนี้

อ้างอิงจาก
How do I install Synology NFS VAAI Plug-in on an ESXi host?
Synology NFS Plug-in for VMware VAAI

ในวินโดวส์รุ่นใหม่ๆ เราสามารถคำนวณ file integrity checking โดยที่ไม่ต้องติดตั้งโปรแกรมอื่นเพิ่มเติมเพียงใช้คำสั่ง Get-FileHash ดังนี้

PS D:\Software> Get-FileHash .\VMware-VCSA-all-6.5.0-5178943.iso

Algorithm Hash Path
--------- ---- ----
SHA256 328B6842A980287E5268CF657152C7D4746DBE2EF2DCE999E759BB9BB0DA3119 D:\Software\VMware-VCSA-all-6.5.0-5178943.iso

ซึ่งถ้าดูลำบากอาจเพิ่ม Format-List แบบนี้

PS D:\Software> Get-FileHash .\VMware-VCSA-all-6.5.0-5178943.iso | Format-List

Algorithm : SHA256
Hash : 328B6842A980287E5268CF657152C7D4746DBE2EF2DCE999E759BB9BB0DA3119
Path : D:\Software\VMware-VCSA-all-6.5.0-5178943.iso

ถ้าอยากได้ MD5 หรือ hash algorithm อื่นๆ ก็ระบุลงไปตามต้องการ

PS D:\Software> Get-FileHash .\VMware-VCSA-all-6.5.0-5178943.iso -Algorithm MD5 | Format-List

Algorithm : MD5
Hash : 59B457E5FFC1A59D3E784CCFC2DF1745
Path : D:\Software\VMware-VCSA-all-6.5.0-5178943.iso

แต่ถ้าวินโดวส์เก่าๆ ที่ไม่มี PowerShell ก็สามารถไปดาวน์โหลด utility Microsoft File Checksum Integrity Verifier (FCIV) ได้ ที่นี่ เช่นเดิมครับ

อ้างอิงจาก Microsoft MSDN Get-FileHash

ไลเซ่นของบริษัทไมโครซอร์ฟจะมีการขายขาดอยู่ 3 ลักษณะ

    1) OEM License – เป็นชนิดที่มีราคาถูกที่สุด แต่มีเงื่อนไขคือต้องซื้อพร้อมกับเครื่องคอมพิวเตอร์ที่ส่งมาจากผู้ผลิตมาซื้อทีหลังไม่ได้ และถ้าเครื่องคอมพิวเตอร์หาย ถูกขโมย หรือหมดอายุไม่สามารถย้ายไปใช้ที่เครื่องอื่นได้
    2) Open License – เป็นลักษณะที่ซื้อเป็นจำนวนมาก 5 ข้อดีคือสามารถใช้คีย์เดียวกันในการ activate ได้ สามารถย้ายเครื่องได้ แต่ราคาจะแพงกว่า OEM
    3) FPP – เป็นการซื้อซอร์ฟแวร์ที่อยู่ในกล่อง มีคู่มือการใช้และคำอธิบายมาด้วย ราคาจะแพงที่สุด

โดยปกติการขายให้กับหน่วยงานและบริษัทจะเป็นแบบ Open License ยกเว้นต้องการราคาที่ถูกอาจขายเป็นแบบ OEM ครับ ทั้งนี้ไม่รวมไลเซ่นชนิดที่เป็น subscription base เช่น Office 365 หรือ MSDN นะครับ

ดังนั้นถ้าเห็นแก่ว่าของถูกแม้จะ activate Windows ได้ แต่ถ้าใช้ผิดชนิดก็มีโอกาสที่ BSA จะมาเยี่ยมและถูกปรับอยู่ดีครับ

ถ้าข้อมูลที่ผมผิดหรือไม่ครบ รบกวนช่วยแจ้งด้วยนะครับ เนื่องจากไม่ได้ขายไมโครซอร์ฟมาหลายปีแล้ว

โดยปกติ VMware ESXi ที่เป็นเวอร์ชันฟรีที่ไม่มี license ของ vCenter Server ๗ะไม่สามารถใช้คำสั่ง clone ได้ แต่อย่างไรก็ตามเรายังสามารถ copy vmdk file ผ่านทาง command line ได้ แล้วค่อยสร้าง VM ตัวใหม่ให้มาเรียกใช้ vmdk file ทีหลังก็ได้ ซึ่งสามารถทำได้โดยใช้คำสั่ง vmkfstools

เริ่มจาก
1) สร้าง directory สำหรับ VM ใหม่ ชื่อว่า Server2

[root@ESXi-1:~] cd /vmfs/vmfs/volumes/volume_A
[root@ESXi-1:/vmfs/volumes/volume_A] mk Server2

2) ใช้คำสั่ง vmkfstools แล้วตามด้วย -i source_vmdk destination_vmdk และระบุชนิดของดิสก์ด้วย -d thin ดังนี้

[root@ESXi-1:/vmfs/volumes/volume_A] vmkfstools -i ./Server1/Server1.vmdk ./Server2/Server2.vmdk -d thin

3) รอจนครบ 100% ระยะเวลาขึ้นอยู่กับขนาดของไฟล์ vmdk และความเร็วของ datastore

[Destination disk format: VMFS thin-provisioned
Cloning disk './Server1/Server1.vmdk'...
Clone: 100% done.

สำหรับ syntax และ option อื่นๆ ของ vmkfstools สามารถดูได้ที่ Cloning or Converting a Virtual Disk or RDM

ในการทำระบบ Active Directory เรามักจะสร้าง domain controller อย่างน้อย 2 เครื่องเพื่อให้ระบบมี high availability ที่สูงขั้น เผื่อเครื่องหนึ่งหยุดทำงานระบบจะได้ไม่หยุดชะงัก และในบางครั้งที่หน่วยงานมีการทำ security ในคอนเซป least privilege คือไม่ยอมให้ account Administrator แต่ให้สร้างเป็น account ธรรมดาที่มีสิทธิ์ขั้นต่ำแค่ promote domain controller ได้เท่านั้น สามารถทำได้โดยเพิ่ม account ดังกล่าวเข้าในกรุ๊ปดังต่อไปนี้

  • Domain Admins
  • Enterprise Admins
  • Schema Admins

แต่อย่างไรก็ตาม account ดังกล่าวก็ยังไม่สามารถ login เข้าไปในเครื่อง domain controller เพื่อตรวจสอบการทำงานหลังจาก promote ได้ เพื่อให้ login ได้จำเป็นต้องเพิ่มอีก 1 กรุ๊ปคือ

  • Administrators

สังเกตุว่าถ้าเป็นกรุ๊ปจะมี “s” ต่อท้าย แต่ถ้าเป็นผู้ใช้งาน (คน) จะไม่มี “s” เช่น Administrators กับ Administrator

รูปข้างล่างแสดง tab Member Of ซึ่งจะบอกได้ว่าอยู่ในกรุ๊ปไหนบ้างMinimum_Privilege_to_Promote_Domain_Controller_1
สำหรับ Domain Users จะเป็นกรุ๊ปที่ถูกเพิ่มโดยอัตโนมัติเวลาสร้างผู้ใช้งานใหม่