บทช่วยสอนสำหรับผู้เริ่มต้น – Ansible Playbooks, Variables, and Inventory

Beginner S Tutorial Ansible Playbooks



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

ไฟล์ 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.167
192.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.com
192.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.com
vm2.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

พิมพ์ตัวแปรของคุณดังนี้:

ชื่อผู้ใช้: Lily
http_port: 4343

เมื่อเสร็จแล้วให้บันทึกไฟล์โดยกด + NS ตามด้วย Y และ .

เช่นเดียวกับการตั้งค่าตัวแปรกลุ่มสำหรับ centos8 กลุ่มโฮสต์ สร้างไฟล์ centos8 (เหมือนกับชื่อกลุ่ม) ใน group_vars / ไดเร็กทอรีดังนี้:

$นาโนgroup_vars/centos8

พิมพ์ตัวแปรของคุณดังนี้:

ชื่อผู้ใช้: Bob
http_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

พิมพ์ตัวแปรโฮสต์ของคุณดังนี้:

ชื่อผู้ใช้: Alex
http_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 ขอบคุณที่อ่านบทความนี้