Tim hiểu chef linux
##Giới thiệu Trong các giai đoạn phát triển các ứng dụng, dịch vụ dùng server thì việc xây dựng deployment là không thể thiếu được. Giai đoạn này đòi hỏi người thiết định phải có kinh nghiệm, kiến thức về server, cấu hình hệ thống, performance. Đặc biệt là đối với các hệ thống có số node (server) từ 2 hoặc nhiều hơn thì việc thống nhất giữa 2 server là rất quan trọng. Người thực hiện bắt buộc phải ghi nhớ các
libraries, tools của từng loại server (DB server thế nào, Cache server, Web server như thế nào). Ngoài ra các thiết lập, cấu hình đã dùng trong quá trình development và production cũng phải đảm bảo tính thống nhất. Do đó quá trình deployment thường gặp phải các khó khăn ##Infrastructure as Code Một trong các cách giải quyết các khó khăn trong vấn đề deploy các ứng dụng là quản lý cấu trúc hệ thống bằng code. Các thông tin package, library, config của cấu hình hệ thống sẽ cấu hình bằng cú pháp của ngôn ngữ lập trình và được sử dụng như các chương trình lập trình. Như thế, việc xây dựng cấu hình hệ thống sẽ trở nên giống như lập trình một chương trình vậy. Framework sẽ tự động cấu hình server các server dựa trên các code này. Việc quản lí cấu trúc hệ thống bằng code có những ích lợi sau
##Chef Chef được xây dựng để xử lí những thách thức lớn nhất trong việc quản lí cấu hình hệ thống. Bằng cách mô hình hoá và quản lí cấu trúc hệ thống bằng code, Chef mang lại sức mạnh và tính cơ động cao trong việc quản lí hệ thống. Chef là 1 framework tự động tạo và cấu hình hệ thống (provision). Chef là phần mềm mã nguồn mở (OSS: Open Source Software) được phát triển bởi Opscode bằng ngôn ngữ Ruby. http://www.opscode.com/chef/ ###Các khái niệm cơ bản Các khái niệm trong chef dựa theo motip là một người đầu bếp (Chef) dùng các thực đơn (Recipe) để chế biến các món ăn (server) Các phần quan trọng nhất gồm có:
###ChefServer vs ChefSolo
###Mô hình hoạt động của chef Chef hoạt động dựa trên các định nghĩa có thể tái sử dụng được biết đến như là các recipe (thực đơn) để tự động cấu hình hệ thống. Những chỉ lệnh trong recipe dùng để cấu hình server, database, cân bằng tải. Các recipe mô tả các thành phần của hệ thống cần được triển khai, bảo trì. Recipe sử dụng những khối resource. Resource mô tả 1 phần của hệ thống ví dụ như file, package. Chúng ta có thể sử dụng các resource có sẵn trong Chef hoặc tự viết resource. Chef server lưu lại các recipe cũng như các dữ liệu cấu hình hệ thống. Mỗi node trong mạng sẽ cài được cài đặt Chef client. 1 node có thể là 1 máy chủ vật lí hoặc 1 máy chủ ảo. Chef client định kì kiểm tra các recipe mới nhất trên Chef server và kiểm tra xem node có phù hợp với các recipe đó không. Nếu node đã outdate thì Chef client sẽ chạy các bản cập nhật cho node đó |