Ansible Provisioning: วิธีการจัดเตรียมที่ชาญฉลาดและง่ายดายยิ่งขึ้น



บล็อก Ansible Provisioning นี้ชี้ให้เห็นถึงคุณลักษณะ Ansible ที่มีประโยชน์ที่สุดประการหนึ่ง สาธิตวิธีการตั้งค่า LAMP stack และโฮสต์ wensite บน Ubuntu

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

การปรับใช้ขนาดใหญ่ส่วนใหญ่ต้องการให้คุณมีการตั้งค่าสภาพแวดล้อมที่เหมือนกันในหลายระบบแล้วคุณจะทำอย่างไร? ดำเนินการชุดคำสั่งเดียวกันในระบบร้อยระบบด้วยตนเอง ?? Nahh .. โรงเรียนเก่าเกินไป นี่คือสิ่งที่เครื่องจักรทำได้ดีไม่ใช่มนุษย์ จะเกิดอะไรขึ้นถ้าฉันบอกคุณว่ากระบวนการที่ยาวนานและน่าเบื่อนี้สามารถทำได้โดยใช้ Ansible playbook เพียงเล่มเดียว?นั่นคือสิ่งที่เราจะพูดถึงในบล็อกนี้ - Ansible Provisioning





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

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



Ansible คืออะไร?

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

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

Ansible Automate ทำอะไรได้บ้าง?

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



  1. การจัดเตรียม: การสร้างสภาพแวดล้อมที่เหมาะสมเพื่อให้แอปพลิเคชัน / ซอฟต์แวร์ใช้งานได้เป็นสิ่งที่จำเป็น Ansible เป็นวิธีการทำให้สภาพแวดล้อมที่สร้างขึ้นโดยอัตโนมัติสำหรับการมีอยู่ของแอปพลิเคชัน
  2. การจัดการการตั้งค่า: ดำเนินงานการกำหนดค่าที่หลากหลายเช่นบริการเริ่ม / หยุดเปลี่ยนการกำหนดค่าระบบอุปกรณ์หรือแอปพลิเคชันเป็นต้น
  3. การปรับใช้แอปพลิเคชัน: กำหนดการปรับใช้โดยอัตโนมัติด้วย Ansible และจัดการการปรับใช้โดยใช้ หอคอย Ansible . สิ่งนี้ทำให้วงจรแอปพลิเคชันทั้งหมดตั้งแต่การผลิตจนถึงการปรับใช้งานมีประสิทธิภาพและสามารถจัดการได้
  4. การจัดส่งต่อเนื่อง: การสร้างและจัดการไปป์ไลน์การรวมแบบต่อเนื่อง / การจัดส่งแบบต่อเนื่องอาจเป็นเรื่องยุ่งยาก นี่คือจุดที่ Ansible ก้าวเข้ามาและทำให้ชีวิตของนักพัฒนาซอฟต์แวร์ง่ายขึ้น
  5. ความปลอดภัยและการปฏิบัติตามข้อกำหนด: การทำงานกับโครงการกำหนดขอบเขตและรวมเข้ากับนโยบายความปลอดภัยของ บริษัท เสมอ การมีนโยบายความปลอดภัยรวมเข้ากับการปรับใช้โดยอัตโนมัติสามารถทำให้การปฏิบัติตามนโยบายง่ายขึ้น
  6. การจัดระเบียบ: โครงการทั้งหมดคือชุดของอินสแตนซ์ต่างๆมากมายที่มีการกำหนดค่าที่แตกต่างกัน 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 ของโฮสต์

โฮสต์อื่น ๆ - การจัดเตรียม Ansible - Edurekaรูปที่ 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 ครอบคลุมเครื่องมือทั้งหมดที่ทำให้อุตสาหกรรมไอทีฉลาดขึ้น

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