บทบาทที่ตอบได้ - วิธีที่ดีที่สุดในการแก้ปัญหา Playbooks ของคุณ



บล็อก Ansible Roles นี้พูดถึงวิธีการใช้บทบาทในการทำให้เพลย์บุ๊กที่ซับซ้อนสามารถอ่านได้และนำกลับมาใช้ใหม่ได้ด้วยการสาธิตการตั้งค่า MEAN Stack

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

หัวข้อที่ครอบคลุม:





หากคุณต้องการที่จะเชี่ยวชาญ DevOps ' แน่นอนจะเป็นตัวเลือกที่คุณต้องการ

บทนำสู่บทบาทที่ตอบได้

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



ให้ฉันอธิบายสิ่งนี้ด้วยตัวอย่าง สมมติว่าคุณต้องการให้ playbook ของคุณทำงานที่แตกต่างกัน 10 อย่างใน 5 ระบบที่แตกต่างกันคุณจะใช้ playbook เดียวสำหรับสิ่งนี้หรือไม่? ไม่ได้การใช้ Playbook เล่มเดียวอาจทำให้สับสนและมีแนวโน้มที่จะผิดพลาดได้ แต่คุณสามารถสร้าง 10 บทบาทที่แตกต่างกันโดยที่แต่ละบทบาทจะทำหน้าที่เดียว จากนั้นสิ่งที่คุณต้องทำคือระบุชื่อของบทบาทในเพลย์บุ๊กเพื่อโทรหาพวกเขา คุณจะได้เรียนรู้วิธีใช้บทบาทเพิ่มเติมในบล็อกนี้

การนำกลับมาใช้ใหม่ของบทบาทที่ตอบได้

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

กลับไปที่ตัวอย่างก่อนหน้านี้ คุณเขียนบทบาทไปแล้ว 10 บทบาทและตอนนี้คุณต้องใช้ 5 บทบาทสำหรับการจัดเตรียมชุดอื่น คุณเขียน playbook ทั้งหมดอีกครั้งหรือไม่? ไม่คุณแค่นำบทบาททั้ง 5 นี้กลับมาใช้ใหม่โดยเรียกมันใน Playbook ใหม่นี้ คุณยังสามารถแก้ไขได้หากจำเป็น แต่ก็ยังช่วยประหยัดเวลาได้มาก



สมมติว่าคุณต้องเขียน playbook สำหรับการตั้งค่า LAMP stack คุณต้องสร้าง 4 บทบาทแต่ละบทบาทเพื่อสร้าง Linux, Apache, MongoDB และ PHP ในอนาคตหากคุณต้องการ Playbook อื่นสำหรับตั้งค่า LAMP stack เช่นเดียวกับ WordPress คุณจะสร้างบทบาทใหม่สำหรับ LAMP stack และ WordPress อีกครั้งหรือไม่? ไม่! คุณสามารถใช้บทบาทเก่าซ้ำได้ (ใช้สำหรับ LAMP stack) และสร้างบทบาทใหม่เพิ่มเติมสำหรับ WordPress

โครงสร้างไดเรกทอรีบทบาท

การใช้ Ansible Roles คาดว่าไฟล์จะอยู่ในโครงสร้างไฟล์ที่แน่นอน ส่วนที่สับสนที่สุดในการใช้บทบาทคือการทำความเข้าใจลำดับชั้นของไฟล์ Ansible มีฟีเจอร์ที่เรียกว่า Ansible Galaxy ที่ช่วยให้คุณเล่นตามบทบาทต่างๆ เรารู้แล้วว่า Ansible ของเราอยู่ที่ไหนบน Ubuntu (/ etc / ansible) คุณเคยเห็นไดเร็กทอรีที่เรียกว่า role ภายใต้ / etc / ansible หรือไม่? ไดเร็กทอรีนั้นมีอยู่จริงด้วยเหตุผลนี้ คุณสร้างบทบาทที่แตกต่างกันภายในไดเร็กทอรีนี้

ไดเร็กทอรีจะมีลักษณะดังนี้:

วิธีการเป็นวิศวกรปัญญาประดิษฐ์

ต้นไม้ - บทบาทที่ตอบได้ - Edureka

คุณสามารถสร้างบทบาทโดยใช้ไฟล์ แอนซิเบิลกาแล็กซี่ เริ่มคำสั่งภายใน / etc / ansible /

$sudoansible-galaxy init

คุณจะเห็นไดเรกทอรีบทบาทอื่น ๆ ที่จะถูกสร้างขึ้นด้วย

ไดเร็กทอรีเหล่านี้คืองานตัวจัดการค่าเริ่มต้น vars ไฟล์เทมเพลตและเมตาและ READMEmdไฟล์.

งาน - ประกอบด้วยรายการหลักของงานที่จะดำเนินการโดยบทบาท มันประกอบด้วยไฟล์ main.yml สำหรับบทบาทนั้น ๆ

สร้างอาร์เรย์ของวัตถุ java

ตัวจัดการ - มีตัวจัดการที่บทบาทนี้อาจใช้หรือแม้กระทั่งที่ใดก็ได้นอกบทบาทนี้

ค่าเริ่มต้น - มีตัวแปรเริ่มต้นที่จะใช้กับบทบาทนี้

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

ไฟล์ - มีไฟล์ที่สามารถปรับใช้โดยบทบาทนี้ มีไฟล์ที่ต้องส่งไปยังโฮสต์ขณะกำหนดค่าบทบาท

เมตา - กำหนดข้อมูลเมตาสำหรับบทบาทนี้ โดยทั่วไปจะมีไฟล์ที่สร้างการอ้างอิงบทบาท

ทุก งาน ไดเร็กทอรีต้องประกอบด้วยไฟล์ main.yml ไฟล์ที่เขียนโค้ดจริงสำหรับบทบาทนั้น ๆ

ตอนนี้เรามาทำความเข้าใจการทำงานหรือบทบาทด้วยการสาธิตการติดตั้ง MEAN Stack

Demo: การติดตั้ง MEAN Stack โดยใช้ Ansible Roles

ฉันจะสาธิตวิธีการติดตั้ง MEAN Stack โดยใช้ Ansible Roles เพียงแค่เรียกใช้ playbook เดียว เราจะมีสามบทบาท: 1) การติดตั้งข้อกำหนดเบื้องต้น 2) การติดตั้ง MongoDB และ 3) การติดตั้ง NodeJS ฉันสมมติว่าคุณได้แล้ว ติดตั้ง Ansible และทำการเชื่อมต่อเซิร์ฟเวอร์ไคลเอนต์บน Ubuntu . มาเริ่มเล่นกับ Ansible Roles กัน

ขั้นตอนที่ 1 - ไปที่ไดเร็กทอรี / etc / ansible / role และสร้างบทบาทสำหรับข้อกำหนดเบื้องต้น MongoDB และ NodeJS

$ cd / etc / ansible / role $ sudo ansible-galaxy init ข้อกำหนดเบื้องต้น $ sudo ansible-galaxy init mongodb $ sudo ansible-galaxy init nodejs

ตอนนี้คุณควรเห็นสามบทบาทในไดเรกทอรี 'บทบาท'

ขั้นตอนที่ 2 - เขียน main.yml สำหรับข้อกำหนดเบื้องต้นที่ติดตั้ง Git

ข้อกำหนดเบื้องต้น $ cd / งาน / main.yml --- - ชื่อ: ติดตั้ง git apt: name: git state: present update_cache: ใช่

ขั้นตอนที่ 3 - เขียน main.yml สำหรับบทบาท MongoDB

$ cd /mongodb/tasks/main.yml --- - name: MongoDB - นำเข้าคีย์สาธารณะ apt_key: keyserver: hkp: //keyserver.ubuntu.com: 80 id: EA312927 - name: MongoDB - เพิ่มที่เก็บ apt_repository: filename: '/etc/apt/sources.list.d/mongodb-org-3.2.list' repo: 'deb http://repo.mongodb.org/apt/ubuntu trusty / mongodb-org / 3.2 multiverse' state: นำเสนอ update_cache : ใช่ - ชื่อ: MongoDB - ติดตั้ง MongoDB apt: name: mongodb-org state: present update_cache: yes - name: Start mongod shell: 'mongod &'

ขั้นตอนที่ 4 - เขียน main.yml สำหรับnodejsบทบาท

$ cd nodejs / task / main.yml --- - name: Node.js - รับสคริปต์ get_url: url: 'http://deb.nodesource.com/setup_6.x' dest: '{{var_node}} / nodejs .sh '- name: Node.js - ตั้งค่าสิทธิ์การดำเนินการให้กับไฟล์สคริปต์: path:' {{var_node}} / nodejs.sh 'mode:' u + x '- name: Node.js - เรียกใช้เชลล์สคริปต์การติดตั้ง:' {{var_node}} / nodejs.sh '- name: Node.js - ลบไฟล์สคริปต์การติดตั้ง: path:' {{var_node}} / nodejs.sh 'state: absent - name: Node.js - ติดตั้ง Node.js apt : name = {{item}} state = present update_cache = yes with_items: - build-essential - nodejs - name: Node.js - ติดตั้ง bower และ gulp global npm: name = {{item}} state = present global = yes with_items : - bower - อึก

ขั้นตอนที่ 5 - เขียน playbook หลักของคุณ

$ cd /etc/ansible/mean.yml --- - โฮสต์: โหนด remote_user: ansible become: yes become_method: sudo vars: #variable จำเป็นระหว่างการติดตั้งโหนด var_node: / tmp บทบาท: - ข้อกำหนดเบื้องต้น - mongodb - nodejs

ตอนนี้เราได้กำหนดบทบาทสำหรับการติดตั้งข้อกำหนดเบื้องต้นแล้ว MongoDB และ NodeJsมาทำให้ใช้งานได้ เรียกใช้ playbook โดยใช้คำสั่งต่อไปนี้

$sudoansible-playbook /etc/ansible/mean.yml -K

ความแตกต่างระหว่างการแทนที่และการโอเวอร์โหลด

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

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

มีคำถามสำหรับเรา? กรุณาโพสต์บน และเราจะติดต่อกลับ