ทำให้ Windows Server 2019 และการดูแลระบบ Windows 10 เป็นแบบอัตโนมัติด้วย Ansible
Ansible เป็นเครื่องมือระบบอัตโนมัติด้านไอทีที่เรียบง่ายแต่ทรงพลัง ซึ่งบริษัทหลายพันแห่งใช้เพื่อขับเคลื่อนความซับซ้อนออกจากสภาพแวดล้อมและเร่งความคิดริเริ่ม DevOps
ไม่ว่าจะเป็นการใช้งานแอปพลิเคชัน การบำรุงรักษาเซิร์ฟเวอร์เป็นประจำ การจัดการการกำหนดค่า การจัดส่งอย่างต่อเนื่อง การจัดระบบ หรืองานซ้ำๆ ที่คุณสามารถอธิบายได้ Ansible สามารถจัดการให้คุณได้
เพื่อรับชมฟีเจอร์ระดับสูง เราจะใช้ประโยชน์จากมันเพื่อทำให้การดูแลเซิร์ฟเวอร์ Windows เป็นอัตโนมัติ นี่จะเป็นการเดินทางแบบผจญภัย ดังนั้นโปรดรัดเข็มขัดให้ดีในขณะที่เราเริ่มต้นการเดินทาง
“อย่ารอช้า. เวลาจะไม่ตรงเสมอไป ”
-นโปเลียน ฮิลล์
ข้อกำหนดเบื้องต้น
ก่อนที่เราจะเจาะลึกเข้าไปในป่า โฮสต์ของ windows ต้องการบางสิ่งเพื่อ “ตกลง ” จึงจะจัดการโดย Ansible รายการด้านล่างนี้เพียงพอแล้ว:
- Powershell เวอร์ชัน 3.0 หรือสูงกว่า
- .NET Framework 4.0 หรือสูงกว่า
- Listener การจัดการระยะไกลของ Windows หรือ SSH (cygwin)
- Windows 7+ และระบบปฏิบัติการเซิร์ฟเวอร์ รวมถึง Windows Server 2008+
- ช็อคโกแลต
- WSUS สำหรับการอัปเดตแพ็คเกจระบบปฏิบัติการและการแพตช์
- Ansible หรือ AWX
ขั้นตอนที่ 1: ติดตั้ง Chocalatey และ WSUS
เนื่องจากเป็นระบบปฏิบัติการที่ใช้กันอย่างแพร่หลายในคอมพิวเตอร์ส่วนบุคคล ผู้ใช้ Windows จึงได้รับประโยชน์มากมายจากเครื่องมืออย่าง Chocolatey ในการติดตั้งและจัดการซอฟต์แวร์โดยทั่วไป ทำให้การติดตั้งแอปพลิเคชันผ่าน Command-Line หรือ PowerShell เป็นเรื่องง่าย ในทางกลับกัน WSUS ทำให้ผู้ใช้สามารถส่งการอัปเดต/แพตช์ระบบปฏิบัติการได้อย่างง่ายดาย
หากต้องการติดตั้ง Chocolatey ให้ทำตามการตั้งค่าและจัดการแอปพลิเคชัน Windows จาก Command Prompt พร้อมคำแนะนำโดยละเอียดของ Chocolatey หลังจากเสร็จสิ้น คุณสามารถดำเนินการติดตั้ง WSUS โดยใช้วิธีติดตั้ง Windows Service Update Services บนคู่มือ Windows Server 2019
ขั้นตอนที่ 2: ติดตั้ง Ansible AWX
เราจะใช้ Ansible AWX ในคู่มือนี้เพื่อจัดการโฮสต์ Windows เนื่องจากใช้งานง่ายและพื้นที่การจัดการเว็บที่เป็นมิตรซึ่งคนส่วนใหญ่จะชื่นชอบ คุณสามารถติดตั้ง Ansible AWX ได้โดยใช้การติดตั้งและกำหนดค่า Ansible AWX บนคู่มือ CentOS 8
สิ่งที่จะเพิ่มในเซิร์ฟเวอร์ AWX ของคุณคือ pywinrm Ansible ใช้แพ็คเกจ pywinrm เพื่อสื่อสารกับเซิร์ฟเวอร์ Windows ผ่าน WinRM ไม่ได้ติดตั้งตามค่าเริ่มต้นด้วยแพ็คเกจ Ansible แต่สามารถติดตั้งได้โดยการรันสิ่งต่อไปนี้:
sudo pip3 install "pywinrm>=0.2.2"หลังจากคุณติดตั้งพร้อมทั้งติดตั้ง pywinrm เสร็จแล้ว ให้ตั้งค่าต่อไปนี้ใน AWX ตามที่อธิบายไว้ในคำแนะนำ:
- ผู้ใช้ที่มีสิทธิ์ที่จำเป็นและทีมเสริม
- องค์กรหรือคุณสามารถใช้องค์กรเริ่มต้นได้
- ข้อมูลรับรองเพื่อเชื่อมต่อกับโฮสต์ Windows
- สินค้าคงคลังที่มีรายการโฮสต์ของคุณ (เพิ่มตัวแปรตามที่แชร์ด้านล่าง)
- ตั้งค่าโครงการ - คุณสามารถใช้พื้นที่เก็บข้อมูล GitHub ที่มี Playbooks ได้
- ตั้งค่าเทมเพลตที่มีทุกอย่างพร้อมสำหรับการเปิดตัว
คุณจะเพิ่มการเปลี่ยนแปลงเล็กน้อยในสินค้าคงคลังเพื่อรวมตัวแปรพิเศษเพื่อให้ตรงกับคุณสมบัติ WinRM ต่อไปนี้คือตัวแปรที่คุณควรเพิ่มภายใต้ “สินค้าคงคลัง ” และภาพหน้าจอที่แชร์สำหรับรายการเดียวกัน
ansible_connection: winrm
ansible_winrm_transport: basic
ansible_winrm_server_cert_validation: ignoreขั้นตอนที่ 3: กำหนดค่าการจัดการระยะไกลของ Windows สำหรับ Ansible
เนื่องจาก Ansible ไม่ได้ใช้เอเจนต์ที่ติดตั้งบนเซิร์ฟเวอร์ที่ได้รับการจัดการ จึงใช้ประโยชน์จากสิ่งที่ระบบปฏิบัติการจัดเตรียมไว้ให้สำหรับการสื่อสาร ใน Windows 2019 มีการเปิดตัว Secure Shell (ssh) แต่ในกรณีที่คุณมีเซิร์ฟเวอร์เวอร์ชันอื่นที่ต่ำกว่าปี 2019 คุณจะต้องเลือกใช้ Windows Remote Management (WinRM) เนื่องจากมีให้บริการในเวอร์ชันอื่นเช่นกัน
มีสององค์ประกอบหลักของบริการ WinRM ที่ควบคุมวิธีที่ Ansible สามารถเชื่อมต่อกับโฮสต์ Windows: ตัวฟังและการตั้งค่าการกำหนดค่าบริการ บริการ WinRM รับฟังคำขอบนพอร์ตตั้งแต่หนึ่งพอร์ตขึ้นไป แต่ละพอร์ตเหล่านี้จะต้องมี Listener ที่สร้างและกำหนดค่าไว้
เราจะใช้สคริปต์นี้ ConfigureRemotingForAnsible.ps1 ซึ่งสามารถใช้เพื่อตั้งค่าพื้นฐาน สคริปต์นี้ตั้งค่าทั้งผู้ฟัง HTTP และ HTTPS ด้วยใบรับรองที่ลงนามด้วยตนเอง และเปิดใช้งานตัวเลือกการรับรองความถูกต้องพื้นฐานบนบริการ ข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้สามารถพบได้ใน Ansible Docs
หากต้องการใช้สคริปต์นี้ ให้เรียกใช้สิ่งต่อไปนี้ใน PowerShell (ในฐานะผู้ดูแลระบบ):
$url = "https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1"
$file = "$env:temp\ConfigureRemotingForAnsible.ps1"
(New-Object -TypeName System.Net.WebClient).DownloadFile($url, $file)
powershell.exe -ExecutionPolicy ByPass -File $fileภาพหน้าจอถูกแชร์ด้านล่างสำหรับสิ่งเดียวกัน
ผู้ฟัง WinRM
บริการ WinRM รับฟังคำขอบนพอร์ตตั้งแต่หนึ่งพอร์ตขึ้นไป แต่ละพอร์ตเหล่านี้จะต้องมี Listener ที่สร้างและกำหนดค่าไว้ เมื่อต้องการดูตัวฟังปัจจุบันที่กำลังเรียกใช้บริการ WinRM ให้เรียกใช้คำสั่งต่อไปนี้:
winrm enumerate winrm/config/Listenerภาพหน้าจออื่นถูกแชร์ด้านล่างเหมือนกัน
ขั้นตอนที่ 4: ดำเนินการ Ansible Playbook ใน Windows
เมื่อติดตั้ง WinRM แล้ว ก็ถึงเวลาจัดการโดยใช้ Ansible ที่ติดตั้งบนเซิร์ฟเวอร์ Linux ที่คุณเลือก หากคุณต้องการใช้เทอร์มินัล คุณสามารถเพิ่มโฮสต์ชื่อ windows ในไฟล์ “/etc/ansible/hosts ของคุณ จากนั้นดำเนินการคำสั่งด้านล่างเพื่อทดสอบว่าทุกอย่างทำงานได้ดีหรือไม่
ansible -i windows -m win_ping -e ansible_connection=winrm \
-e ansible_user=<Your-Windows-User> -e ansible_password=<Your-Windows-Password> \
-e ansible_winrm_transport=basic \
-e ansible_winrm_server_cert_validation=ignoreคุณควรเห็นข้อความด้านล่างหากทุกอย่างเรียบร้อยดี
172.19.253.55 | SUCCESS => {
"changed": false,
"ping": "pong"
}เมื่อการทดสอบเสร็จสิ้นและประสบความสำเร็จ เราสามารถกลับไปที่อินเทอร์เฟซเว็บ AWX ของเราและดำเนินการ Playbooks ได้ ขึ้นอยู่กับตำแหน่งที่คุณตัดสินใจวาง Playbook ของคุณ (Git หรือในเซิร์ฟเวอร์) ก็ถึงเวลาสร้างเทมเพลตแล้วเปิดใช้งาน เรากำลังสมมติว่าคุณได้สร้างข้อมูลรับรอง ผู้ใช้ องค์กร โครงการ สินค้าคงคลัง และตอนนี้เป็นเทมเพลต
ฉันใช้โปรเจ็กต์ที่มี Playbook ภายในเซิร์ฟเวอร์ (Manual SCM) เนื่องจากสามารถแสดงได้ในภาพหน้าจอด้านล่าง
ฉันสร้างไดเรกทอรีชื่อ “test ” ภายใน “/var/lib/awx/projects ” จากนั้นสร้าง Playbook ตัวอย่างชื่อ “main.yaml ” โดยมีเนื้อหาดังต่อไปนี้
- hosts: all
gather_facts: true
tasks:
- name: Install Git
win_chocolatey:
name: git
state: presentเป็นงานง่ายๆ ในการติดตั้ง “Git ” ในเซิร์ฟเวอร์ Windows 2019 ที่เราเตรียมไว้ข้างต้น
เมื่อเสร็จแล้ว เราก็สามารถสร้าง “เทมเพลต ” ที่เชื่อมโยงทุกอย่างเข้าด้วยกันและดำเนินการ Playbook ได้ ภาพหน้าจอถูกแชร์ด้านล่างพร้อมการตั้งค่าที่กรอกไว้
บันทึกแล้วเปิด
ในกรณีที่ทุกอย่างเป็นไปด้วยดี Playbook จะเริ่มทำงานและมีข้อความแสดงความสำเร็จปรากฏขึ้น ภาพประกอบแสดงอยู่ด้านล่าง
ขั้นตอนที่ 5: ยืนยันว่าติดตั้ง Git แล้ว
หลังจากเล่นเสร็จแล้ว เราสามารถเข้าสู่ระบบ Windows Server ของเราเพื่อยืนยันว่า Git ได้รับการติดตั้งโดย Ansible โดยใช้ Chocolatey กดไอคอน “Start ” หรือคุณจะเห็น “Git ” เป็นแอปพลิเคชันใหม่ดังที่แสดงด้านล่าง
และเราก็พร้อมลุย!!
ความคิดสุดท้าย
โดยทั่วไปแล้ว AWX และ Ansible เป็นวิธีที่จะไปได้โดยเฉพาะหากคุณมีเซิร์ฟเวอร์จำนวนมากที่คุณกำลังจัดการ ตั้งค่าทุกอย่างเพียงครั้งเดียวแล้วผ่อนคลายเมื่อคุณเพิ่ม Playbooks เพื่อกำหนดค่าโครงสร้างพื้นฐานของคุณ หากคุณยังไม่ได้เสี่ยงเข้าสู่โลกที่เต็มไปด้วยสีสันของ Ansible และระบบอัตโนมัติ ให้ขึ้นเรือลำถัดไปไปยังดินแดนมหัศจรรย์นั้น สุดท้ายนี้ เราขอขอบคุณการสนับสนุนที่ยอดเยี่ยมของคุณต่อไป และเราหวังว่าคำแนะนำนี้จะเป็นประโยชน์และคุณจะรักษาความปลอดภัยต่อไป คำแนะนำอื่นๆ ที่อาจโจมตีความสนใจของคุณมีดังต่อไปนี้
สร้างใบรับรองที่ลงนามด้วยตนเองของ OpenSSL ด้วย Ansible
จัดการผู้ใช้และกลุ่มบน Linux โดยใช้ Ansible
วิธีสร้างรหัสผ่านที่เข้ารหัสผู้ใช้ Linux สำหรับ Ansible
ตั้งค่าคลัสเตอร์ Elasticsearch บน CentOS | Ubuntu พร้อม Ansible
ติดตั้ง Apache Tomcat บน Debian 10 พร้อม Ansible







