การสอน Ansible
ฉันหวังว่าคุณจะอ่านบล็อกก่อนหน้านี้เพื่อเรียนรู้ และคำศัพท์ที่ใช้บ่อยที่สุดของ Ansible ในกรณีที่คุณยังไม่มีโปรดตรวจสอบเพื่อให้คุณเข้าใจบทช่วยสอน Ansible นี้ได้ดีขึ้นคุณควรทราบด้วยว่า Ansible เป็นส่วนสำคัญของ เป็นเครื่องมือสำหรับการจัดการการกำหนดค่าการปรับใช้และการจัดระเบียบ
ขออธิบายภาพรวมของ 'Ansible Tutorial' นี้:
- คุณจะได้เรียนรู้ที่จะ เขียน playbooks
- คุณจะได้เรียนรู้เกี่ยวกับความแตกต่าง โมดูลใน Ansible
- คุณจะได้เรียนรู้การเขียน คำสั่ง Adhoc
- ลงมือ ด้วย Ansible
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-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 โดยอัตโนมัติ