ไฟล์ Ansible Inventory รักษารายการโฮสต์ที่คุณต้องการกำหนดค่าหรือจัดการด้วย Ansible คุณสามารถจัดกลุ่มโฮสต์เหล่านี้และจัดการตามกลุ่มได้เช่นกัน คุณอาจส่งผ่านตัวแปรต่างๆ สำหรับแต่ละโฮสต์หรือสำหรับกลุ่มโฮสต์
ในบทความนี้ ผมจะแสดงวิธีการทำงานกับ Ansible playbook ตัวแปร ไฟล์สินค้าคงคลัง และโมดูล Ansible ทั่วไปบางส่วนพร้อมตัวอย่างที่ใช้งานได้จริง งั้นเรามาเริ่มกันเลย!
ข้อกำหนดเบื้องต้น
หากคุณต้องการลองใช้ตัวอย่างในบทความนี้
1) คุณต้องติดตั้ง Ansible บนคอมพิวเตอร์ของคุณ
2) คุณต้องมีโฮสต์ Ubuntu/Debian เป็นอย่างน้อย และโฮสต์ CentOS/RHEL 8 ที่กำหนดค่าไว้สำหรับการทำงานอัตโนมัติของ Ansible
มีบทความมากมายเกี่ยวกับ LinuxHint ที่อุทิศให้กับการติดตั้ง Ansible และการกำหนดค่าโฮสต์สำหรับการทำงานอัตโนมัติของ Ansible คุณสามารถตรวจสอบบทความเหล่านี้ได้หากต้องการข้อมูลเพิ่มเติม
การสร้างไดเรกทอรีโครงการ
ขั้นแรก สร้างไดเร็กทอรีโครงการ ~/โครงการ/ ด้วยคำสั่งดังนี้
$mkdir -pv~/โครงการ/playbooksนำทางไปยัง ~/โครงการ/ ไดเร็กทอรีดังนี้:
$ซีดี~/โครงการไฟล์สินค้าคงคลังพื้นฐาน:
สร้างไฟล์สินค้าคงคลัง Ansible เจ้าภาพ ในไดเร็กทอรีโครงการด้วยคำสั่งต่อไปนี้:
$นาโนเจ้าภาพคุณสามารถพิมพ์ที่อยู่ IP ของโฮสต์ที่คุณต้องการกำหนดค่า/อัตโนมัติโดยใช้ Ansible ใน เจ้าภาพ ไฟล์สินค้าคงคลัง
192.168.20.167192.168.20.168
192.168.20.169
192.168.20.170
เมื่อคุณทำขั้นตอนนี้เสร็จแล้ว ให้บันทึกไฟล์โดยกด + NS ติดตามโดย และ และ .
หากคุณต้องการใช้ชื่อ DNS แทนที่อยู่ IP ในไฟล์สินค้าคงคลัง คุณก็สามารถทำได้เช่นกัน
หากคุณไม่มีเซิร์ฟเวอร์ DNS ที่ใช้งานได้ คุณสามารถใช้ /etc/hosts ไฟล์บนคอมพิวเตอร์ของคุณสำหรับการแก้ปัญหา DNS ในเครื่อง
สำหรับการแก้ปัญหา DNS ในเครื่อง ให้เปิด /etc/hosts ไฟล์ที่มีโปรแกรมแก้ไขข้อความ ( นาโน ในกรณีของฉัน) ดังต่อไปนี้:
$sudo นาโน /ฯลฯ/เจ้าภาพพิมพ์ที่อยู่ IP และชื่อ DNS ที่คุณต้องการดังนี้:
192.168.20.167 vm1.nodekite.com192.168.20.168 vm2.nodekite.com
192.168.20.169 vm3.nodekite.com
192.168.20.170 vm4.nodekite.com
เมื่อทำตามขั้นตอนนี้เสร็จแล้วให้กด + NS ติดตามโดย และ และ .
เปิดไฟล์สินค้าคงคลัง Ansible เจ้าภาพ ดังนี้
$นาโนเจ้าภาพตอนนี้คุณสามารถพิมพ์ชื่อ DNS ของโฮสต์ที่คุณต้องการกำหนดค่า/อัตโนมัติโดยใช้ Ansible ใน เจ้าภาพ ไฟล์สินค้าคงคลัง
vm1.nodekite.comvm2.nodekite.com
vm3.nodekite.com
vm4.nodekite.com
เมื่อเสร็จแล้วให้บันทึกไฟล์รายการโฮสต์โดยกด + NS ติดตามโดย และ และ .
การทดสอบการเชื่อมต่อกับโฮสต์ทั้งหมด
ตอนนี้คุณสามารถลอง ping โฮสต์ทั้งหมดในไฟล์สินค้าคงคลังได้ดังนี้:
$ansible-ผมเจ้าภาพทั้งหมด-ยูansible-NS ปิงอย่างที่คุณเห็น ทุกโฮสต์ในไฟล์สินค้าคงคลังสามารถเข้าถึงได้ ดังนั้น เราพร้อมที่จะไปยังส่วนถัดไปของบทความนี้
Ansible Playbook เล่มแรกของคุณ
ให้เราสร้าง playbook Ansible ง่ายๆ ping_all_hosts.yaml ใน หนังสือเล่น/ ไดเรกทอรี การดำเนินการนี้จะปิงโฮสต์ทั้งหมดใน เจ้าภาพ แฟ้มสินค้าคงคลังเหมือนเมื่อก่อน
$นาโนplaybooks/ping_all_hosts.yamlพิมพ์บรรทัดต่อไปนี้ใน ping_all_hosts.yaml ไฟล์เพลย์บุ๊ก Ansible:
- เจ้าภาพ: ทั้งหมดผู้ใช้: ansible
งาน:
- ชื่อ: ปิงเจ้าภาพทั้งหมด
ปิง:
ที่นี่,
เจ้าภาพ: ทั้งหมด – เลือกโฮสต์ทั้งหมดจากไฟล์สินค้าคงคลัง เจ้าภาพ .
ผู้ใช้: ansible – บอก Ansible ให้ SSH เข้าไปในโฮสต์ในไฟล์สินค้าคงคลังเป็น ansible ผู้ใช้
งาน – งานทั้งหมดที่ Ansible จะดำเนินการในโฮสต์แสดงไว้ที่นี่ งานแต่ละงานมักจะมี ชื่อ และตัวเลือกเฉพาะโมดูลอย่างน้อยหนึ่งตัวเลือก
คู่มือการเล่น ping_all_hosts.yaml มีเพียงงานเดียว ping โฮสต์ทั้งหมดในไฟล์สินค้าคงคลัง เจ้าภาพ . ชื่อของงานคือ ปิงเจ้าภาพทั้งหมด และใช้ ปิง โมดูล.
NS ปิง โมดูลไม่ต้องการตัวเลือกอื่นใด เลยปล่อยว่างไว้ (ไม่มีอะไรหลังโคลอน : )
เมื่อคุณทำขั้นตอนนี้เสร็จแล้ว ให้บันทึกไฟล์โดยกด + NS ติดตามโดย และ และ .
คุณสามารถเรียกใช้ ping_all_hosts.yaml คู่มือการเล่น Ansible ดังนี้:
$ansible-playbook-ผมโฮสต์ playbooks/ping_all_hosts.yamlอย่างที่คุณเห็น งาน ping ประสบความสำเร็จในทุกโฮสต์ในไฟล์สินค้าคงคลัง
ไฟล์กำหนดค่า Ansible อย่างง่าย
ในตัวอย่างก่อนหน้านี้ คุณต้องใช้ -ผม ตัวเลือกเพื่อบอก Ansible ว่าไฟล์สินค้าคงคลังใดที่จะใช้ ในกรณีของฉัน มันคือ เจ้าภาพ ไฟล์สินค้าคงคลัง
$ansible-playbook-ผมโฮสต์ playbooks/ping_all_hosts.yamlหากคุณไม่ต้องการส่งไฟล์สินค้าคงคลังกับ -ผม ทุกครั้งที่คุณเรียกใช้ Ansible playbook สิ่งที่คุณต้องทำคือตั้งค่าไฟล์สินค้าคงคลังเริ่มต้นสำหรับโครงการของคุณ
ในการทำเช่นนั้น ให้สร้างไฟล์การกำหนดค่า Ansible ใหม่ ansible.cfg ในรูทโปรเจ็กต์ของคุณดังนี้:
$นาโนansible.cfgพิมพ์บรรทัดต่อไปนี้ใน ansible.cfg ไฟล์:
[ค่าเริ่มต้น]สินค้าคงคลัง = ./เจ้าภาพ
เมื่อเสร็จแล้วให้บันทึกไฟล์โดยกด + NS ติดตามโดย และ และ .
คุณสามารถเรียกใช้ Playbook Ansible เดียวกันได้ดังนี้:
$playbooks ansible-playbook/ping_all_hosts.yamlอย่างที่คุณเห็น playbook กำลังใช้ เจ้าภาพ ไฟล์สินค้าคงคลังโดยค่าเริ่มต้น คุณยังสามารถใช้ -ผม ตัวเลือกเพื่อระบุไฟล์สินค้าคงคลังอื่นหากต้องการ Ansible มีความยืดหยุ่นสูง
การจัดกลุ่มโฮสต์ในไฟล์สินค้าคงคลัง
จนถึงตอนนี้ ฉันได้แสดงวิธีเรียกใช้ชุดงาน (playbook) ในโฮสต์ทั้งหมดในไฟล์สินค้าคงคลังแล้ว แต่ถ้าคุณต้องการเรียกใช้ชุดงานในโฮสต์บางตัวและชุดงานอื่นในโฮสต์อื่นล่ะ คุณสามารถจัดกลุ่มโฮสต์ในไฟล์สินค้าคงคลังและเรียกใช้งานต่างๆ ในกลุ่มโฮสต์ได้
ในส่วนนี้ ฉันจะแสดงวิธีจัดกลุ่มโฮสต์ในไฟล์สินค้าคงคลัง และวิธีการทำงานกับกลุ่มโฮสต์
ขั้นแรก เปิดไฟล์สินค้าคงคลัง เจ้าภาพ ดังนี้
$นาโนเจ้าภาพพิมพ์บรรทัดต่อไปนี้ใน เจ้าภาพ ไฟล์สินค้าคงคลัง:
[เดเบียน10]vm1.nodekite.com
vm2.nodekite.com
[centos8]
vm3.nodekite.com
vm4.nodekite.com
ที่นี่ฉันได้สร้างกลุ่มโฮสต์สองกลุ่ม: เดเบียน10 และ centos8 .
ใน เดเบียน10 กลุ่มฉันมีสองโฮสต์: vm1.nodekite.com และ vm2.nodekite.com
ใน centos8 กลุ่มฉันมีสองโฮสต์: vm3.nodekite.com และ vm4.nodekite.com
เมื่อเสร็จแล้วให้บันทึกไฟล์โดยกด + NS ติดตามโดย และ และ .
ตอนนี้เราจะสร้าง playbook ใหม่ ping_debian10_hosts.yaml ซึ่งจะปิงโฮสต์เหมือนเดิม แต่เฉพาะโฮสต์ใน เดเบียน10 กลุ่มเจ้าภาพ
สร้างเพลย์บุ๊ก ping_debian10_hosts.yaml ใน หนังสือเล่น/ ไดเร็กทอรีดังนี้:
$นาโนplaybooks/ping_debian10_hosts.yamlพิมพ์บรรทัดต่อไปนี้ใน ping_debian10_hosts.yaml หนังสือเล่น Ansible:
- โฮสต์: debian10ผู้ใช้: ansible
งาน:
- ชื่อ: Ping ทั้งหมด Debian10เจ้าภาพ
ปิง:
แทน เจ้าภาพ: ทั้งหมด , ฉันได้เพิ่ม โฮสต์: debian10 ที่นี่. เดเบียน10 คือกลุ่มเจ้าภาพ Playbook นี้จะทำงานเฉพาะบนโฮสต์ใน เดเบียน10 กลุ่มเจ้าภาพ
เมื่อเสร็จแล้วให้บันทึกไฟล์โดยกด + NS ติดตามโดย และ และ .
เรียกใช้ playbook ดังต่อไปนี้:
$playbooks ansible-playbook/ping_debian10_hosts.yamlอย่างที่คุณเห็น เฉพาะเจ้าภาพใน เดเบียน10 กลุ่มโฮสต์กำลังส่ง Ping
ใช้วิธีการเดียวกัน สร้าง playbook อื่น ping_centos8_hosts.yaml ดังนี้
$นาโนplaybooks/ping_centos8_hosts.yamlพิมพ์บรรทัดต่อไปนี้ใน ping_centos8_hosts.yaml หนังสือเล่น Ansible:
- เจ้าภาพ: centos8ผู้ใช้: ansible
งาน:
- ชื่อ: Ping ทั้งหมด CentOS8เจ้าภาพ
ปิง:
ในทำนองเดียวกันฉันได้เพิ่ม เจ้าภาพ: centos8 ที่นี่. centos8 คือกลุ่มเจ้าภาพ Playbook นี้จะทำงานเฉพาะบนโฮสต์ใน centos8 กลุ่มเจ้าภาพ
เมื่อเสร็จแล้วให้บันทึกไฟล์โดยกด + NS ติดตามโดย และ และ .
เรียกใช้ playbook ดังต่อไปนี้:
$playbooks ansible-playbook/ping_centos8_hosts.yamlอย่างที่คุณเห็น เฉพาะเจ้าภาพใน centos8 กลุ่มโฮสต์กำลังส่ง Ping
ประเภทตัวแปร Ansible
มีตัวแปรหลายประเภทใน Ansible ประเภทตัวแปรหลักคือ ตัวแปร Ansible Facts และ ตัวแปรที่ผู้ใช้กำหนด .
ตัวแปร Ansible Facts: ขึ้นอยู่กับโฮสต์ที่ Ansible กำลังทำงาน Ansible จะสร้างตัวแปร Ansible facts ตัวแปรข้อเท็จจริงที่เป็นไปได้มีข้อมูลเกี่ยวกับโฮสต์ เช่น ที่อยู่ IP ชื่อโฮสต์ ชื่อโดเมน วันที่ เวลา ตัวแปรสภาพแวดล้อมเชลล์ และอื่นๆ
ตัวแปรที่ผู้ใช้กำหนด: ตัวแปรเหล่านี้เป็นตัวแปรที่กำหนดเองซึ่งกำหนดโดยผู้ใช้ คุณอาจส่งผ่านตัวแปรที่ผู้ใช้กำหนดจากบรรทัดคำสั่ง หรือใช้ไฟล์สินค้าคงคลัง
ตัวแปรที่กำหนดโดยผู้ใช้ส่วนใหญ่มีสองประเภท: ตัวแปรกลุ่ม และ ตัวแปรโฮสต์ .
ลำดับความสำคัญของตัวแปร Ansible
ลำดับความสำคัญของตัวแปรของ Ansible is : ตัวแปรบรรทัดคำสั่ง > ตัวแปรโฮสต์ > ตัวแปรกลุ่ม
หากคุณตั้งค่าตัวแปรเดียวกันกับตัวแปรโฮสต์และตัวแปรกลุ่ม ตัวแปรโฮสต์จะถูกนำไปใช้
ในทำนองเดียวกัน ตัวแปรที่คุณตั้งค่าจากบรรทัดคำสั่งขณะเรียกใช้ playbook จะแทนที่ทั้งตัวแปรโฮสต์และกลุ่ม
การทำงานกับตัวแปร Ansible Facts
ในส่วนนี้ ผมจะแสดงวิธีการทำงานกับตัวแปร Ansible facts งั้นเรามาเริ่มกันเลย!
คุณอาจแสดงรายการตัวแปร Ansible Facts ทั้งหมดของโฮสต์ใน your เจ้าภาพ ไฟล์สินค้าคงคลังดังนี้:
$ansible ทั้งหมด-ยูansible-NSติดตั้งอย่างที่คุณเห็น ตัวแปร Ansible Facts ทั้งหมดอยู่ในรูปแบบ JSON เป็นรายการที่ยาวมาก
เนื่องจากรายการค่อนข้างยาว คุณสามารถเปิดได้ด้วยโปรแกรมเพจเจอร์ เช่น น้อย ดังนี้
$ansible ทั้งหมด-ยูansible-NSติดตั้ง| น้อยตอนนี้ คุณสามารถเลื่อนผลลัพธ์ขึ้น ลง ซ้าย และขวาได้ตามต้องการ
คุณยังค้นหาชื่อตัวแปรจากเพจเจอร์ได้อีกด้วย โดยกด / คีย์บนแป้นพิมพ์ของคุณ จากนั้นพิมพ์ข้อความค้นหา ( ชื่อโฮสต์ ในกรณีของฉัน) และกด .
อย่างที่คุณเห็น ตัวแปร Ansible facts ที่ตรงกับสตริงการค้นหาคือ ansible_hostname . สามารถกด NS เพื่อไปแข่งขันนัดต่อไปและ NS เพื่อไปยังการแข่งขันก่อนหน้าจากเพจเจอร์ นี่คือวิธีค้นหาตัวแปร Ansible facts ที่คุณต้องการสำหรับโครงการ Ansible ของคุณ
ให้เรามาดูวิธีเข้าถึงตัวแปร Ansible facts
สร้างเพลย์บุ๊กใหม่ print_variable1.yaml ดังนี้
$นาโนplaybooks/print_variable1.yamlพิมพ์บรรทัดต่อไปนี้ใน print_variable1.yaml ไฟล์:
- เจ้าภาพ: ทั้งหมดผู้ใช้: ansible
งาน:
- ชื่อ: พิมพ์ชื่อโฮสต์ของเจ้าภาพทั้งหมด
ดีบัก:
ผงชูรส:'{{ ansible_hostname }}'
ที่นี่ฉันได้เพิ่มหนึ่งงาน พิมพ์ชื่อโฮสต์ของโฮสต์ทั้งหมด . งานนี้ใช้ Ansible ดีบัก โมดูลเพื่อพิมพ์ข้อความเมื่อ playbook ทำงาน
ผงชูรส เป็นพารามิเตอร์ที่จำเป็นเพียงอย่างเดียวของ ดีบัก โมดูล. NS ผงชูรส พารามิเตอร์ยอมรับสตริงในเครื่องหมายคำพูด ซึ่งเป็นข้อความที่จะพิมพ์บนคอนโซล
ที่นี่, {{ ตัวแปร_name }} รูปแบบที่ใช้ในการเข้าถึงตัวแปร ในกรณีนี้, {{ ansible_hostname }} ใช้สำหรับพิมพ์ ansible_hostname ตัวแปรของแต่ละโฮสต์ในไฟล์สินค้าคงคลัง
เมื่อเสร็จแล้วให้บันทึกไฟล์โดยกด + NS ติดตามโดย และ และ .
คุณยังสามารถเข้าถึงตัวแปร Ansible facts as ansible_facts[ชื่อตัวแปร] . ดังนั้น ansible_hostname ตัวแปรจะกลายเป็น ansible_facts[ชื่อโฮสต์] .
เราสามารถเขียน . ใหม่ได้ print_variable1.yaml playbook แบบนี้ด้วย เราจะได้ผลลัพธ์ที่เหมือนกัน
- เจ้าภาพ: ทั้งหมดผู้ใช้: ansible
งาน:
- ชื่อ: พิมพ์ชื่อโฮสต์ของเจ้าภาพทั้งหมด
ดีบัก:
ผงชูรส:'{{ ansible_facts['variable_name'] }}'
เรียกใช้ playbook print_variable1.yaml ดังนี้
$playbooks ansible-playbook/print_variable1.yamlอย่างที่คุณเห็น ชื่อโฮสต์ของแต่ละโฮสต์ในไฟล์สินค้าคงคลังจะถูกพิมพ์บนคอนโซล
ให้เราพิมพ์ที่อยู่ IPv4 เริ่มต้นของแต่ละโฮสต์พร้อมกับชื่อโฮสต์ อย่างที่คุณเห็น ที่อยู่ IPv4 เริ่มต้นของโฮสต์สามารถเข้าถึงได้โดยใช้ ที่อยู่ ทรัพย์สินของ ansible_default_ipv4 วัตถุ.
สร้างเพลย์บุ๊กใหม่ print_variable2.yaml ดังนี้
$นาโนplaybooks/print_variable2.yamlพิมพ์บรรทัดต่อไปนี้ใน print_variable2.yaml ไฟล์:
- เจ้าภาพ: ทั้งหมดผู้ใช้: ansible
งาน:
- ชื่อ: พิมพ์ชื่อโฮสต์ของเจ้าภาพทั้งหมด
ดีบัก:
ผงชูรส:'{{ ansible_hostname }} - {{ ansible_default_ipv4.address }}'
playbook นี้เหมือนเดิม ข้อแตกต่างเพียงอย่างเดียวคือตัวแปรใหม่ {{ ansible_default_ipv4.address }} ใน ผงชูรส ตัวเลือกของ ดีบัก โมดูล.
เมื่อเสร็จแล้วให้บันทึกไฟล์โดยกด + NS ติดตามโดย และ และ .
เรียกใช้ print_variable2.yaml หนังสือเล่นดังนี้:
$playbooks ansible-playbook/print_variable2.yamlอย่างที่คุณเห็น ที่อยู่ IPv4 เริ่มต้นและชื่อโฮสต์ของโฮสต์จะพิมพ์อยู่บนคอนโซล
นี่คือวิธีที่คุณทำงานกับตัวแปร Ansible Facts
การตั้งค่าตัวแปรที่ผู้ใช้กำหนดจากบรรทัดคำสั่ง:
ในส่วนนี้ ฉันจะแสดงวิธีตั้งค่าตัวแปรที่ผู้ใช้กำหนดจากบรรทัดคำสั่งขณะเรียกใช้ Ansible playbooks
ขั้นแรก ให้สร้าง playbook ใหม่ print_variable3.yaml ดังนี้
$นาโนplaybooks/print_variable3.yamlพิมพ์บรรทัดต่อไปนี้ใน print_variable3.yaml ไฟล์:
- เจ้าภาพ: ทั้งหมดผู้ใช้: ansible
งาน:
- ชื่อ: พิมพ์สั่งการตัวแปรบรรทัด
ดีบัก:
ผงชูรส:'ยินดีต้อนรับ {{ ชื่อผู้ใช้ }}'
ที่นี่ฉันได้ใช้ ดีบัก โมดูลการพิมพ์ข้อความ ยินดีต้อนรับ {{ ชื่อผู้ใช้ }} . ชื่อผู้ใช้ เป็นตัวแปรที่จะถูกแทนที่เมื่อเรารัน playbook
เมื่อเสร็จแล้วให้บันทึกไฟล์โดยกด + NS ติดตามโดย และ และ .
เรียกใช้ playbook print_variable3.yaml ดังนี้
$ansible-playbook-และ 'ชื่อผู้ใช้=บ๊อบ'playbooks/print_variable3.yamlบันทึก: ที่นี่, -และ ตัวเลือกที่ใช้ผ่าน a ชื่อผู้ใช้ ตัวแปรที่มีค่า บ๊อบ ไปที่ playbook print_variable3.yaml จากบรรทัดคำสั่ง
อย่างที่คุณเห็นข้อความ ยินดีต้อนรับบ๊อบ ถูกพิมพ์บนคอนโซล
ให้เราค้นพบวิธีส่งผ่านตัวแปรหลายตัวจากบรรทัดคำสั่ง
สร้างเพลย์บุ๊กใหม่ print_variable4.yaml ดังนี้
$นาโนplaybooks/print_variable4.yamlพิมพ์บรรทัดต่อไปนี้ใน print_variable4.yaml ไฟล์:
- เจ้าภาพ: ทั้งหมดผู้ใช้: ansible
งาน:
- ชื่อ: พิมพ์ตัวแปรที่กำหนดโดยผู้ใช้
ดีบัก:
ผงชูรส:'ชื่อผู้ใช้={{ ชื่อผู้ใช้ }} http_port={{ http_port }}'
playbook ควรจะคุ้นเคยกับคุณมากในขณะนี้ ทั้งหมดที่ทำคือพิมพ์ตัวแปร 2 ตัว ชื่อผู้ใช้ และ http_port บนคอนโซล
เมื่อเสร็จแล้วให้บันทึกไฟล์โดยกด + NS ติดตามโดย และ และ .
ตอนนี้คุณสามารถผ่าน ชื่อผู้ใช้ และ http_port ตัวแปรไปยัง playbook โดยใช้สองที่แตกต่างกัน -และ ตัวเลือกดังนี้:
$ ansible-playbook-และ 'ชื่อผู้ใช้=บ๊อบ' -และ 'http_port=8080'playbooks/print_variable4.yaml
หรือคุณอาจแยกตัวแปรด้วยช่องว่างดังนี้:
$ ansible-playbook-และ 'ชื่อผู้ใช้=บ๊อบ http_port=8080'playbooks/print_variable4.yaml
อย่างที่คุณเห็น ชื่อผู้ใช้ และ http_port ตัวแปรจะถูกพิมพ์บนคอนโซล
การทำงานกับตัวแปรกลุ่มที่กำหนดโดยผู้ใช้
สมมติว่าคุณต้องการเพิ่มตัวแปรบางตัวในกลุ่มโฮสต์ การดำเนินการนี้ทำได้ง่ายมากใน Ansible
ขั้นแรก เปิดของคุณ เจ้าภาพ ไฟล์สินค้าคงคลังดังนี้:
$นาโนเจ้าภาพพิมพ์บรรทัดต่อไปนี้ใน your เจ้าภาพ ไฟล์สินค้าคงคลัง:
[เดเบียน10]vm1.nodekite.com
vm2.nodekite.com
[debian10:vars]
ชื่อผู้ใช้ = Lily
http_port =4343
[centos8]
vm3.nodekite.com
vm4.nodekite.com
[centos8: vars]
ชื่อผู้ใช้ = Bob
http_port =7878
อย่างที่คุณเห็น ฉันได้สร้างส่วนใหม่แล้ว [debian10:vars] สำหรับ เดเบียน10 กลุ่มโฮสต์และเพิ่มตัวแปร ( ชื่อผู้ใช้ และ http_port ) สำหรับ เดเบียน10 กลุ่มเจ้าภาพที่นั่น
ในทำนองเดียวกันฉันได้สร้างส่วนใหม่ [centos8: vars] สำหรับ centos8 กลุ่มโฮสต์และเพิ่มตัวแปร ( ชื่อผู้ใช้ และ http_port ) สำหรับ centos8 กลุ่มเจ้าภาพที่นั่น
เมื่อเสร็จแล้วให้บันทึก เจ้าภาพ ไฟล์สินค้าคงคลังโดยกด + NS ติดตามโดย และ และ .
เรียกใช้ print_variable4.yaml playbooks ดังต่อไปนี้:
$playbooks ansible-playbook/print_variable4.yamlอย่างที่คุณเห็น ตัวแปรที่ถูกต้องจะถูกส่งต่อไปยังแต่ละโฮสต์โดยขึ้นอยู่กับกลุ่มโฮสต์
การทำงานกับตัวแปรโฮสต์ที่กำหนดโดยผู้ใช้
ในส่วนนี้ ฉันจะแสดงวิธีตั้งค่าตัวแปรสำหรับโฮสต์เฉพาะในไฟล์สินค้าคงคลัง
ก่อนอื่นให้เปิด เจ้าภาพ ไฟล์สินค้าคงคลังดังนี้:
$นาโนเจ้าภาพในการเพิ่มตัวแปรให้กับโฮสต์เฉพาะ (เช่น vm1.nodekite.com ) เพียงเพิ่มช่องว่าง/แท็บหลังชื่อโฮสต์ IP/DNS แล้วพิมพ์ตัวแปรของคุณดังที่แสดงในภาพหน้าจอด้านล่าง
คุณสามารถเพิ่มหลายตัวแปรได้เช่นกัน เพียงแยกแต่ละตัวแปรด้วยการเว้นวรรค
เมื่อเสร็จแล้วให้บันทึกไฟล์สินค้าคงคลังโดยกด + NS ติดตามโดย และ และ .
เรียกใช้ print_variable4.yaml playbooks ดังต่อไปนี้:
$playbooks ansible-playbook/print_variable4.yamlอย่างที่คุณเห็น ตัวแปรถูกกำหนดไว้สำหรับ .เท่านั้น vm1.nodekite.com เจ้าภาพ. โฮสต์อื่นมีตัวแปรกลุ่มที่ใช้กับพวกเขา
การสร้างไฟล์สินค้าคงคลังอย่างรวดเร็วด้วย Ranges
คุณสามารถใช้ช่วงเพื่อสร้างไฟล์สินค้าคงคลัง Ansible ได้อย่างรวดเร็วหากที่อยู่ IP โฮสต์หรือชื่อ DNS ของคุณสอดคล้องกัน (เช่น มีรูปแบบเฉพาะ)
ในตัวอย่างก่อนหน้านี้ ฉันได้ใช้โฮสต์ vm1.nodekite.com , vm2.nodekite.com , vm3.nodekite.com และ vm4.nodekite.com . แทนที่จะพิมพ์ 4 บรรทัด ฉันก็พิมพ์ได้ vm[1:4].nodekite.com ในไฟล์สินค้าคงคลัง
สำหรับการทดลองกับช่วง ให้เปิด เจ้าภาพ ไฟล์สินค้าคงคลังดังนี้:
$นาโนเจ้าภาพลบโฮสต์และตัวแปรทั้งหมดออกจากไฟล์สินค้าคงคลัง
ตอนนี้เราอาจแทนที่ vm1.nodekite.com และ vm2.nodekite.com กับ vm[1:2].nodekite.com สำหรับ เดเบียน10 กลุ่มเจ้าภาพดังนี้
เช่นเดียวกัน เราก็ทดแทนได้ vm3.nodekite.com และ vm4.nodekite.com กับ vm[3:4].nodekite.com สำหรับ centos8 กลุ่มเจ้าภาพ
เมื่อเสร็จแล้วให้บันทึกไฟล์โดยกด + NS ติดตามโดย และ และ .
เรียกใช้ ping_all_hosts.yaml ดังนี้
$playbooks ansible-playbook/ping_all_hosts.yamlอย่างที่คุณเห็น ช่วงโฮสต์ถูกขยายเมื่อฉันเรียกใช้ playbook
การจัดเก็บตัวแปรในไฟล์ต่างๆ
การจัดเก็บตัวแปรกลุ่มและตัวแปรโฮสต์ในไฟล์สินค้าคงคลังเดียวกันนั้นง่ายมาก แต่คุณอาจต้องการความยืดหยุ่นมากกว่านี้ โดยเฉพาะอย่างยิ่งเมื่อคุณต้องการใช้ช่วงในไฟล์สินค้าคงคลังของคุณ เนื่องจากคุณไม่สามารถตั้งค่าตัวแปรโฮสต์ได้อีกต่อไปหากคุณใช้ช่วง คุณสามารถเก็บตัวแปรกลุ่มและตัวแปรโฮสต์ในไฟล์ต่างๆ ได้ ในส่วนนี้ฉันจะแสดงให้คุณเห็นว่ามันทำอย่างไร
โดยค่าเริ่มต้น Ansible จะค้นหาตัวแปรกลุ่มใน group_vars / ไดเร็กทอรีและตัวแปรโฮสต์ใน host_vars / ไดเรกทอรี
ดังนั้นจงสร้าง group_vars / และ host_vars / ไดเร็กทอรีดังนี้:
$mkdir -pv {เจ้าภาพกลุ่ม}_ของใครการตั้งค่าตัวแปรกลุ่มสำหรับ เดเบียน10 กลุ่มโฮสต์ สร้างไฟล์ เดเบียน10 (เหมือนกับชื่อกลุ่ม) ใน group_vars / ไดเร็กทอรีดังนี้:
$นาโนgroup_vars/เดเบียน10พิมพ์ตัวแปรของคุณดังนี้:
ชื่อผู้ใช้: Lilyhttp_port: 4343
เมื่อเสร็จแล้วให้บันทึกไฟล์โดยกด + NS ตามด้วย Y และ .
เช่นเดียวกับการตั้งค่าตัวแปรกลุ่มสำหรับ centos8 กลุ่มโฮสต์ สร้างไฟล์ centos8 (เหมือนกับชื่อกลุ่ม) ใน group_vars / ไดเร็กทอรีดังนี้:
$นาโนgroup_vars/centos8พิมพ์ตัวแปรของคุณดังนี้:
ชื่อผู้ใช้: Bobhttp_port: 7878
เมื่อเสร็จแล้วให้บันทึกไฟล์โดยกด + NS ตามด้วย Y และ .
เรียกใช้ print_variable4.yaml หนังสือเล่นดังนี้:
$playbooks ansible-playbook/print_variable4.yamlอย่างที่คุณเห็น ตัวแปรกลุ่มได้รับการตั้งค่าอย่างถูกต้องสำหรับแต่ละกลุ่มโฮสต์
การตั้งค่าตัวแปรโฮสต์สำหรับโฮสต์ vm1.nodekite.com , สร้างไฟล์ vm1.nodekite.com (เหมือนกับชื่อโฮสต์หรือที่อยู่ IP) ใน host_vars / ไดเร็กทอรีดังนี้:
$นาโนvm1.nodekite.comพิมพ์ตัวแปรโฮสต์ของคุณดังนี้:
ชื่อผู้ใช้: Alexhttp_port: 7788
เมื่อเสร็จแล้วให้บันทึกไฟล์โดยกด + NS ตามด้วย Y และ .
เรียกใช้ print_variable4.yaml หนังสือเล่นดังนี้:
$ ansible-playbook playbooks/print_variable4.yaml[
อย่างที่คุณเห็น ตัวแปรโฮสต์ได้รับการตั้งค่าอย่างถูกต้องสำหรับโฮสต์ vm1.nodekite.com .
การทำงานกับลูปใน Ansible
ในส่วนนี้ ผมจะแสดงวิธีใช้ลูปใน Ansible
ขั้นแรก ให้สร้าง playbook ใหม่ loop1.yaml ใน หนังสือเล่น/ ไดเร็กทอรีดังนี้:
$นาโนplaybooks/loop1.yamlพิมพ์บรรทัดต่อไปนี้ใน loop1.yaml คู่มือการเล่น:
- เจ้าภาพ: ทั้งหมดผู้ใช้: ansible
งาน:
- ชื่อ: พิมพ์รายชื่อผู้ใช้
ดีบัก:
ผงชูรส:'ผู้ใช้: {{ รายการ }}'
with_items:
- อเล็กซ์
- บ๊อบ
- ลิลลี่
ที่นี่ฉันมี 1 งานที่พิมพ์รายชื่อผู้ใช้โดยใช้ลูป
ในการตั้งค่าการวนซ้ำสำหรับงาน คุณใช้ with_items โมดูล. จากนั้นคุณเพิ่มค่าทีละรายการ
with_items:- อเล็กซ์
- บ๊อบ
- ลิลลี่
คุณเข้าถึงค่าของการวนซ้ำปัจจุบันโดยใช้ รายการ ตัวแปร.
ดีบัก:ผงชูรส:'ผู้ใช้: {{ รายการ }}'
เมื่อเสร็จแล้วให้บันทึกไฟล์โดยกด + NS ติดตามโดย และ และ .
เรียกใช้ loop1.yaml หนังสือเล่นดังนี้:
$playbooks ansible-playbook/loop1.yamlอย่างที่คุณเห็น งานเดียวกันทำงานสำหรับแต่ละรายการในแต่ละโฮสต์ ดังนั้นลูปจึงทำงาน
การทำงานกับเงื่อนไขใน Ansible
หากคุณต้องการเรียกใช้งานตามเงื่อนไขบางประการ ส่วนนี้เหมาะสำหรับคุณ
ในการรันงานตามเงื่อนไข คุณสามารถใช้ เมื่อไร โมดูลของ Ansible ให้เราดูตัวอย่างของโมดูลนี้ ขั้นแรก ให้สร้าง playbook ใหม่ condition1.yaml ดังนี้
$นาโนplaybooks/condition1.yamlพิมพ์บรรทัดต่อไปนี้ใน condition1.yaml คู่มือการเล่น:
- เจ้าภาพ: ทั้งหมดผู้ใช้: ansible
งาน:
- ชื่อ: เรียกใช้งานนี้บน Debian . เท่านั้น
ดีบัก:
ผงชูรส:'งานนี้ทำงานบน Debian'
เมื่อ: ansible_facts['การกระจาย']=='เดเบียน'
ที่นี่,
ansible_facts['การแจกจ่าย'] == 'เดเบียน' ใช้เพื่อตรวจสอบว่า การกระจาย เป็น เดเบียน . งานจะทำงานก็ต่อเมื่อการแจกจ่ายเป็น Debian
NS ansible_facts['การแจกจ่าย'] ใช้เพื่อเข้าถึงตัวแปร Ansible Facts ansible_distribution . คุณยังสามารถตรวจสอบเวอร์ชันการแจกจ่ายโดยใช้ ansible_distribution_major_version ตัวแปร.
เมื่อเสร็จแล้วให้บันทึกไฟล์โดยกด + NS ติดตามโดย และ และ .
เรียกใช้ condition1.yaml หนังสือเล่นดังนี้:
$playbooks ansible-playbook/condition1.yamlอย่างที่คุณเห็น งานรันบนโฮสต์ Debian เท่านั้น งานไม่ทำงานบนโฮสต์ CentOS
คุณยังตรวจสอบเงื่อนไขหลายรายการพร้อมกันและเรียกใช้งานได้ก็ต่อเมื่อเงื่อนไขทั้งหมดเป็นจริงเท่านั้น เรามาดูตัวอย่างกัน
สร้างเพลย์บุ๊กใหม่ condition2.yaml ดังนี้
$นาโนplaybooks/condition2.yamlพิมพ์บรรทัดต่อไปนี้ใน condition2.yaml ไฟล์:
- เจ้าภาพ: ทั้งหมดผู้ใช้: ansible
งาน:
- ชื่อ: เรียกใช้งานนี้บน Debian . เท่านั้น10
ดีบัก:
ผงชูรส:'งานนี้ทำงานบน Debian 10'
เมื่อ: ansible_facts['การกระจาย']=='เดเบียน'
และ ansible_facts['distribution_major_version']=='10'
ที่นี่ งานจะทำงานก็ต่อเมื่อการแจกจ่ายเป็น Debian ( ansible_facts['การแจกจ่าย'] == 'เดเบียน' ) และรุ่นคือ 10 ( ansible_facts['distribution_major_version'] == '10' ). หากทั้งสองเงื่อนไขเป็นจริง งานจะทำงาน มิฉะนั้น งานจะไม่ทำงาน
ฉันได้ใช้ และ คีย์เวิร์ดเพื่อตรวจสอบว่าเงื่อนไขทั้งสองเป็นจริงหรือไม่ที่นี่ หากคุณต้องการตรวจสอบว่าเงื่อนไขใด ๆ เป็นจริงหรือไม่ คุณสามารถใช้ หรือ คีย์เวิร์ดแทน
เมื่อเสร็จแล้วให้บันทึกไฟล์โดยกด + NS ติดตามโดย และ และ .
เรียกใช้ playbook condition2.yaml ดังนี้
$playbooks ansible-playbook/condition2.yamlอย่างที่คุณเห็น งานรันบนโฮสต์ Debian 10 เท่านั้น
มาเปลี่ยน playbook กันเถอะ condition2.yaml เพื่อรันงานเฉพาะบนโฮสต์ Debian 8 ดังนี้
อย่างที่คุณเห็น โฮสต์ทั้งหมดถูกข้ามไป เนื่องจากฉันไม่มีโฮสต์ Debian 8 ในไฟล์สินค้าคงคลัง
การทำงานกับ Ansible apt Module
NS ฉลาด โมดูลของ Ansible ใช้เพื่อติดตั้งแพ็คเกจซอฟต์แวร์เฉพาะบนโฮสต์ Ubuntu/Debian ให้เราดูวิธีการใช้โมดูลนี้
ขั้นแรก ให้สร้าง playbook ใหม่ apt1.yaml ใน หนังสือเล่น/ ไดเร็กทอรีดังนี้:
$นาโนplaybooks/apt1.yamlพิมพ์บรรทัดต่อไปนี้ใน apt1.yaml คู่มือการเล่น:
- โฮสต์: debian10ผู้ใช้: ansible
กลายเป็น: จริง
งาน:
- ชื่อ: ติดตั้ง apache2
ฉลาด:
ชื่อ: apache2
รัฐ: ล่าสุด
NS ฉลาด โมดูลต้องการเพียง ชื่อ ของแพ็คเกจที่คุณต้องการติดตั้ง/อัพเกรด/ลบและ สถานะ ของแพ็คเกจ
ที่นี่ฉันกำลังพยายามติดตั้ง apache2 บรรจุุภัณฑ์ ( ชื่อ: apache2 ) บนโฮสต์ Debian 10 ของฉัน ขณะที่ฉันกำลังพยายามติดตั้งแพ็คเกจและอัปเกรดหากมีเวอร์ชันใหม่ สถานะ ควรจะเป็น ล่าสุด .
สถานะ ยังยอมรับตัวเลือกต่อไปนี้:
- ไม่มา – แพ็คเกจจะถูกลบออกหากติดตั้งแล้ว
- ล่าสุด – แพ็คเกจจะได้รับการอัปเกรดหากมีการอัพเดท หากยังไม่ได้ติดตั้งแพ็คเกจ แพ็คเกจนั้นจะถูกติดตั้ง
- ปัจจุบัน – แพ็คเกจจะถูกติดตั้งหากยังไม่ได้ติดตั้ง แต่แพ็คเกจจะไม่ได้รับการอัพเกรดหากมีการอัพเดท
สังเกตว่าฉันได้เพิ่ม กลายเป็น: จริง ในคู่มือการเล่น สิ่งนี้จะทำให้ ansible สิทธิ์ sudo ของผู้ใช้ในการแก้ไขโครงสร้างระบบไฟล์ (เช่น ติดตั้ง/อัพเกรด/ลบแพ็คเกจ) ปราศจาก กลายเป็น: จริง , NS ฉลาด โมดูลจะไม่สามารถติดตั้ง apache2 บรรจุุภัณฑ์.
เมื่อเสร็จแล้ว ให้บันทึก playbook โดยกด + NS ติดตามโดย และ และ .
เรียกใช้ apt1.yaml หนังสือเล่นดังนี้:
$playbooks ansible-playbook/apt1.yamlอย่างที่คุณเห็น playbook ทำงานบนโฮสต์ Debian 10 ได้สำเร็จ
อย่างที่คุณเห็น apache2 ติดตั้งแพ็คเกจบนโฮสต์ Debian 10 ของฉันแล้ว
การทำงานกับ Ansible dnf/yum Module
NS dnf และ ยำ โมดูลของ Ansible ใช้เพื่อติดตั้งแพ็คเกจซอฟต์แวร์เฉพาะบนโฮสต์ CentOS/RHEL คุณสามารถใช้โมดูลนี้แบบเดียวกับที่คุณทำ ฉลาด โมดูลในส่วนก่อนหน้าของบทความนี้
ทั้ง dnf และ ยำ โมดูลยอมรับพารามิเตอร์เดียวกัน คุณสามารถใช้ dnf โมดูลบนโฮสต์ CentOS/RHEL 8 และ ยำ บน CentOS/RHEL 7 หรือเก่ากว่า
ให้เราดูตัวอย่างของโมดูลนี้
ขั้นแรก ให้สร้าง playbook ใหม่ dnf1.yaml ใน หนังสือเล่น/ ไดเร็กทอรีดังนี้:
$นาโนplaybooks/dnf1.yamlพิมพ์บรรทัดต่อไปนี้ใน dnf1.yaml คู่มือการเล่น:
- เจ้าภาพ: centos8ผู้ใช้: ansible
กลายเป็น: จริง
งาน:
- ชื่อ: ติดตั้งแพ็คเกจ httpd
dnf:
ชื่อ: httpd
รัฐ: ล่าสุด
NS dnf และ ยำ โมดูลต้องการเพียง ชื่อ ของแพ็คเกจที่คุณต้องการติดตั้ง/อัพเกรด/ลบและ สถานะ ของแพ็คเกจ
ที่นี่ฉันกำลังพยายามติดตั้ง httpd บรรจุุภัณฑ์ ( ชื่อ: httpd ) บนโฮสต์ CentOS 8 ของฉัน ขณะที่ฉันกำลังพยายามติดตั้งแพ็คเกจ และฉันต้องการอัปเกรดหากมีเวอร์ชันใหม่ สถานะ ควรจะเป็น ล่าสุด .
สถานะ ยอมรับตัวเลือกต่อไปนี้:
- ไม่มา – แพ็คเกจจะถูกลบออกหากติดตั้งไว้แล้ว
- ล่าสุด – แพ็คเกจจะได้รับการอัปเกรดหากมีการอัพเดท หากยังไม่ได้ติดตั้งแพ็คเกจ แพ็คเกจนั้นจะถูกติดตั้ง
- ปัจจุบัน – แพ็คเกจจะถูกติดตั้งหากยังไม่ได้ติดตั้ง แต่แพ็คเกจจะไม่ได้รับการอัพเกรดหากมีการอัพเดท
สังเกตว่าฉันได้เพิ่ม กลายเป็น: จริง ในคู่มือการเล่น สิ่งนี้ทำให้ ansible สิทธิ์ sudo ของผู้ใช้สำหรับแก้ไขโครงสร้างระบบไฟล์ (เช่น ติดตั้ง/อัพเกรด/ลบแพ็คเกจ) ปราศจาก กลายเป็น: จริง , NS ฉลาด โมดูลจะไม่สามารถติดตั้ง httpd บรรจุุภัณฑ์.
เมื่อเสร็จแล้ว ให้บันทึก playbook โดยกด + NS ติดตามโดย และ และ .
เรียกใช้ dnf1.yaml หนังสือเล่นดังนี้:
$playbooks ansible-playbook/dnf1.yamlอย่างที่คุณเห็น playbook ทำงานบนโฮสต์ CentOS 8 ได้สำเร็จ
การทำงานกับ Ansible service Module
NS บริการ โมดูลของ Ansible ใช้เพื่อเริ่ม หยุด รีสตาร์ท เปิดใช้งาน (เพิ่มบริการในการเริ่มต้น) และปิดใช้งาน (ลบบริการออกจากการเริ่มต้น) บริการในโฮสต์ของคุณ
ในส่วนก่อนหน้านี้ ฉันแสดงวิธีติดตั้งแพ็คเกจเซิร์ฟเวอร์ Apache HTTP โดยใช้ Ansible ฉลาด , dnf และ ยำ โมดูล ให้เราตรวจสอบให้แน่ใจว่าบริการเซิร์ฟเวอร์ Apache HTTP กำลังทำงานและถูกเพิ่มในการเริ่มต้นระบบแล้ว
ฉันจะทำงานกับโฮสต์ Debian 10 ของฉัน แต่คุณสามารถทำงานกับโฮสต์ CentOS 8 ได้หากต้องการ เพียงแค่ปรับ playbook ให้เหมาะสม
ขั้นแรก สร้างเพลย์บุ๊ก Ansible ใหม่ apt2.yaml ดังนี้
$นาโนplaybooks/apt2.yamlพิมพ์บรรทัดต่อไปนี้ใน apt2.yaml คู่มือการเล่น:
- โฮสต์: debian10ผู้ใช้: ansible
กลายเป็น: จริง
งาน:
- ชื่อ: ติดตั้ง apache2
ฉลาด:
ชื่อ: apache2
รัฐ: ล่าสุด
- ชื่อ: เริ่มบริการ apache2
บริการ:
ชื่อ: apache2
สถานะ: เริ่มต้น
เปิดใช้งาน: True
ที่นี่ฉันได้เพิ่มงานใหม่ เริ่มบริการ apache2 .
ชื่อ: apache2 – บริการที่ฉันทำงานอยู่คือ apache2 .
สถานะ: เริ่มต้น – บริการจะต้องทำงาน
เปิดใช้งาน: True – ต้องเพิ่มบริการในการเริ่มต้นระบบ
NS สถานะ พารามิเตอร์ยอมรับค่าอื่นๆ
- โหลดใหม่ – บริการต้องโหลดไฟล์การกำหนดค่าใหม่
- เริ่มใหม่ – ต้องเริ่มบริการใหม่
- เริ่ม – บริการจะต้องทำงาน หากบริการไม่ทำงาน ให้เริ่มบริการ
- หยุด – ต้องหยุดให้บริการ หากบริการกำลังทำงานอยู่ ให้หยุดบริการ
เรียกใช้ playbook apt2.yaml ดังนี้
$playbooks ansible-playbook/apt2.yamlอย่างที่คุณเห็น playbook ทำงานสำเร็จ
อย่างที่คุณเห็น apache2 บริการกำลังทำงานบนโฮสต์ Debian 10 ของฉัน
การทำงานกับ Ansible copy Module
The Ansible สำเนา โมดูลส่วนใหญ่จะใช้เพื่อคัดลอกไฟล์จากคอมพิวเตอร์ของคุณไปยังโฮสต์ระยะไกล
ในส่วนก่อนหน้านี้ ฉันติดตั้งเว็บเซิร์ฟเวอร์ Apache 2 บนโฮสต์ Debian 10 ของฉัน ให้เราคัดลอก an index.html ไฟล์ไปยังเว็บรูทของโฮสต์ Debian 10
ขั้นแรก สร้างไดเร็กทอรีใหม่ ไฟล์/ ดังนี้
$mkdir -vไฟล์สร้างไฟล์ใหม่ index.html ใน ไฟล์/ ไดเร็กทอรีดังนี้:
$นาโนไฟล์/index.htmlพิมพ์บรรทัดต่อไปนี้ใน index.html ไฟล์:
< html >
< ศีรษะ >
< ชื่อ >เว็บเซิร์ฟเวอร์โดย Ansible</ ชื่อ >
</ ศีรษะ >
< ร่างกาย >
< ชั่วโมง1 >ยินดีต้อนรับสู่ LinuxHint</ ชั่วโมง1 >
< NS >เว็บเซิร์ฟเวอร์นี้ถูกปรับใช้กับ Ansible</ NS >
</ ร่างกาย >
</ html >
เมื่อเสร็จแล้วให้บันทึกไฟล์โดยกด + NS ติดตามโดย และ และ .
สร้างเพลย์บุ๊ก Ansible ใหม่ apt3.yaml ดังนี้
$นาโนplaybooks/apt3.yamlพิมพ์บรรทัดต่อไปนี้ใน apt3.yaml ไฟล์:
- โฮสต์: debian10ผู้ใช้: ansible
กลายเป็น: จริง
งาน:
- ชื่อ: ติดตั้ง apache2
ฉลาด:
ชื่อ: apache2
รัฐ: ล่าสุด
- ชื่อ: คัดลอก index.html ไปยังเซิร์ฟเวอร์
สำเนา:
src: ../ไฟล์/index.html
ปลายทาง:/ที่ไหน/www/html/index.html
โหมด: 0644
เจ้าของ: www-data
กลุ่ม: www-data
- ชื่อ: เริ่มบริการ apache2
บริการ:
ชื่อ: apache2
สถานะ: เริ่มต้น
เปิดใช้งาน: True
ที่นี่งาน คัดลอก index.html ไปยังเซิร์ฟเวอร์ สำเนา index.html จาก ไฟล์/ ไดเรกทอรีไปยัง / var / www / html / ไดเร็กทอรีของโฮสต์ Debian 10
src: ../files/index.html - เส้นทางของไฟล์ต้นทาง
ปลายทาง: /var/www/html/index.html – เส้นทางไฟล์ปลายทาง
โหมด: 0644 – สิทธิ์สำหรับผู้ใช้ไฟล์ (6 – อ่านและเขียน) กลุ่ม (4 – อ่าน) และอื่น ๆ (4 – อ่าน)
เจ้าของ: www-data – ตั้งค่าเจ้าของไฟล์เป็น www-data .
กลุ่ม: www-data – ตั้งค่ากลุ่มของไฟล์เป็น www-data .
เมื่อเสร็จแล้วให้บันทึกไฟล์โดยกด + NS ติดตามโดย และ และ .
เรียกใช้ apt3.yaml หนังสือเล่นดังนี้:
$playbooks ansible-playbook/apt3.yamlอย่างที่คุณเห็น งาน คัดลอก index.html ไปยังเซิร์ฟเวอร์ ประสบความสำเร็จ
อย่างที่คุณเห็น index.html ไฟล์ถูกคัดลอกไปยังโฮสต์ Debian 10
อย่างที่คุณเห็น เว็บเซิร์ฟเวอร์ Debian 10 ทำหน้าที่ index.html หน้าที่ฉันเพิ่งคัดลอกไปยังโฮสต์ Debian 10
นี่คือพื้นฐานของ Ansible คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับ Ansible โดยการอ่านเอกสารอย่างเป็นทางการของ Ansible ขอบคุณที่อ่านบทความนี้