Server Provisioning
Bài đăng này đã không được cập nhật trong 3 năm
Server Provisioning là gì
Server provisioning là một chuỗi các hành động nhằm chuẩn bị một server với một hệ thống thích hợp, dữ liệu và các phần mềm để nó có thể sẵn sàng cho các network operation.
Các công việc cơ bản trong server provisioning:
- Chọn một server trong một list các server khả dụng.
- Nạp các phần mềm thích hợp có thể bao gồm hệ điều hành, driver phần cứng, phần mềm trung gian và các ứng dụng.
- Tùy chỉnh và cài đặt hệ thống cũng như phần mềm một cách thích hợp để tạo ra một boot image của server rồi sau đó thay đổi các thông số ví như địa chỉ IP, IP Gateway để tạo thành sự liên kết giữa mạng và nơi lưu trữ các tài nguyên với mục đích cuối cùng là kiểm tra hoạt động của hệ thống.
Với sự kiểm tra hệ thống này, bạn sẽ đảm bảo tuân theo một tiêu chuẩn quốc tế về bảo mật thông tin (OVAL) với một số lượng điểm yếu được giới hạn, đảm bảo sự hài lòng và có khả năng nâng cấp với các bản vá.
Sau cùng, khởi động lại hệ thống và tải lên phần mềm mới, hệ thống đã sẵn sàng cho quá trình hoạt động. Tiêu biểu, một nhà cung cấp dịch vụ mạng (ISP) hay một trung tâm điều khiển mạng sẽ thực hiện các tác vụ trên để đưa ra một tập hợp các tham số đầu vào tốt nhất thay cho việc phải thiết lập thủ công.
Có rất nhiều các sản phẩm phần mềm hiện có phục vụ cho việc dự liệu và cung cấp ra một server với các dịch vụ hoàn chỉnh cùng các thiết bị đầu cuối tới người dùng. Ví dụ như: BMC Bladelogic Server Automation, HP Server Automation, IBM Tivoli Provisioning Manager, Redhat Kickstart, xCAT, HP Insight CMU, vv. Phần mềm trung gian và các ứng dụng có thể được cài đặt đồng thời với hệ điều hành hoặc về sau bằng cách sử dụng một công cụ tự động quản lý các dịch vụ ứng dụng.
Trong điện toán đám mây, các server có thể được thiết lập thông qua một giao diện web hay một phần mềm chuyên biệt. Tận dụng được lợi thế của điện toán đám mây, công việc này có thể được hoàn thành một cách dễ dàng và nhanh chóng. Các phần mềm theo dõi sẽ kích hoạt tự động dự liệu khi một tài nguyên hiện có bị quá tải, các thông số sẽ được thay đổi một cách phù hợp để hệ thống có thể tiếp tục hoạt động trơn tru.
Tóm lại, server provisioning thiết đặt các server dựa trên các yêu cầu tài nguyên, sử dụng phần cứng hay thành phần của phần mềm (ví dụ bộ xử lý đơn/đa, RAM, HDD, bộ điều khiển RAID, số card mạng LAN, các ứng dụng, OS) như thế nào cho hợp lý dựa trên chức năng của server, một server xử lý đồ họa chắc chắn sẽ ngốn tài nguyên hơn rất nhiều so với một server xử lý giọng nói.
Giới thiệu về Ansible
Ansible là một engine đơn giản và hoàn chỉnh được viết bằng Python nhằm tự động hóa việc cloud provisioning. Nó hoạt động thông qua các kết nối SSH mà không yêu cầu cài bất cứ agent nào trên máy chủ.
Các đặc tả cấu hình được mô tả trong các file YAML được gọi là playbooks, cung cấp các task và các xử lý sự kiện. Một task ví dụ sẽ được cập nhật vào các file cấu hình hoặc cơ sở dữ liệu của server còn một bộ xử lý sự kiện sẽ tái khởi động cơ sở dữ liệu một khi task được hoàn thành.
Một số ứng dụng cơ bản của Ansible
-
Ansible thường được sử dụng trong kiến trúc push-based
Control host là máy chủ đại diện mà từ đó vòng chạy Ansible được khởi tạo. Ansible tận dụng lợi thế của một host inventory file - nơi bao gồm một danh sạch các địa chỉ các máy chủ được sắp xếp theo nhóm. Trong ví dụ trên, ta có thể thấy tồn tại 2 nhóm là DB server và Web server, do đó inventory file sẽ lên danh sách các địa chỉ IP và tên host theo 2 nhóm trên.
Mỗi playbook sẽ nhắm tới một hoặc nhiều nhóm từ inventory. Như mô tả trong ví dụ trên, ta có một playbook dành cho việc thiết đặt database server và một dành cho web server, sự định nghĩa của các playbook có thể được đưa ra rồi từ đó một số thành phần chung có thể được sử dụng để định nghĩa một playbook thứ ba, phục vụ như một phần chung cho cả database và web server.
-
Ansible cũng có thể sử dụng trong mô hình pull-based
Kết cấu push-based không phải luôn luôn có thể xây dựng được, có nhiều khó khăn hiện hữu phải kể đến như các hạn chế về mạng cản trở các kết nối SSH cũng như các vấn đề về mở rộng hay tự động hóa.
Trong những tình huống như vậy , Ansible vẫn giữ lại cho chúng ta một giải pháp, đó là sử dụng ansibile-pull.
- Mỗi host đều đã được cài đặt Ansible.
- Các file cấu hình được lưu trữ trên một GIT repo.
- ansible-pull checkout repo này ra một nhánh cho trước hoặc tag.
- ansible-pull thực thi một playbook cụ thể
- Sử dụng cronjob để tự động hóa quy trình rồi push tất cả những thay đổi cấu hình lên repo
Kết luận
Tự động hóa quá trình cấu hình máy chủ trở nên khá dễ dàng với Ansible, tưởng tượng rằng cấu hình cả một hay chuỗi các máy chủ với quy trình có khả năng lặp lại tiết kiệm chi phí đến nhường nào.
Automatic configuration of machines is quite easy with Ansible. Knowing that you can configure a whole set of machines or just a single one with a reproducible process is priceless.
Mặt khác, Ansible cũng rất dễ để tiếp cận, nó vừa có thể hoạt động tốt với mô hình cơ bản push-based hay đồng thời với pull-based mà chỉ cần một chút tinh chỉnh. Dù rằng chúng ta mới chỉ cưỡi ngựa xem hoa những gì có thể làm với Ansible, thì sự đơn giản và dễ sử dụng của các công cụ mà nó đem lại vẫn sẽ trở nên thuyết phục và hữu ích khi muốn provisioning một hay nhiều server.
References
https://en.wikipedia.org/wiki/Provisioning_(disambiguation)
http://www.ansible.com/how-ansible-works
https://en.wikipedia.org/wiki/Push–pull_strategy
https://julien.ponge.org/blog/scalable-and-understandable-provisioning-with-ansible-and-vagrant/
All rights reserved