จัดเตรียมแล้วกำหนดค่าในกระบวนการเดียว
ส่งต่อโฮสต์ใหม่ให้กับ Play สำหรับกำหนดค่า
จัดเตรียมแล้วกำหนดค่าในกระบวนการเดียว เป็นบทเรียน Ansible Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Ansible Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Ansible Academy มีบทเรียนทั้งหมด 4 บทเรียน
สองงาน หนึ่งเพลย์บุ๊ก
การจัดเตรียมทำให้เซิร์ฟเวอร์ มีอยู่ ส่วนการกำหนดค่าทำให้เซิร์ฟเวอร์ใช้งานได้จริง พลังที่แท้จริงคือการทำทั้งสองอย่างในเพลย์เดียวที่ราบรื่น 🔗
จัดเตรียมบนโหนดควบคุม
งานสร้างคลาวด์ทำงานในเครื่องโดยเรียกใช้ API ของ AWS ดังนั้นเพลย์สำหรับจัดเตรียมจึงกำหนดเป้าหมายเป็น localhost ไม่ใช่เซิร์ฟเวอร์ใหม่
- hosts: localhost
gather_facts: false
tasks:
- amazon.aws.ec2_instance: { name: web-01 }บันทึกโฮสต์ใหม่
คุณไม่สามารถเชื่อมต่อ SSH ไปยังเครื่องที่ยังไม่รู้จักได้ ให้ register ผลลัพธ์ของ ec2_instance เพื่อดึง IP สาธารณะใหม่ของเครื่อง
- amazon.aws.ec2_instance:
name: web-01
register: ec2เพิ่มลงในคลังข้อมูลในหน่วยความจำ
โมดูล add_host จะเพิ่มเซิร์ฟเวอร์ใหม่ลงในคลังข้อมูลที่กำลังทำงานอยู่ ดังนั้นเพลย์ถัดไปจึงกำหนดเป้าหมายไปยังเซิร์ฟเวอร์นั้นได้โดยไม่ต้องใช้ไฟล์แบบตายตัว
- add_host:
name: "{{ ec2.instances[0].public_ip_address }}"
groups: launchedรอจน SSH พร้อมใช้งาน
อินสแตนซ์ที่กำลังเริ่มทำงานยังไม่สามารถเข้าถึงได้ทันที wait_for จะหยุดรอจนกว่าพอร์ต 22 จะตอบสนอง ก่อนที่คุณจะพยายามเชื่อมต่อ
- wait_for:
host: "{{ ec2.instances[0].public_ip_address }}"
port: 22เริ่มเพลย์ที่สอง
ตอนนี้เปิดเพลย์ใหม่ที่กำหนดเป้าหมายไปยังกลุ่ม launched ที่คุณเพิ่งสร้าง เพลย์นี้จะทำงานบนเซิร์ฟเวอร์คลาวด์โดยตรง
- hosts: launched
become: true
tasks:
- ping:กำหนดค่าโฮสต์ใหม่
เมื่อโฮสต์อยู่ในคลังข้อมูลแล้ว โมดูลทั่วไปก็จะเข้ามาทำงานต่อ ติดตั้งแพ็กเกจ คัดลอกการกำหนดค่า และเริ่มบริการต่าง ๆ ได้เช่นเดียวกับโหนดใด ๆ
- hosts: launched
tasks:
- package:
name: nginx
state: presentส่งผู้ใช้ SSH ที่ถูกต้อง
อิมเมจคลาวด์ใช้ชื่อเข้าสู่ระบบเฉพาะ เช่น ubuntu หรือ ec2-user กำหนด ansible_user เพื่อให้เพลย์กำหนดค่าเชื่อมต่อได้อย่างถูกต้อง
add_host:
name: "{{ ec2.instances[0].public_ip_address }}"
groups: launched
ansible_user: ubuntuไฟล์เดียวตั้งแต่ต้นจนจบ
ผลลัพธ์คือเพลย์บุ๊กเดียว: เพลย์แรกสร้างโครงสร้างพื้นฐาน ส่วนเพลย์ที่สองกำหนดค่าให้โครงสร้างนั้น เรียกใช้เพียงครั้งเดียว แล้วเซิร์ฟเวอร์ที่ใช้งานได้ก็จะปรากฏขึ้น
ทำซ้ำได้ตลอดกระบวนการ
ทั้งสองส่วนทำงานโดยไม่เปลี่ยนแปลงเมื่อทำซ้ำ การเรียกใช้อีกครั้งจะตรวจพบอินสแตนซ์ที่มีอยู่และปรับการกำหนดค่าให้เข้าที่ ดังนั้นกระบวนการนี้จึง ทำซ้ำได้อย่างปลอดภัย
ข้ามข้อความถามคีย์โฮสต์
โฮสต์ใหม่เอี่ยมจะมีคีย์ SSH ที่ยังไม่รู้จัก ให้ปิด host_key_checking สำหรับกลุ่มที่เปิดใช้งาน เพื่อไม่ให้การเชื่อมต่อครั้งแรกหยุดรอ
add_host:
name: "{{ ec2.instances[0].public_ip_address }}"
groups: launched
ansible_ssh_common_args: "-o StrictHostKeyChecking=no"ตรวจสอบความเข้าใจอย่างรวดเร็ว
คุณเพิ่งเปิดใช้งานเครื่อง EC2 และต้องการให้เพลย์ถัดไปกำหนดค่าเครื่องนั้น โดยไม่มีรายการโฮสต์แบบคงที่ อะไรจะช่วยเชื่อมช่องว่างนี้
สรุปทบทวน
คุณเชื่อมการจัดเตรียมและการกำหนดค่าเข้าด้วยกันแล้ว: สร้างบน localhost ลงทะเบียน IP ใช้ add_host รอ SSH แล้วจึงกำหนดค่าในเพลย์ที่สอง ✨
คำถามที่พบบ่อย
บทเรียน “จัดเตรียมแล้วกำหนดค่าในกระบวนการเดียว” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “จัดเตรียมแล้วกำหนดค่าในกระบวนการเดียว” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Ansible Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Ansible Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “จัดเตรียมแล้วกำหนดค่าในกระบวนการเดียว”
ส่งต่อโฮสต์ใหม่ให้กับ Play สำหรับกำหนดค่า คุณปฏิบัติ Ansible Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Ansible Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Ansible Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “จัดเตรียมแล้วกำหนดค่าในกระบวนการเดียว” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Ansible Academy นี้ได้ไหม
ได้ บทเรียน Ansible Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- Collection บนคลาวด์และการยืนยันตัวตน
- เปิดใช้งานอินสแตนซ์ EC2 แบบประกาศเจตนา
- เครือข่าย: VPC, Subnet และกลุ่มความปลอดภัย
- จัดเตรียมแล้วกำหนดค่าในกระบวนการเดียว