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

วิธีใช้สินค้าคงคลังแบบคงที่และแบบไดนามิกใน Ansible - ตอนที่ 4


ในส่วนที่ 4 ของ Ansible Series นี้ เราจะอธิบายวิธีใช้พื้นที่โฆษณาแบบคงที่และไดนามิกเพื่อกำหนดกลุ่มโฮสต์ใน Ansible

ใน Ansible โฮสต์หรือเซิร์ฟเวอร์ที่ได้รับการจัดการซึ่งควบคุมโดย โหนดควบคุม Ansible ถูกกำหนดไว้ใน ไฟล์รายการโฮสต์ ตามที่อธิบายไว้ใน โฮสต์ ไฟล์สินค้าคงคลังเป็นไฟล์ข้อความที่ประกอบด้วย ชื่อโฮสต์ หรือ ที่อยู่ IP ของโฮสต์ที่ได้รับการจัดการหรือเซิร์ฟเวอร์ระยะไกล

โฮสต์ที่มีการจัดการ สามารถระบุเป็นรายการแต่ละรายการหรือจัดหมวดหมู่ตามชื่อกลุ่มตามที่เราจะดูในภายหลัง ใน Ansible ไฟล์สินค้าคงคลังมีสองประเภท: คงที่ และ ไดนามิก

มาดูแต่ละสิ่งเหล่านี้แล้วดูว่าเราจะจัดการพวกมันได้อย่างไร ถึงตอนนี้ เราถือว่าคุณได้ติดตั้ง Ansible บนโหนดควบคุมของคุณแล้ว และกำหนดค่าการเชื่อมต่อ SSH แบบไม่ใช้รหัสผ่านให้กับโฮสต์ที่ได้รับการจัดการของคุณ

ไฟล์สินค้าคงคลังโฮสต์แบบคงที่

ใน Ansible ไฟล์สินค้าคงคลังแบบคงที่คือไฟล์ข้อความธรรมดาที่มีรายชื่อโฮสต์ที่ได้รับการจัดการที่ประกาศภายใต้กลุ่มโฮสต์โดยใช้ชื่อโฮสต์หรือที่อยู่ IP

ชื่อกลุ่มโฮสต์อยู่ในวงเล็บเหลี่ยม เช่น [ชื่อกลุ่ม] รายการโฮสต์ที่ได้รับการจัดการจะแสดงใต้ชื่อกลุ่มในภายหลัง โดยแต่ละรายการอยู่ในบรรทัดของตัวเอง ตามที่กล่าวไว้ข้างต้น โฮสต์จะแสดงรายการโดยใช้ชื่อโฮสต์หรือที่อยู่ IP

[group name]

Host A ip_address 
Host B ip_address
Host c ip_address

เพื่อวัตถุประสงค์ในการอธิบาย เราจะสร้างไฟล์สินค้าคงคลังแบบคงที่

mkdir test_lab && cd test_lab
vim hosts
[webservers]
173.82.115.165

[database_servers]
173.82.220.239

[datacenter:children]
webservers
database_servers

บันทึกไฟล์และออก

ดังที่คุณเห็นในไฟล์รายการด้านบน เราได้สร้างกลุ่มโฮสต์ 2 กลุ่ม: เว็บเซิร์ฟเวอร์ และ database_servers นอกจากนี้ เราได้สร้างกลุ่มเพิ่มเติมที่เรียกว่า datacenter ซึ่งมีกลุ่มของกลุ่มโฮสต์ที่แสดงด้วยคำต่อท้าย ': children' ตามที่เห็นด้านบน

Ansible ยังอนุญาตให้กลุ่มโฮสต์อยู่ภายใต้ชื่อกลุ่ม ในไฟล์สินค้าคงคลังด้านบน กลุ่ม เว็บเซิร์ฟเวอร์ และ database_servers ถูกวางไว้ใต้ ศูนย์ข้อมูล

หมายเหตุ: ไม่จำเป็นต้องวางโฮสต์ที่มีการจัดการในกลุ่มโฮสต์ คุณสามารถแสดงรายการโดยใช้ชื่อโฮสต์หรือที่อยู่ IP ของพวกเขาได้ เป็นต้น

173.82.202.239
172.82.115.165
load_balancer.pnl.com

ตอนนี้ลองใช้คำสั่ง Ansible สองสามคำสั่งเพื่ออ้างอิงไฟล์รายการโฮสต์ ไวยากรณ์พื้นฐานสำหรับการจัดการสินค้าคงคลังดังที่แสดง

ansible {host-pattern} -i /path/of/inventory/file --list-hosts

ตัวอย่างเช่น,

ansible all -i /root/test_labs/hosts --list-hosts

หรือคุณสามารถใช้อักขระไวด์การ์ด * เพื่อแทนที่อาร์กิวเมนต์ 'all'

ansible * -i /root/test_labs/hosts --list-hosts

หากต้องการแสดงรายการโฮสต์ในกลุ่ม ให้ระบุกลุ่มโฮสต์ในตำแหน่งของรูปแบบโฮสต์

ansible webservers -i /root/test_labs/hosts --list-hosts

ไฟล์สินค้าคงคลังโฮสต์แบบไดนามิก

ในการกำหนดค่า โดยเฉพาะอย่างยิ่งการตั้งค่าระบบคลาวด์ เช่น AWS ซึ่งไฟล์สินค้าคงคลังเปลี่ยนแปลงตลอดเวลาเมื่อคุณเพิ่มหรือเลิกใช้งานเซิร์ฟเวอร์ การดูแลแท็บบนโฮสต์ที่กำหนดไว้ในไฟล์สินค้าคงคลังกลายเป็นความท้าทายอย่างแท้จริง การกลับไปที่ไฟล์โฮสต์และอัปเดตรายชื่อโฮสต์ด้วยที่อยู่ IP จะไม่สะดวก

และนี่คือจุดที่พื้นที่โฆษณาแบบไดนามิกเข้ามามีบทบาท ดังนั้นสินค้าคงคลังแบบไดนามิกคืออะไร? สินค้าคงคลังแบบไดนามิกคือสคริปต์ที่เขียนด้วย Python, PHP หรือภาษาการเขียนโปรแกรมอื่นๆ มันมีประโยชน์ในสภาพแวดล้อมคลาวด์ เช่น AWS ซึ่งที่อยู่ IP จะเปลี่ยนเมื่อเซิร์ฟเวอร์เสมือนหยุดและเริ่มต้นใหม่อีกครั้ง

Ansible ได้พัฒนาสคริปต์สินค้าคงคลังสำหรับแพลตฟอร์มคลาวด์สาธารณะ เช่น Google Compute Engine, Amazon EC2 instance, OpenStack, RackSpace, Cobbler และอื่นๆ อีกมากมาย

ข้อดีของสินค้าคงคลังแบบไดนามิกเหนือสินค้าคงคลังแบบคงที่คืออะไร
  • สินค้าคงคลังแบบไดนามิกทำหน้าที่ลดข้อผิดพลาดของมนุษย์ได้อย่างสมบูรณ์แบบ เนื่องจากข้อมูลถูกรวบรวมโดยใช้สคริปต์
  • ต้องใช้ความพยายามเพียงเล็กน้อยในการจัดการสินค้าคงคลัง

คุณสามารถเขียนพื้นที่โฆษณาแบบไดนามิกที่ปรับแต่งเองได้ในภาษาโปรแกรมที่คุณเลือก พื้นที่โฆษณาควรส่งคืนรูปแบบใน JSON เมื่อมีการส่งตัวเลือกที่เหมาะสม

ใช้สคริปต์สินค้าคงคลังแบบไดนามิกที่มีอยู่

สคริปต์ที่ใช้ในการสร้างพื้นที่โฆษณาแบบไดนามิกจะต้องสามารถเรียกใช้งานได้เพื่อให้ Ansible สามารถใช้งานได้

หากต้องการดึงข้อมูลเกี่ยวกับโฮสต์ภายในสคริปต์สินค้าคงคลังแบบไดนามิก เพียงแค่เรียกใช้

./script --list 

ตามที่ระบุไว้ก่อนหน้านี้ เอาต์พุตควรอยู่ใน JSON ในรูปแบบด้านล่าง

พจนานุกรมที่ประกอบด้วยกลุ่มต่างๆ (เช่น เว็บเซิร์ฟเวอร์, ฐานข้อมูล_เซิร์ฟเวอร์)
  • รายชื่อโฮสต์ที่ได้รับการจัดการต่อกลุ่ม
  • พจนานุกรมของตัวแปร
พจนานุกรมเมตา
  • โฮสต์และโฮสต์วาร์
ผลลัพธ์ตัวอย่าง
{
  "webservers": {
    "hosts": [
      "webserver1.example.com",
      "webserver2.example.com"
    ],
    "vars": {}
  },
  "database_servers": {
    "hosts": [
      "mysql_db1",
      "mysql_db2"
    ],
    "vars": {}
  },
  "_meta": {
    "hostvars": {
      "mysql_db2": {},
      "webserver2.example.com": {},
      "webserver1.example.com": {}, 
      "mysql_db1": {}
    }
  }
}
บทสรุป

ในบทความนี้ เราได้สาธิตวิธีการสร้างสินค้าคงคลังทั้งแบบคงที่และแบบไดนามิก โดยสรุป ไฟล์สินค้าคงคลังแบบคงที่คือไฟล์ข้อความธรรมดาที่มีรายการโฮสต์ที่ได้รับการจัดการหรือโหนดระยะไกลซึ่งหมายเลขและที่อยู่ IP ยังคงค่อนข้างคงที่

ในทางกลับกัน ไฟล์โฮสต์แบบไดนามิกจะเปลี่ยนแปลงอยู่ตลอดเวลาเมื่อคุณเพิ่มโฮสต์ใหม่หรือเลิกใช้งานโฮสต์เก่า ที่อยู่ IP ของโฮสต์จะเป็นแบบไดนามิกเช่นกันเมื่อคุณหยุดและเริ่มต้นระบบโฮสต์ใหม่ เราหวังว่าคุณจะพบข้อมูลบทช่วยสอนนี้