ค้นหาเว็บไซต์

ทำให้ 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

บทความที่เกี่ยวข้อง