ขั้นตอนแรกในการทำให้วงจรชีวิตการทำงานของแอปพลิเคชันเป็นไปโดยอัตโนมัติคือการจัดเตรียมโครงสร้างพื้นฐานโดยอัตโนมัติ การจัดเตรียมเป็นกระบวนการที่น่ารำคาญในการตั้งค่าการกำหนดค่าการจัดสรรหน่วยความจำพื้นที่ดิสก์ ฯลฯ ก่อนที่จะใช้งานจริง มาดูกันว่า Ansible Provisioning ทำให้สิ่งนี้ง่ายขึ้นและเร็วขึ้นได้อย่างไร
การปรับใช้ขนาดใหญ่ส่วนใหญ่ต้องการให้คุณมีการตั้งค่าสภาพแวดล้อมที่เหมือนกันในหลายระบบแล้วคุณจะทำอย่างไร? ดำเนินการชุดคำสั่งเดียวกันในระบบร้อยระบบด้วยตนเอง ?? Nahh .. โรงเรียนเก่าเกินไป นี่คือสิ่งที่เครื่องจักรทำได้ดีไม่ใช่มนุษย์ จะเกิดอะไรขึ้นถ้าฉันบอกคุณว่ากระบวนการที่ยาวนานและน่าเบื่อนี้สามารถทำได้โดยใช้ Ansible playbook เพียงเล่มเดียว?นั่นคือสิ่งที่เราจะพูดถึงในบล็อกนี้ - Ansible Provisioning
หัวข้อที่ครอบคลุม ได้แก่ :
- Ansible คืออะไร
- Ansible Automate ทำอะไรได้บ้าง?
- ต้องการการจัดเตรียม Ansible
- การสาธิต: วิธีจัดเตรียมสภาพแวดล้อมในการปรับใช้เว็บไซต์
หากคุณต้องการที่จะเชี่ยวชาญ DevOps ' หลักสูตรควรเป็นตัวเลือกที่คุณต้องการ
Ansible คืออะไร?
DevOps เป็นวัฒนธรรมที่ระบบอัตโนมัติให้ความสำคัญสูงมาก เมื่อสามารถมีเครื่องมือสำหรับการปรับใช้และกระบวนการทดสอบโดยอัตโนมัติทำไมไม่มีเครื่องมือสำหรับการจัดการการกำหนดค่าและการจัดเตรียม มีล้านวิธีที่จะทำให้ฉลาดขึ้นและการใช้ Ansible ก็เป็นหนึ่งในนั้น นับเป็นหนึ่งในเครื่องมือที่ใช้กันอย่างแพร่หลาย
Ansible ใช้เพลย์บุ๊คที่ใช้ YAML ซึ่งผู้เริ่มต้นสามารถเข้าใจได้ โดยใช้สถาปัตยกรรมแบบไม่ใช้ตัวแทนในการสื่อสารกับลูกค้าซึ่งไม่เกี่ยวข้องกับเครื่องมือของบุคคลที่สามใด ๆ ที่จะติดตั้งบนเครื่องของไคลเอ็นต์และใช้การเชื่อมต่อแบบ SSH แทน Ansible เป็นเครื่องมืออัตโนมัติมาดูกันว่าอะไรทำให้อัตโนมัติได้บ้าง
Ansible Automate ทำอะไรได้บ้าง?
ตั้งชื่อขั้นตอนในวงจรการพัฒนาและ Ansible จะช่วยคุณได้ไม่ว่าจะเป็นการจัดการการกำหนดค่าการจัดเตรียมการจัดเตรียมการจัดส่งแบบต่อเนื่องการรักษาความปลอดภัยหรือแม้แต่การปรับใช้แอปพลิเคชัน Ansible รวมเวิร์กโฟลว์ของวงจรการพัฒนาไว้ในแพลตฟอร์มอัตโนมัติแบบอัตโนมัติแบบเอเจนต์เดียว
- การจัดเตรียม: การสร้างสภาพแวดล้อมที่เหมาะสมเพื่อให้แอปพลิเคชัน / ซอฟต์แวร์ใช้งานได้เป็นสิ่งที่จำเป็น Ansible เป็นวิธีการทำให้สภาพแวดล้อมที่สร้างขึ้นโดยอัตโนมัติสำหรับการมีอยู่ของแอปพลิเคชัน
- การจัดการการตั้งค่า: ดำเนินงานการกำหนดค่าที่หลากหลายเช่นบริการเริ่ม / หยุดเปลี่ยนการกำหนดค่าระบบอุปกรณ์หรือแอปพลิเคชันเป็นต้น
- การปรับใช้แอปพลิเคชัน: กำหนดการปรับใช้โดยอัตโนมัติด้วย Ansible และจัดการการปรับใช้โดยใช้ หอคอย Ansible . สิ่งนี้ทำให้วงจรแอปพลิเคชันทั้งหมดตั้งแต่การผลิตจนถึงการปรับใช้งานมีประสิทธิภาพและสามารถจัดการได้
- การจัดส่งต่อเนื่อง: การสร้างและจัดการไปป์ไลน์การรวมแบบต่อเนื่อง / การจัดส่งแบบต่อเนื่องอาจเป็นเรื่องยุ่งยาก นี่คือจุดที่ Ansible ก้าวเข้ามาและทำให้ชีวิตของนักพัฒนาซอฟต์แวร์ง่ายขึ้น
- ความปลอดภัยและการปฏิบัติตามข้อกำหนด: การทำงานกับโครงการกำหนดขอบเขตและรวมเข้ากับนโยบายความปลอดภัยของ บริษัท เสมอ การมีนโยบายความปลอดภัยรวมเข้ากับการปรับใช้โดยอัตโนมัติสามารถทำให้การปฏิบัติตามนโยบายง่ายขึ้น
- การจัดระเบียบ: โครงการทั้งหมดคือชุดของอินสแตนซ์ต่างๆมากมายที่มีการกำหนดค่าที่แตกต่างกัน Ansible ผสานและจัดการอินสแตนซ์ต่างๆเหล่านี้โดยรวม
ต้องการการจัดเตรียมที่ตอบได้
ดังที่ได้กล่าวไว้ก่อนหน้านี้ขั้นตอนแรกในการทำให้วงจรชีวิตการทำงานของแอปพลิเคชันเป็นไปโดยอัตโนมัติกำลังเตรียมสภาพแวดล้อมให้พร้อมนั่นคือการจัดเตรียม การปรับใช้ขนาดใหญ่ต้องการโฮสต์หลายตัวที่มีการกำหนดค่าเหมือนกันทุกประการ หลังจากจัดเตรียมโฮสต์ 1 โฮสต์แล้วโอกาสที่คุณจะได้รับ 10 โฮสต์ถัดไปจะมีการกำหนดค่าเหมือนกันทุกประการหากทำด้วยตนเองเป็นอย่างไร คุณจะใช้เวลาในการทำงานซ้ำ ๆ เดิม ๆ นานแค่ไหน? นี่คือจุดที่ Ansible มาสู่บริการของเรา คุณสามารถจัดเตรียมโฮสต์ได้หลายร้อยรายการเพียงแค่เรียกใช้ Playbook เดียว มายากล? ฮาฮา! ไม่เพียงแค่วิวัฒนาการในระบบอัตโนมัติ
Demo: สร้าง LAMP Stack และปรับใช้เว็บเพจ
คือมีความสัมพันธ์
สมมติว่าคุณกำลังพยายามทำให้เว็บไซต์ใช้งานได้ใน 30 ระบบการปรับใช้เว็บไซต์ทุกครั้งจะต้องใช้ระบบปฏิบัติการพื้นฐานเว็บเซิร์ฟเวอร์ฐานข้อมูลและ PHP เราใช้โปรแกรมเล่นที่ตอบได้เพื่อติดตั้งข้อกำหนดเบื้องต้นเหล่านี้ในระบบทั้ง 30 ระบบพร้อมกัน
ในการสาธิตการจัดเตรียม Ansible นี้ฉันจะแสดงวิธีจัดเตรียมสภาพแวดล้อมการโฮสต์เว็บไซต์โดยใช้ Ansible เราติดตั้งสแต็ก LAMP (Linux, Apache, MySQL และ PHP) จากนั้นปรับใช้เว็บไซต์
สำหรับการสาธิตนี้ฉันได้ใช้ Linux VirtualBox ที่มี Ubuntu เวอร์ชัน 17.04 ฉันใช้เครื่องเสมือนสองเครื่องโดยเครื่องหนึ่งเป็นเซิร์ฟเวอร์ของฉันที่ติดตั้ง Ansible และอีกเครื่องทำหน้าที่เป็นโฮสต์ระยะไกลของฉัน เริ่มต้นด้วยการตั้งค่า Ansible บนเซิร์ฟเวอร์
ฉันได้สร้างหน้าเว็บแบบคงที่แบบธรรมดาที่บันทึกไว้ในโฟลเดอร์ ดัชนี ซึ่งมีสองไฟล์ index.html และ style.css
Salesforce service cloud คืออะไร
index.html:
เว็บไซต์โดยใช้ HTML และ CSSบ้าน เกี่ยวกับ สายพันธุ์ การรับเป็นบุตรบุญธรรม ติดต่อ นำไปใช้ตอนนี้
style.css
* { ขอบ: 0 ช่องว่างภายใน: 0 } หัวข้อ { ภาพพื้นหลัง: linear-gradient (rgba (0,0,0,0.5), rgba (0,0,0,0.5)), url ('Puppie.jpg') ความสูง: 100vh พื้นหลังขนาด: ปก ตำแหน่งพื้นหลัง: กลาง } .nav-menu { ลอย: ถูกต้อง สไตล์รายการ: ไม่มี ขอบด้านบน: 30px } .nav-menu li { display: อินไลน์บล็อก } .nav-menu li a { สี: เทอร์ควอยซ์ ตกแต่งข้อความ: ไม่มี padding: 5px 20px แบบอักษรตระกูล: 'Verdana', 'sans-serif' ขนาดตัวอักษร: 20px } .homebtn ก { เส้นขอบ: 1px ทึบสีเทา พื้นหลังสี: ขาว } .nav-menu li a: hover { เส้นขอบ: 1px ทึบสีเทา พื้นหลังสี: ขาว } .tagline { ตำแหน่ง: แน่นอน ความกว้าง: 1200px ระยะขอบซ้าย: 0 ขอบด้านบน: 0 } h1 { สี: ขาว ขนาดตัวอักษร: 50px แบบอักษรตระกูล: 'Verdana', 'sans-serif' จัดข้อความ: ตรงกลาง ขอบด้านบน: 275px } .adopt { ขอบด้านบน: 30px ระยะขอบซ้าย: 540px } .bttn { เส้นขอบ: 1px ทึบสีขาว padding: 10px 30px สี: เหลือง แบบอักษรตระกูล: 'Verdana', 'sans-serif' ขนาดตัวอักษร: 22px ตกแต่งข้อความ: ไม่มี } .adopt a: hover { พื้นหลังสี: burlywood }
ขั้นตอนที่ 1: ดำเนินการคำสั่งต่อไปนี้เพื่ออัพเดตที่เก็บเพิ่มที่เก็บที่ต้องการและกำหนดค่า PPA บนเครื่องของคุณสำหรับการติดตั้ง Ansible:
$ sudo apt-get update $ sudo apt-get install software-properties-common $ sudo apt-add-repository ppa: ansible / ansible
กด Enter เพื่อยอมรับการเพิ่ม PPA จากนั้นติดตั้ง Ansible ในที่สุดหลังจากอัปเดตที่เก็บ
$ sudo apt-get update $ sudo apt-get install ansible
ขั้นตอนที่ 2: ไปที่ไฟล์ / etc / hosts ของเซิร์ฟเวอร์ของคุณแล้วเพิ่มชื่อโฮสต์และที่อยู่ IP ของโฮสต์
รูปที่ 1 - เพิ่มโฮสต์ระยะไกลไปยังไฟล์ / etc / hosts - Ansible Provisioning
ขั้นตอนที่ 3: เนื่องจาก Ansible ทำงานบนสถาปัตยกรรมแบบไม่ใช้เอเจนต์ของการใช้ SSH เพื่อสื่อสารกับโฮสต์ให้ตั้งค่าคีย์ ssh โดยพื้นฐานแล้วเรามีเซิร์ฟเวอร์หนึ่งเครื่องและหนึ่งโฮสต์ เราควบคุมโฮสต์ด้วยเซิร์ฟเวอร์ของเราและด้วยเหตุนี้เราจึงสร้าง ssh-key สาธารณะบนเซิร์ฟเวอร์และคัดลอกในเครื่องของโฮสต์ ดำเนินการคำสั่งต่อไปนี้บนเซิร์ฟเวอร์:
$ ssh-keygen
คุณจะได้รับแจ้งให้ป้อนชื่อไฟล์ที่ฉันคุณต้องการบันทึกคีย์ของคุณและแจ้งให้คุณสร้างรหัสผ่านสำหรับการเข้าถึงคีย์ที่สร้างขึ้นซึ่งเป็นทางเลือก โดยค่าเริ่มต้นคีย์สาธารณะจะได้รับการบันทึกในไฟล์. ssh / id_rsa.pub และคีย์ส่วนตัวจะได้รับการบันทึกใน. ssh / id_rsa
รูปที่ 2 - สร้างคีย์ ssh - การจัดสรรที่ตอบได้
ตอนนี้คีย์ที่สร้างขึ้นนี้จะต้องมีอยู่ในโฮสต์ของคุณ การคัดลอกคีย์ลงในโฮสต์สามารถทำได้สองวิธีคือคัดลอกลงในโฮสต์ด้วยตนเองหรือใช้คำสั่ง ssh-copy-id ในกรณีนี้ฉันจะคัดลอกโดยใช้คำสั่ง ssh-copy-id root @ IP_of_host
$ ssh-copy-id root@192.168.56.104
หมายเหตุ - ตรวจสอบให้แน่ใจว่าคุณสามารถ ssh เข้าสู่โฮสต์ของคุณได้ก่อนที่จะดำเนินการคำสั่งนี้
ขั้นตอนที่ 4: กำหนดค่าโฮสต์ Ansible ไปที่ไฟล์ / etc / ansible / hosts และเพิ่มชื่อโฮสต์ สิ่งนี้จะแตกต่างกันไปตามจำนวนโฮสต์และเซิร์ฟเวอร์ที่คุณมี คุณยังสามารถมีได้มากกว่าเซิร์ฟเวอร์เดียวที่นี่.
รูปที่ 3 - เพิ่มโฮสต์ระยะไกลในไฟล์สินค้าคงคลัง - การจัดสรรที่ตอบได้
ขั้นตอนที่ 5: ตรวจสอบว่าโฮสต์ของคุณพร้อมหรือไม่ ดำเนินการคำสั่งนี้คุณควรได้รับผลลัพธ์ที่คล้ายกัน
$ ansible -m ping ทั้งหมด
รูปที่ 4 - ตรวจสอบสถานะโฮสต์ระยะไกล - การจัดสรรที่ตอบได้
อนุกรม fibonacci ใน c ++
ขั้นตอนที่ 6: ตอนนี้ Ansible ของเราพร้อมแล้วมาทำให้สภาพแวดล้อมพร้อมที่จะทำให้เว็บไซต์ใช้งานได้ เราจะใช้ Ansible playbook เดียวในการติดตั้ง Apache, MySql และ PHP มาดูกันเลย
หมายเหตุ: หากคุณเป็นมือใหม่ลองดูที่ นี้ บล็อกที่อธิบายวิธีการเขียนเพลย์บุ๊ก
--- # Setup LAMP Stack - โฮสต์: host1 งาน: - ชื่อ: เพิ่มที่เก็บ ppa กลายเป็น: ใช่ apt_repository: repo = ppa: ondrej / php - ชื่อ: ติดตั้งโคมไฟสแต็กกลายเป็น: ใช่ apt: pkg: - apache2 - mysql-server - php7.0 - สถานะ php7.0-mysql: แคชการอัปเดตปัจจุบัน: ใช่ - ชื่อ: เริ่มเซิร์ฟเวอร์ apache กลายเป็น: ใช่บริการ: ชื่อ: สถานะ apache2: เปิดใช้งาน: ใช่ - ชื่อ: เริ่มบริการ mysql กลายเป็น: ใช่บริการ: ชื่อ: สถานะ mysql: เปิดใช้งาน: ใช่ - ชื่อ: สร้างไฟล์ไดเร็กทอรีเป้าหมาย: path = / var / www / html state = โหมดไดเร็กทอรี = 0755 - ชื่อ: ปรับใช้ index.html กลายเป็น: ใช่สำเนา: src: / etc / ansible / index / index.html dest: var / www / html / index / index.html
อย่างที่คุณเห็นเรามี 6 งานแต่ละงานทำหน้าที่เฉพาะ
- งานแรกเพิ่มที่เก็บที่จำเป็นในการติดตั้ง MySQL และ PHP
- งานที่สองติดตั้ง apache2, MySQL-server, PHP และ PHP-MySQL
- งานที่สามและสี่เริ่มบริการ Apache และ MySQL
- งานที่ห้าสร้างไดเร็กทอรีเป้าหมายในเครื่องโฮสต์และ
- ในที่สุดงานที่หกเรียกใช้ไฟล์ index.html โดยจะดึงไฟล์จากเครื่องเซิร์ฟเวอร์และคัดลอกลงในเครื่องโฮสต์
เรียกใช้ Playbook นี้ด้วยคำสั่งต่อไปนี้:
$ ansible-playbook lamp.yml -K
เส้น กลายเป็น: ใช่ ใน playbook บอกว่าต้องรันในฐานะรูทและด้วยเหตุนี้เมื่อคุณรันคำสั่งระบบจะแจ้งให้ใส่รหัสผ่าน sudo
รูปที่ 5 - ดำเนินการ Ansible Playbook - การจัดสรรที่ตอบได้
ตอนนี้คุณสามารถเข้าไปในเครื่องโฮสต์และตรวจสอบว่าเว็บไซต์นั้นได้รับการโฮสต์หรือไม่
รูปที่ 6 - โฮสต์เว็บไซต์บน Localhost - การจัดสรรที่ตอบได้
ตอนนี้เป็นหน้าเว็บที่จะนำไปใช้ในโฮสต์ทั้งหมดที่โต้ตอบกับเซิร์ฟเวอร์ (ในกรณีของเราเรามีโฮสต์เพียงโฮสต์เดียว) แต่จะเป็นไปได้เช่นเดียวกันสำหรับโฮสต์ระยะไกล 100 โฮสต์
เรามาถึงจุดสิ้นสุดของบล็อก Ansible Provisioning หากคุณพบว่าบทความนี้มีประโยชน์โปรดดูไฟล์ ' นำเสนอโดย Edureka ครอบคลุมเครื่องมือทั้งหมดที่ทำให้อุตสาหกรรมไอทีฉลาดขึ้น
มีคำถามสำหรับเรา? กรุณาโพสต์บน และเราจะติดต่อกลับ