เรียนรู้เกี่ยวกับ Ansible Playbook เพื่อทำให้งานเป็นไปโดยอัตโนมัติ

เรียนรู้เกี่ยวกับ Ansible Playbook เพื่อทำให้งานเป็นไปโดยอัตโนมัติ.


ก่อนหน้านี้เราได้พูดคุยเกี่ยวกับการแนะนำ Ansible, คู่มือการติดตั้งและอื่น ๆ ต่อไปให้พูดคุยเกี่ยวกับ Playbook และ Building Block.

เพลย์บุ๊ค Ansible คืออะไร?

playbook เป็นภาษาระบบอัตโนมัติของ Ansible มันเป็นไฟล์ง่ายๆพร้อมชุดคำสั่ง มันอยู่ใน playbooks ที่เรากำหนดสิ่งที่เราต้องการให้ Ansible ทำ Playbooks ประกอบด้วยบทละครที่ทำงานที่ต้องทำและงานเหล่านี้เรียกใช้งานโมดูล งานของพวกเขาดำเนินการตามลำดับ.

ตัวอย่างเช่นมันอาจเป็นเรื่องง่ายเหมือนการรันชุดคำสั่งบนเซิร์ฟเวอร์ที่แตกต่างกันในลำดับและรีสตาร์ทเซิร์ฟเวอร์เหล่านั้นตามลำดับ หรืออาจมีความซับซ้อนเท่ากับการปรับใช้และการจัดสรร VM หลายร้อยในระบบคลาวด์สาธารณะและส่วนตัวรวมถึงการปรับสมดุลภาระการตรวจสอบการตั้งค่าเครือข่าย.

ภาษา Playbook

Playbooks เป็นไฟล์ง่าย ๆ ที่เขียนด้วยรหัส YAML.

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

ด้านล่างเป็นไฟล์ YAML ตัวอย่างสำหรับติดตั้ง mysql:


– ชื่อ: ติดตั้ง MySQL
โฮสต์: geekflare-mysql-service
งาน:
– ชื่อ: ติดตั้ง MySQL
การดำเนินการ: $ ansible_pkg_mgr pkg = สถานะ mysql-server = ติดตั้ง
– ชื่อ: เพิ่ม Python MySQL DB
การดำเนินการ: $ ansible_pkg_mgr pkg = python-mysqldb state = ติดตั้ง

พื้นฐานการเล่นเกมของ Ansible

บทความนี้เป็นส่วนหนึ่งของแนวคิด Ansible พื้นฐานเพื่อทำความเข้าใจเพิ่มเติมเกี่ยวกับ Ansible Playbook.

โฮสต์และผู้ใช้

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


– โฮสต์: ProdServers
remote_user: geekflare

ตัวแปร

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

ตัวอย่างเช่น port_01 เป็นตัวแปรที่ถูกต้องในขณะที่ 01_post เป็นตัวแปรที่ไม่ถูกต้อง นี่คือตัวอย่างของตัวแปรใน Ansible Playbook:

vars:
http_port: 80
max_clients: 200

สินค้าคงเหลือ

ในการใช้งาน Playbook คุณต้องมีรายการเป้าหมายที่คุณต้องการให้ระบบอัตโนมัติเกิดขึ้น นี่คือสิ่งที่สินค้าคงคลังทำ รายการสินค้าคงคลังสามารถสร้างและจัดเก็บได้หลายวิธีรวมถึงไฟล์คงที่เช่นโฮสต์ที่ไม่สามารถใช้งานได้ หรือสามารถสร้างแบบไดนามิกผ่านสคริปต์คลังโฆษณาที่จะดึงรายการโฮสต์สำหรับแหล่งภายนอก.

นอกจากนี้คุณยังสามารถระบุตัวแปรเป็นส่วนหนึ่งของรายการสินค้าคงคลัง ในที่สุดสินค้าคงเหลือเป็นรายการสิ่งที่คุณต้องการทำให้เป็นอัตโนมัติ.

[เว็บเซิร์ฟเวอร์]
192.168.20.1
192.168.20.2
192.168.20.4
[dbservers]
172.17.1.56
172.17.1.57

งาน

เล่นในงานเรียกใช้เพลย์บุ๊คที่เข้าใจได้ ภารกิจนี้รับผิดชอบการรันโมดูลที่มีอยู่ ในแต่ละครั้งสามารถทำงานได้เพียงงานเดียวเท่านั้นและงานจะดำเนินการตามลำดับ งานของพวกเขาเขียนด้วย YAML ซึ่งค่อนข้างเหมือนภาษาอังกฤษ.

ตัวอย่างเช่น: ติดตั้ง package_name, อัปเดตซอฟต์แวร์ _ ชื่อ, ฯลฯ ด้านล่างเป็นตัวอย่างของงานในเพลย์บุ๊ค Ansible เพื่อติดตั้ง httpd:

งาน:
– ชื่อ: ติดตั้งแพคเกจ httpd
yum: ชื่อ = httpd state = ล่าสุด

ขนย้ายวัสดุ

ตัวจัดการเป็นงานพิเศษชนิดหนึ่ง.

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


– โฮสต์: ทั้งหมด
งาน:
– ชื่อ: ให้แน่ใจว่า apache เป็นเวอร์ชันล่าสุด
yum: ชื่อ = httpd state = ล่าสุด
แจ้ง:
– รีสตาร์ท apache
– ชื่อ: ให้แน่ใจว่า Apache กำลังทำงาน (และเปิดใช้งานตอนบูต)
บริการ: ชื่อ = httpd state = เริ่มใช้งานได้ = ใช่
ขนย้ายวัสดุ:
– ชื่อ: รีสตาร์ท apache
บริการ: ชื่อ = httpd state = เริ่มต้นใหม่

สร้างและเปิด Playbook Ansible แรกของคุณ

ให้ฉันบอกวิธีเขียน playbook ทุก playbook เริ่มต้นด้วยขีดกลางสามอัน (-) ที่ด้านบน.

สิ่งแรกที่คุณพูดถึงใน Ansible Playbook คือเครื่องโฮสต์ที่คุณต้องการเรียกใช้ playbook.

จากนั้นคุณสามารถพูดถึงตัวแปรโดยรวบรวมข้อเท็จจริง จากนั้นคุณสามารถพูดถึงงานต่าง ๆ ที่คุณต้องการดำเนินการ ตอนนี้จำไว้ว่างานที่ได้รับการดำเนินการในลำดับเดียวกันกับที่คุณเขียนพวกเขา ตัวอย่างเช่นคุณต้องการติดตั้งซอฟต์แวร์ A ก่อนจากนั้นซอฟต์แวร์ B ตรวจสอบให้แน่ใจว่างานแรกที่เขียนใน playbook คือการติดตั้งซอฟต์แวร์ A และงานถัดไปสามารถติดตั้งซอฟต์แวร์ B ได้.

จากนั้นคุณมีตัวจัดการที่ด้านล่าง ตัวจัดการเป็นงาน แต่ความแตกต่างคือเรียกใช้ตัวจัดการที่คุณต้องการทริกเกอร์บางอย่างในรายการงานเพื่อเรียกใช้ตัวจัดการ.

ให้ฉันแสดงวิธีสร้างเพลย์บุ๊ค ansible เพื่อติดตั้งและเริ่ม nginx บนโฮสต์และเริ่มมัน.

สร้างไฟล์ .yml ที่คุณจะใส่รหัส YAML ของคุณเพื่อสร้างเพลย์ลิสต์.

gedit nginx.yml

ใส่รหัส YAML ด้านล่างในไฟล์นี้และบันทึกไฟล์.


– โฮสต์: ลูกค้า
sudo: ใช่
vars:
– server_port: 8080

งาน:
– ชื่อ: ติดตั้งเว็บเซิร์ฟเวอร์ nginx
apt: pkg = nginx state = ติดตั้ง update_cache = true
แจ้ง:
– เริ่ม nginx

ขนย้ายวัสดุ:
– ชื่อ: เริ่มต้น nginx
บริการ: name = nginx state = เริ่มต้น

ไฟล์ YAML ด้านบนเริ่มต้นด้วยโฮสต์ฉันต้องการเรียกใช้ playbook นี้บนเครื่องไคลเอนต์ (ไคลเอนต์) ที่อยู่ IP ของลูกค้าได้รับการบันทึกในไฟล์ / etc / ansible / hosts แล้ว.

บรรทัดถัดไปอนุญาตให้เรียกใช้งานด้วยสิทธิ์ sudo.

จากนั้นฉันได้กำหนด server_port เป็นตัวแปรใน playbook นี้.

จากนั้นมาเป็นภารกิจแรกของฉันในเพลย์บุคที่มีคำตอบนี้เพื่อติดตั้งเว็บเซิร์ฟเวอร์ Nginx งานนี้ยังมีพารามิเตอร์การแจ้งเตือนซึ่งหมายถึงหลังจากงานนี้ตัวจัดการที่มีการเรียกใช้.

ในที่สุดฉันได้เขียนตัวจัดการเพื่อเริ่ม nginx บนเครื่องไคลเอนต์.

ตอนนี้คุณมีความชัดเจนกับรหัส YAML ในเพลย์ลิสต์ที่มีอยู่ให้ลองเรียกใช้เพลย์บุ๊ค ด้านล่างนี้เป็นไวยากรณ์ในการเรียกใช้งานเพลย์บุ๊ค ansible:

ansible-playbook file_name.yml

ตอนนี้ฉันจะเรียกใช้เพลย์บุ๊ค ansible ซึ่งฉันสร้างเพื่อติดตั้งและเริ่ม nginx.

[email protected]: / home / geekflare # ansible-playbook nginx.yml

เล่น [ลูกค้า] ************************************************ ********************

งาน [รวบรวมข้อเท็จจริง] *********************************************** ************
ตกลง: [node1]

งาน [ติดตั้งเว็บเซิร์ฟเวอร์ nginx] ******************************************* ****

เปลี่ยนแปลงแล้ว: [node1]

ตัวจัดการการวิ่ง [start nginx] ********************************************** ******
ตกลง: [node1]

เล่น RECAP ************************************************** *********************
node1: ok = 3 มีการเปลี่ยนแปลง = 1 ไม่สามารถเข้าถึงได้ = 0 ล้มเหลว = 0 ถูกข้าม = 0 ได้รับการช่วยเหลือ = 0 ละเว้น = 0

เรียกใช้คำสั่งด้านล่างเพื่อตรวจสอบว่าเซิร์ฟเวอร์ nginx ได้รับการติดตั้งและเริ่มการทำงานอย่างถูกต้องจากเพลย์บุ๊ค ansible.

[email protected]: / home / geekflare # ps waux | grep nginx
root 3021 0.0 0.0 77676 1516 Ss 15:27 0:00 nginx: กระบวนการหลัก / usr / sbin / nginx -g daemon on; เปิด master_process;

ข้อสรุป

นั่นเป็นเรื่องเกี่ยวกับเพลย์บุ๊ค Ansible ฉันหวังว่าบทความนี้จะช่วยให้คุณเรียนรู้วิธีสร้างและใช้งานเพลย์บุ๊ค Ansible ลองดูสิ หลักสูตร, หากคุณต้องการเรียนรู้หัวข้อขั้นสูงใน Ansible รวมถึงบทบาท, Jinja2, การค้นหา, ตัวกรอง, โมดูลที่กำหนดเอง.

Tags:

  • เบิ้ล

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map