Ansible Tutorial - เรียนรู้การเขียน Ansible Playbooks



ในบล็อก Ansible Tutorial นี้คุณจะได้เรียนรู้วิธีการเขียน Ansible playbooks คำสั่ง adhoc และลงมือปฏิบัติเพื่อปรับใช้ Nginx บนเครื่องโฮสต์ของคุณ

การสอน Ansible

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

ขออธิบายภาพรวมของ 'Ansible Tutorial' นี้:





Ansible Playbook Tutorial | การฝึก DevOps | Edureka

Ansible Tutorial - การเขียน Ansible Playbooks

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



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

สมาชิกทั้งหมดของรายการคือบรรทัดที่ขึ้นต้นด้วยระดับการเยื้องเดียวกันโดยเริ่มต้นด้วย '-' (เส้นประและช่องว่าง) โครงสร้างข้อมูลที่ซับซ้อนมากขึ้นเป็นไปได้เช่นรายการพจนานุกรมหรือพจนานุกรมแบบผสมที่มีค่าเป็นรายการหรือทั้งสองอย่างผสมกัน

เช่น. สำหรับรายชื่อแผนกใน edureka:



แผนก: - การตลาด - การขาย - การแก้ปัญหา - การเขียนเนื้อหา - การสนับสนุน - ผลิตภัณฑ์

ตอนนี้ขอยกตัวอย่างพจนานุกรม:

- สหรัฐอเมริกา - ทวีป: อเมริกาเหนือ - เมืองหลวง: วอชิงตัน ดี.ซี. - ประชากร: 319 ล้านคน

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

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

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

ตัวแปร:

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

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

แต่มี กฎ สำหรับการตั้งชื่อตัวแปร ชื่อตัวแปรควรเป็นตัวอักษรตัวเลขและขีดล่าง ตัวแปรควรขึ้นต้นด้วยตัวอักษรเสมอ เช่น. wamp_21, port5 เป็นชื่อตัวแปรที่ถูกต้องในขณะที่ 01_port, _server ไม่ถูกต้อง

งาน:

Tasks ช่วยให้คุณสามารถแบ่งบิตของนโยบายการกำหนดค่าออกเป็นไฟล์ขนาดเล็ก งานรวมถึงการดึงจากไฟล์อื่น ๆ งานใน Ansible ไปพร้อมกับความหมายภาษาอังกฤษของมัน

เช่น: ติดตั้งอัปเดต ฯลฯ

ตัวจัดการ:

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

ฉันขอยกตัวอย่าง playbook ที่จะเริ่มโปรแกรมเซิร์ฟเวอร์ Apache httpd:

ส่วนประกอบของแพลตฟอร์ม java คืออะไร?
----เจ้าภาพ: เว็บเซิร์ฟเวอร์ ซึ่ง: http_port: 80 max_clients: 200 remote_user: ราก งาน: - ชื่อ: ตรวจสอบให้แน่ใจว่า apache เป็นเวอร์ชันล่าสุด ยำ: ชื่อ = httpd state = ล่าสุด - ชื่อ: เขียนไฟล์ config apache แม่แบบ: src = / srv / httpd.j2 dest = / etc / httpd.conf แจ้ง: - รีสตาร์ท apache - ชื่อ: ตรวจสอบให้แน่ใจว่า apache กำลังทำงานอยู่ (และเปิดใช้งานเมื่อบูต) บริการ: ชื่อ = httpd state = เริ่มเปิดใช้งาน = ใช่ ตัวจัดการ: - ชื่อ: รีสตาร์ท apache บริการ: name = httpd state = เริ่มใหม่

ฉันหวังว่าตัวอย่างจะเกี่ยวข้องกับคำอธิบายทั้งหมดของส่วนประกอบ Playbook ที่ฉันได้กล่าวไว้ข้างต้น หากยังไม่ชัดเจนสำหรับคุณอย่ากังวลข้อสงสัยทั้งหมดของคุณจะกระจ่างในส่วนต่อไปของบล็อกนี้

ทั้งหมดนี้เป็นข้อมูลเกี่ยวกับ playbooks Playbooks ที่คุณจะเขียน แต่ Ansible มีโมดูลมากมายให้คุณใช้งานได้เช่นกัน

Ansible Tutorial - โมดูล

โมดูลใน Ansible นั้นไม่จำเป็น จากมุมมองของบริการ RESTful เพื่อให้การดำเนินการ (หรือการเรียกใช้บริการ) เป็นไปอย่างมีประสิทธิภาพไคลเอนต์สามารถทำการโทรเดียวกันนั้นซ้ำ ๆ ในขณะที่ให้ผลลัพธ์เดียวกัน กล่าวอีกนัยหนึ่งการส่งคำขอที่เหมือนกันหลายรายการมีผลเหมือนกับการร้องขอครั้งเดียว

มีโมดูลหลายประเภทใน Ansible

  • โมดูลหลัก
  • โมดูลพิเศษ

โมดูลหลัก

โมดูลเหล่านี้เป็นโมดูลที่ทีมงานหลักของ Ansible ดูแลรักษาและจะจัดส่งมาพร้อมกับ Ansible เสมอ นอกจากนี้ยังจะได้รับลำดับความสำคัญสูงกว่าเล็กน้อยสำหรับคำขอทั้งหมดมากกว่าที่อยู่ใน repos 'พิเศษ'

แหล่งที่มาของโมดูลเหล่านี้โฮสต์โดย Ansible บน GitHub ใน Ansible-module-core

โมดูลพิเศษ

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

โมดูล 'พิเศษ' ยอดนิยมอาจได้รับการเลื่อนระดับเป็นโมดูลหลักเมื่อเวลาผ่านไป

ซอร์สสำหรับโมดูลเหล่านี้โฮสต์โดย Ansible บน GitHub ใน Ansible-module-extras

เช่น: หนึ่งในโมดูลพิเศษในโมดูลการจัดการระยะไกลคือโมดูล ipmi_power ซึ่งเป็นตัวจัดการพลังงานสำหรับเครื่องระยะไกล ต้องใช้ python 2.6 หรือใหม่กว่าและ pyghmi จึงจะทำงานได้

คุณสามารถใช้โมดูลนี้ได้โดยเขียนคำสั่ง adhoc เหมือนที่ฉันเขียนไว้ด้านล่าง:

ipmi_power: name = 'test.domain.com' user = 'localhost' รหัสผ่าน = 'xyz' state = 'on'

Ansible Tutorial - ส่งคืนค่า

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

ตัวอย่างบางส่วนของค่าที่ส่งคืน ได้แก่ :

  • เปลี่ยนแปลง: ส่งคืนด้วยค่าบูลีนเมื่อใดก็ตามที่งานมีการเปลี่ยนแปลง
  • ล้มเหลว: ส่งคืนค่าบูลีนหากงานล้มเหลว
  • msg: ส่งคืนสตริงพร้อมข้อความทั่วไปที่ส่งต่อไปยังผู้ใช้

Ansible Tutorial - คำสั่ง AdHoc

คำสั่ง Adhoc เป็นคำสั่งง่ายๆเพียงบรรทัดเดียวเพื่อดำเนินการบางอย่าง การรันโมดูลด้วยคำสั่ง Ansible คือคำสั่ง adhoc

เช่น:

โฮสต์ที่ตอบได้ -m netscaler -a 'nsc_host = nsc.example.com user = apiuser password = apipass' 

คำสั่ง adhoc ด้านบนใช้โมดูล netscaler เพื่อปิดใช้งานเซิร์ฟเวอร์ มีโมดูลหลายร้อยโมดูลที่สามารถใช้ได้ใน Ansible ซึ่งคุณสามารถอ้างถึงและเขียนคำสั่ง adhoc ได้

ดีพอกับคำอธิบายทางทฤษฎีทั้งหมดให้ฉันอธิบาย Ansible ด้วยมือบางส่วน

รวมตัวเลขในจาวาจำนวนเต็ม

Ansible Tutorial - ลงมือทำ

ฉันกำลังจะเขียน playbook เพื่อติดตั้ง Nginx บนเครื่องโหนด / โฮสต์ของฉัน

เอาล่ะ :)

ขั้นตอนที่ 1: เชื่อมต่อกับโฮสต์ของคุณโดยใช้ SSH เพื่อที่คุณจะต้องสร้างคีย์ SSH สาธารณะ

ใช้คำสั่งด้านล่าง:

ssh-keygen

สร้างคีย์ Ssh - บทช่วยสอน Ansible - Edureka

ดังที่คุณเห็นในภาพรวมด้านบนคำสั่ง ssh-keygen สร้างคีย์ SSH สาธารณะ

ขั้นตอนที่ 2: งานต่อไปของคุณคือการคัดลอกคีย์ SSH สาธารณะบนโฮสต์ของคุณ ในการดำเนินการดังกล่าวให้ใช้คำสั่งด้านล่าง:

ssh-copy-id -i root @

ภาพรวมด้านบนแสดงคีย์ SSH ที่ถูกคัดลอกไปยังโฮสต์

ขั้นตอนที่ 3: ระบุที่อยู่ IP ของโฮสต์ / โหนดของคุณในสินค้าคงคลังของคุณ

ใช้คำสั่งต่อไปนี้:

vi / etc / ansible / โฮสต์

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

ขั้นตอนที่ 4: มาปิงเพื่อให้แน่ใจว่ามีการเชื่อมต่อแล้ว

ภาพรวมด้านบนยืนยันว่ามีการเชื่อมต่อระหว่างเครื่องควบคุมและโฮสต์ของคุณ

วิธีใช้สไปรต์ css

ขั้นตอนที่ 5: ตอนนี้ให้เราเขียน playbook เพื่อติดตั้ง Nginx บนเครื่องโฮสต์ คุณสามารถเขียน playbook ของคุณในตัวแก้ไข vi เพียงแค่สร้าง playbook ของคุณโดยใช้คำสั่ง:

vi

ภาพรวมด้านล่างแสดง playbook ของฉันเพื่อติดตั้ง Nginx ที่เขียนในรูปแบบ YAML

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

ตัวแปร server_port ถูกตั้งค่าให้ฟังบนพอร์ต TCP 8080 สำหรับคำขอที่เข้ามา

ที่นี่งานแรกคือรับแพ็คเกจที่จำเป็นสำหรับการติดตั้ง Nginx จากนั้นทำการติดตั้งภายใน Ansible จะตรวจสอบว่ามีไดเร็กทอรีอยู่หรือไม่และสร้างขึ้นหากไม่มีมิฉะนั้นจะไม่ทำอะไรเลย

งานต่อไปคือกำหนดค่า Nginxใน Nginx บริบทประกอบด้วยรายละเอียดการกำหนดค่า

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

ตัวจัดการในที่นี้กำหนดการดำเนินการที่จะดำเนินการเมื่อมีการแจ้งเตือนงานหรือการเปลี่ยนแปลงสถานะเท่านั้น ใน Playbook นี้เราได้กำหนดไว้แจ้งเตือน: รีสตาร์ทตัวจัดการ Nginx ซึ่งจะรีสตาร์ท Nginx เมื่อคัดลอกไฟล์และเทมเพลตไปยังโฮสต์

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

ขั้นตอนที่ 6: ตอนนี้เรามาเรียกใช้ Playbook นี้โดยใช้คำสั่งด้านล่าง:

ansible-playbook .yml

เราสามารถเห็นในภาพหน้าจอด้านบนว่างานของเรากำลังดำเนินการติดตั้ง Nginx

ขั้นตอนที่ 7: มาตรวจสอบว่ามีการติดตั้ง Nginx บนเครื่องโฮสต์ของฉันหรือไม่ ใช้คำสั่งด้านล่าง:

ps waux | grep nginx

คุณสามารถดูในภาพหน้าจอด้านบนได้ว่ารหัสกระบวนการต่างๆ 3555 และ 103316 กำลังทำงานอยู่ซึ่งทำให้มั่นใจได้ว่า Nginx กำลังทำงานบนเครื่องโฮสต์ของคุณ

ยินดีด้วย! คุณปรับใช้ Nginx บนโฮสต์ของคุณได้สำเร็จโดยใช้ Ansible playbooks ฉันหวังว่าคุณจะสนุกกับการอ่านบล็อก Ansible Tutorial นี้ โปรดแจ้งให้เราทราบหากคุณมีข้อสงสัยใด ๆ ในส่วนความคิดเห็นด้านล่าง

หากคุณพบสิ่งนี้“ การสอน Ansible ” เกี่ยวข้อง ตรวจสอบไฟล์ โดย Edureka บริษัท การเรียนรู้ออนไลน์ที่เชื่อถือได้ซึ่งมีเครือข่ายผู้เรียนที่พึงพอใจมากกว่า 250,000 คนกระจายอยู่ทั่วโลก หลักสูตรการฝึกอบรมการรับรอง Edureka DevOps ช่วยให้ผู้เรียนมีความเชี่ยวชาญในกระบวนการและเครื่องมือต่างๆของ DevOps เช่น Puppet, Jenkins, Ansible, Nagios และ Git สำหรับการทำหลายขั้นตอนใน SDLC โดยอัตโนมัติ