หน่วย
1. ข้อมูลเบื้องต้นเกี่ยวกับ DevOps และ Cloud AI: บทบาท ขอบเขต การรับรองความถูกต้อง ความปลอดภัย และความลับ 2. การออกแบบไปป์ไลน์ CI/CD ด้วยปัญญาประดิษฐ์: GitHub Actions และ GitLab CI 3. การจัดการโครงสร้างพื้นฐานเป็นโค้ด: ปัญญาประดิษฐ์ด้วย Terraform และ IaC 4. การบรรจุคอนเทนเนอร์: การเพิ่มประสิทธิภาพ Dockerfile และรูปภาพด้วยปัญญาประดิษฐ์ 5. Kubernetes: การจัดระเบียบแบบ Manifest, Helm และ AI 6. การตรวจสอบและการสังเกต: กฎเกณฑ์เมตริก บันทึก การติดตาม และสัญญาณเตือน 7. การจัดการเหตุการณ์และการชันสูตรพลิกศพ: การวิเคราะห์สาเหตุที่แท้จริงด้วยปัญญาประดิษฐ์ 8. การเพิ่มประสิทธิภาพต้นทุนบนคลาวด์ (FinOps): การค้นหาขยะด้วยปัญญาประดิษฐ์ 9. การสร้างสคริปต์และระบบอัตโนมัติ: Bash, Python และ PowerShell 10. การจัดการความปลอดภัยและความลับ: DevSecOps และปัญญาประดิษฐ์ 11. การตรวจสอบผลิตภัณฑ์ กลยุทธ์การเผยแพร่ และเวิร์กโฟลว์ AI แบบครบวงจร
หน่วย 9 / 11

การสร้างสคริปต์และระบบอัตโนมัติ: Bash, Python และ PowerShell

กำไร:

  • ความสามารถในการเข้าใจจุดแข็งของ Bash, Python และ PowerShell และมีปัญญาประดิษฐ์สร้างร่างสคริปต์ที่ปลอดภัยและได้รับการป้องกัน
  • ความสามารถในการเพิ่ม guardrails ให้กับสคริปต์ เช่น set -euo pipefail, การตรวจสอบตัวแปรว่าง, โหมด dry-run และการบันทึก
  • ความสามารถในการอ่านคำสั่งทำลายล้างและลองใช้ในสภาพแวดล้อมที่แยกจากกันและลองใช้คำสั่งแห้งก่อน และใช้ระเบียบวินัยในการไม่ฝังความลับไว้ในสคริปต์

จิตวิญญาณของ DevOps สรุปได้ในประโยคเดียว: “ทำให้งานที่คุณทำสองครั้งเป็นอัตโนมัติ” งานซ้ำๆ ที่ทำด้วยตนเอง เช่น การล้างบันทึก การสำรองข้อมูล การตรวจสอบสภาพเซิร์ฟเวอร์ การประมวลผลไฟล์เป็นแบตช์ ต้องใช้เวลาและเสียหายในที่สุดจากข้อผิดพลาดของมนุษย์ สคริปต์เข้ามาแทนที่งานเหล่านี้: โปรแกรมขนาดเล็กที่รันชุดคำสั่งในลักษณะต่อเนื่อง เชื่อถือได้ และทำซ้ำได้ มืออาชีพ DevOps มักใช้สามภาษา: Bash (สำหรับเชลล์สคริปต์ Linux/Unix), Python (สำหรับตรรกะที่ซับซ้อน, การเรียก API, การจัดการข้อมูล) และ PowerShell (สำหรับ Windows และการจัดการคลาวด์)

บางที AI อาจเป็นจุดที่มอบคุณค่าที่เป็นประโยชน์มากที่สุดในการสร้างสคริปต์ ได้แก่ การสร้างร่างการทำงานจากคำอธิบายประโยคเดียว การแก้ไขข้อบกพร่องลึกลับ การแปลสคริปต์เป็นภาษาอื่น แต่สคริปต์เป็นอันตรายเมื่อทำงานแบบสุ่มสี่สุ่มห้า - rm ผิด Remove-Item -Recurse จะลบไฟล์อย่างถาวร นั่นเป็นเหตุผลที่คำขวัญของหน่วยนี้คือ: ให้ AI เขียนสคริปต์ คุณอ่านมัน ลองใช้ในเซฟโหมดก่อน จากนั้นจึงเรียกใช้

จะเลือกภาษาไหนและเมื่อใด? กฎง่ายๆ: หากงานประกอบด้วยการรันคำสั่งระบบหลายคำสั่งติดต่อกัน (คัดลอกไฟล์ รีสตาร์ทบริการ ดึงไฟล์เก็บถาวร) Bash เป็นตัวเลือกที่เป็นธรรมชาติที่สุดเนื่องจาก Linux แพร่หลายบนเซิร์ฟเวอร์ หากงานเกี่ยวข้องกับตรรกะการตัดสินใจ การวนซ้ำ การแปลงข้อมูล การร้องขอ API หรือการประมวลผล JSON ซึ่งก็คือตรรกะที่ยาวเกิน 20 บรรทัด Python มีความโดดเด่นในด้านความสามารถในการอ่านและไลบรารีที่หลากหลาย สคริปต์ Bash ที่ซับซ้อนกลายเป็นเรื่องยากที่จะเข้าใจได้อย่างรวดเร็ว ในขณะที่ Python ยังคงรักษาได้ง่าย หากงานเกี่ยวข้องกับการจัดการเซิร์ฟเวอร์ Windows, Active Directory หรือ Azure PowerShell ก็คือสภาพแวดล้อมทางธรรมชาติเนื่องจากลักษณะเชิงวัตถุผสานเข้ากับแพลตฟอร์มเหล่านี้อย่างลึกซึ้ง การระบุภาษาที่คุณเลือกและเหตุผลในการขอสคริปต์ไปยัง AI ช่วยให้มั่นใจได้ว่าผลลัพธ์มีความเหมาะสมและเป็นสำนวนสำหรับสภาพแวดล้อมของคุณ

ทีละขั้นตอน: การสร้างสคริปต์ที่ปลอดภัย

  1. อธิบายงานและสภาพแวดล้อม มันจะทำอะไร OS/เชลล์ใด มีข้อจำกัดอะไรบ้าง
  2. ขอราวกั้นความปลอดภัย. ใน bash ให้ตั้งค่า -euo pipefail (หยุดเมื่อเกิดข้อผิดพลาด หยุดที่ตัวแปรที่ไม่ได้กำหนด) พร้อมท์การยืนยันสำหรับการดำเนินการที่เป็นอันตราย ให้ย้ายก่อนแทนที่จะลบ
  3. ขอโหมดทดลองรัน ให้สคริปต์เขียนว่าจะทำอย่างไรกับ --dry-run แต่อย่าทำ
  4. อ่านและทำความเข้าใจ ตรวจสอบสิ่งที่แต่ละแถวทำ โดยเฉพาะการลบ/ย้าย/การทำงานของเครือข่าย
  5. ลองในสภาพแวดล้อมที่โดดเดี่ยว ในโฟลเดอร์ทดสอบ ให้รันด้วยข้อมูลตัวอย่าง
  6. เพิ่มในการเข้าสู่ระบบ ให้สคริปต์บันทึกสิ่งที่ทำเพื่อให้สามารถดูได้ในภายหลัง

สิ่งสำคัญของการเขียนสคริปต์ที่ปลอดภัย

สคริปต์การผลิตควรมีรั้วเหล่านี้:

  • หยุดในกรณีเกิดข้อผิดพลาด ทุบตี: set -euo pipefail PowerShell: $ErrorActionPreference = 'หยุด' หากขั้นตอนหนึ่งล้มเหลว ขั้นตอนต่อไปก็ไม่ควรทำงาน
  • Idempotency (การทำซ้ำ) หากสคริปต์ทำงานสองครั้ง ก็ไม่ควรสร้างความเสียหายเป็นสองเท่า ตรรกะ "ถ้าคุณมีอยู่แล้ว ให้ข้ามมันไป"
  • การอนุมัติและการทดลองดำเนินการ สำหรับปฏิบัติการทำลายล้าง "แน่ใจนะ?" หรือแฟล็ก --dry-run
  • การตรวจสอบอินพุต พารามิเตอร์เป็นไปตามที่คาดไว้หรือไม่ ตัวแปรว่างสามารถเปลี่ยน rm -rf "$DIR"/ เป็น rm -rf /ดิสทริบิวชันได้
  • การบันทึก บันทึกถึงสิ่งที่ทำและเมื่อใด
เคล็ดลับ: ข้อผิดพลาดที่อันตรายที่สุดใน Bash คือการลบตัวแปรว่าง rm -rf "$DIR" พยายามลบไดเร็กทอรีรากหาก $DIR ว่างเปล่า set -u (หยุดบนตัวแปรที่ไม่ได้กำหนด) และการตรวจสอบ [ -n "$DIR" ] ก่อนที่จะลบเป็นการช่วยชีวิต ขอการป้องกันเหล่านี้อย่างชัดเจนเมื่อขอสคริปต์จาก AI

ความปลอดภัย: คำสั่งลับและการทำลายล้าง

อันตรายใหญ่สองประการ:

  1. การฝังความลับลงในสคริปต์ รหัสผ่านจะต้องไม่เป็นข้อความธรรมดาภายในสคริปต์โทเค็น ต้องอ่านจากตัวแปรสภาพแวดล้อมหรือห้องนิรภัย สคริปต์เข้าสู่ Git; ความลับที่ถูกฝังไว้คือการรั่วไหลอย่างถาวร
  2. คำสั่งทำลายล้าง rm -rf, Remove-Item -Recurse -Force, DROP TABLE, terraform destroy — เมื่อคุณเห็นสิ่งเหล่านี้ในสคริปต์ ให้หยุดและคิดให้รอบคอบ อย่าลองใช้คำสั่งทำลายล้างที่สร้างโดย AI ในผลิตภัณฑ์ก่อน
ข้อควรระวัง: เมื่อคุณบอกให้ AI "เขียนสคริปต์ที่ล้างไฟล์เหล่านี้" ให้อ่านขอบเขตของคำสั่ง find ... -delete หรือ rm ที่สร้างขึ้นอย่างละเอียด ไวด์การ์ด (*) หรือเส้นทางที่ไม่ถูกต้องจะลบมากกว่าที่คุณต้องการลบ เรียกใช้สคริปต์ก่อนเสมอด้วยโหมด "รายการที่จะลบ" แทนที่จะลบ

เปรียบเทียบสามภาษา

เกณฑ์

ทุบตี

หลาม

พาวเวอร์เชลล์

ที่ไหนดีที่สุด

เชลล์ Linux, ห่วงโซ่คำสั่ง

ตรรกะที่ซับซ้อน, API, ข้อมูล

การจัดการคลาวด์ของ Windows

เส้นโค้งการเรียนรู้

ปานกลาง (ติดกับดัก)

ง่าย

ปานกลาง

การจัดการข้อผิดพลาด

ชุด -euo ไปป์ล้มเหลว

ลอง/ยกเว้น

ลอง/จับ -ErrorAction

พกพาสะดวก

ยูนิกซ์/ลินุกซ์/mac

ทุกที่

ข้ามแพลตฟอร์ม (PS 7+)

เมื่อ

สั้น ๆ ระบบทำงาน

ลอจิกยาวเกิน 20 บรรทัด

Windows/AD/Azure

มินิเคสสามอัน

กรณีที่ 1 — ใช้เวลาประดิษฐ์ 2 ชั่วโมงใน 5 นาที วิศวกรคนหนึ่งใช้เวลา 2 ชั่วโมงในการรวบรวมและจัดเก็บบันทึกจากเซิร์ฟเวอร์ 40 แห่งทุกสัปดาห์ เขาให้ AI อธิบายงานและตั้งค่า -euo pipefail + การป้องกันแบบ dry-run และสร้างสคริปต์ Bash ขั้นแรกให้ตรวจสอบสคริปต์ด้วยการทดลองเรียกใช้ จากนั้นจึงลิงก์สคริปต์กับงานที่กำหนดเวลาไว้ (cron) งานรายสัปดาห์ลดลงเหลือ 5 นาที และขจัดข้อผิดพลาดของมนุษย์

กรณีที่ 2 — หลีกเลี่ยงภัยพิบัติที่แปรผันเป็นโมฆะ มี rm -rf "$TARGET"/* ในสคริปต์การทำความสะอาดที่สร้างโดย AI แต่ถ้าไม่ได้กำหนด TARGET ไว้ที่ใดที่หนึ่ง สคริปต์จะยังคงว่างเปล่า เขาตระหนักเรื่องนี้ในขณะที่เรียนเป็นวิศวกร set -u และ [ -n "$TARGET" ] || เพิ่มการควบคุมทางออก 1 ในระหว่างการทดสอบ ตัวแปรยังคงเป็นโมฆะและสคริปต์หยุดทำงานอย่างปลอดภัยแทนที่จะเป็นหายนะ

กรณีที่ 3 — โทเค็นที่ฝังไว้ถูกดักจับ เพื่อความสะดวก AI ได้เพิ่มบรรทัด TOKEN = "ghp_realtoken" ให้กับสคริปต์ Python ที่ร้องขอ API (เป็นตัวอย่าง) วิศวกรลบสิ่งนี้ออกและเปลี่ยนเป็นการอ่านจากตัวแปรสภาพแวดล้อมด้วย os.environ["TOKEN"] จากนั้นยกเลิกและต่ออายุโทเค็น หากสคริปต์ไปที่ Git โทเค็นก็จะเป็นแบบสาธารณะ

เทมเพลตที่สามารถคัดลอกได้สี่แบบ

1) สคริปต์ Bash ที่ปลอดภัย:

เขียนสคริปต์ทุบตี: [TASK] กฎบังคับ:- `set -euo pipefail` ที่จุดเริ่มต้น- ตรวจสอบว่าตัวแปรไม่ว่างเปล่าไม่ว่าจะลบ/ย้ายหรือไม่ก็ตาม- แฟล็ก `--dry-run`: เขียนสิ่งที่ต้องทำในโหมดนี้ แต่อย่าทำ- อย่าฝังความลับ อ่านจากตัวแปรสภาพแวดล้อม - พิมพ์บันทึกข้อมูลในแต่ละขั้นตอน แสดงความคิดเห็นสคริปต์และทำเครื่องหมายบรรทัดที่อันตรายที่สุด

2) คำอธิบาย/การควบคุมสคริปต์:

อธิบายสคริปต์ต่อไปนี้ทีละบรรทัดและตรวจสอบความปลอดภัย: ความลับที่ฝังไว้, คำสั่งทำลายล้าง (rm/Remove-Item/DROP), อินพุตที่ไม่ถูกต้อง, ขาดการจัดการข้อผิดพลาด เขียนแต่ละความเสี่ยงตามลำดับความสำคัญและแก้ไข สคริปต์: [รหัส]

3) การแปลภาษา:

แปลสคริปต์ [ภาษาต้นฉบับ] นั้นเป็น [ภาษาเป้าหมาย] รักษาพฤติกรรมแบบคำต่อคำ ใช้การจัดการข้อผิดพลาดทางสำนวนของภาษาเป้าหมาย ย้ายความลับที่ฝังอยู่ไปยังตัวแปรสภาพแวดล้อม หมายเหตุประเด็นที่อาจทำงานแตกต่างออกไป สคริปต์: [CODE]

4) งานที่วางแผนไว้ (cron/งานที่กำหนดเวลาไว้):

ใช้สคริปต์นี้ [ความถี่: เช่น เขียนคำจำกัดความตารางเวลา ([cron / systemd timer / Windows Task Scheduler]) ที่จะทำงาน [เวลา 02:00 น. ทุกคืน] เพิ่มวิธีเตือนฉันเมื่อเกิดความล้มเหลว (รหัสบันทึก/ออก/การแจ้งเตือน) และวิธีป้องกันการทับซ้อนกัน

พรอมต์อ่อน / พรอมต์แข็งแกร่ง

จุดอ่อน: "เขียนสคริปต์ลบไฟล์เก่า"

ผลลัพธ์: สคริปต์ rm ที่ไม่มีขอบเขต ไม่มีการป้องกัน และไม่มีการทำงานแบบ dry-run; หากทำงานในโฟลเดอร์ที่ไม่ถูกต้อง ระบบจะลบอย่างถาวร

แข็งแกร่ง: "เขียนสคริปต์ทุบตีเพื่อลบไฟล์ .log ที่เก่ากว่า 30 วันภายใต้ /var/log/app ใช้ set -euo pipefail หยุดถ้าไดเร็กทอรีเป้าหมายว่างเปล่า แสดงรายการสิ่งที่จะลบด้วย --dry-run ก่อน บันทึกทุกธุรกรรม อย่าฝังความลับ ทำเครื่องหมายบรรทัดที่อันตรายที่สุด"

ความแตกต่าง: ข้อกล่าวอ้างที่สองให้ขอบเขตทั้งหมด ราวกั้นความปลอดภัย และความคาดหวังในสภาวะแห้ง สามารถรันเอาท์พุตได้อย่างปลอดภัย

ข้อผิดพลาดทั่วไป

  • เรียกใช้สคริปต์โดยไม่ต้องอ่าน การลบ/ย้ายแถวนำไปสู่ภัยพิบัติโดยเฉพาะ
  • ไม่ตรวจสอบตัวแปรว่าง ภัยพิบัติแบบคลาสสิกของการลบไดเร็กทอรีรูทด้วย rm -rf "$X"/
  • ข้าม `set -euo pipefail` / `-ErrorAction Stop` ขั้นตอนหนึ่งเริ่มทำงาน สคริปต์ดำเนินต่อไปอย่างสุ่มสี่สุ่มห้า
  • การฝังความลับลงในสคริปต์ การรั่วไหลอย่างต่อเนื่องไปยัง Git
  • กระบวนการทำลายล้างโดยไม่ต้องดำเนินการแบบแห้ง ขั้นแรก "แสดงให้ฉันเห็นว่าต้องทำอะไร" จากนั้นจึงลงมือทำ
  • ทดลองครั้งแรกในผลิตภัณฑ์ ทำงานโดยไม่มีสภาพแวดล้อมการทดสอบแบบแยก

โดยสรุป

DevOps คือศิลปะของระบบอัตโนมัติ การทำงานซ้ำๆ จะถูกมอบหมายให้กับสคริปต์ Bash, Python และ PowerShell AI มีประโยชน์มากในการร่างสคริปต์ การแก้ไขจุดบกพร่อง และการแปล แต่สคริปต์ที่ปลอดภัยควรมีตัวป้องกันข้อผิดพลาด เช่น set -euo pipefail การตรวจสอบตัวแปร null โหมด dry-run การไม่มีความลับแบบฝัง และการบันทึก เป็นความรับผิดชอบของคุณที่จะต้องอ่านและทดสอบแต่ละสคริปต์ โดยเฉพาะสคริปต์ที่มีคำสั่งทำลายล้าง ในสภาพแวดล้อมที่แยกจากกันและทดลองรันก่อน

งานสมัคร

เลือกงานที่เกิดซ้ำ (การเก็บบันทึก การสำรองข้อมูล การล้าง) (1) ให้ AI สร้างสคริปต์ที่ได้รับการป้องกันด้วยเทมเพลต "Secure Bash script" (2) ให้สคริปต์เดียวกันตรวจสอบความปลอดภัยเป็นเทมเพลต "คำอธิบายสคริปต์/การตรวจสอบ" และค้นหาบรรทัดที่อันตรายที่สุดที่ AI ​​ทำเครื่องหมายไว้ (3) ตรวจสอบพฤติกรรมโดยการรันสคริปต์ด้วยไฟล์ตัวอย่างในโฟลเดอร์ทดสอบ อันดับแรกด้วย --dry-run

รายการตรวจสอบ

  • [ ] ฉันเขียนงานที่ฉันไม่ต้องการ OS/shell และรั้วรักษาความปลอดภัย
  • [ ] สคริปต์มีข้อผิดพลาดในการหยุด เช่น set -euo pipefail / -ErrorAction Stop
  • [ ] ฉันเพิ่มตัวแปรว่างและการตรวจสอบอินพุตก่อนที่จะลบ/ย้าย
  • [ ] มีกลไก --dry-run/ยืนยันสำหรับการดำเนินการทำลายล้าง
  • [ ] ไม่มีความลับฝังอยู่ในสคริปต์ ค่ามาจากตัวแปรสภาพแวดล้อม/ตัวพิมพ์
  • [ ] ฉันทำการทดสอบครั้งแรกในสภาพแวดล้อมการทดสอบแบบแยกส่วนโดยใช้การทดลองเรียกใช้แบบแห้ง