|
||||||||
|
||||||||
|
|
Công Cụ | Xếp Bài |
28-08-2015, 03:42 PM | #1 |
Guest
Trả Lời: n/a
|
Giới thiệu và tìm hiểu về Puppet
Giới thiệu và tìm hiểu về Puppet
Puppet được phát triển bởi Luke Kanies và giờ được phát triển bởi công ty của anh ấy, Puppet Labs. Kanies đã làm việc với Unix và vai trò quản trị hệ thống từ năm 1997 và phát triển Puppet dựa trên kinh nghiệm đó. Puppet có 2 phiên bản: phiên bản mã nguồn mở (open source) và phiên bản doanh nghiệp (Enterprise). Phiên bản Enterprise bao gồm 1 bộ cài đặt tự động, 1 giao diện quản lý web, và thông tin liên lạc hỗ trợ. Puppet có thể được dùng để quản lý cấu hình trên các nền tảng Unix (bao gồm cả Mac OS X), Linux và Microsoft Windows. Mô hình hoạt động của Puppet gồm 3 thành phần:
1. Deployment Layer Puppet thường được triển khai theo mô hình client-server. Trong đó Puppet server được gọi là Puppet Master, còn Puppet client được gọi là Agent, và mỗi host được định nghĩa như là 1node. Puppet agent kết nối đến Puppet master qua 1 kết nối được mã hoá và chứng thực sử dụng SSL, để lấy về hoặc “đẩy lên” những cấu hình cần được kiểm tra và áp dụng trên agent. Nếu Puppet agent không được cấu hình hoặc đã có cấu hình được yêu cầu, Puppet sẽ không thực hiện gì. Puppet sẽ chỉ thay đổi môi trường của bạn nếu cần thiết. Thuộc tính này được gọi làidempotency và là tính năng then chốt của Puppet. Toàn bộ tiến trình trên được gọi làconfiguration run. Mặc định, Puppet agent sẽ kiểm tra các cấu hình mới hoặc được thay đổi trên Puppet Mastermỗi 30 phút 1 lần. Bên cạnh mô hình triển khai theo client-server, chúng ta có thể triển khai Puppet theo mô hình stand-alone, khi đó không cần đến sự có mặt của Puppet master. Các cấu hình được cài đặt cục bộ trên host và các tập tin nhị phân của puppet sẽ chạy để thực thi và áp dụng các cấu hình này. 2. Configuration Language and Resource Abstraction Layer Puppet sử dụng 1 ngôn ngữ đặt tả, gọi là ngôn ngữ Puppet, để định nghĩa các cấu hình, mà Puppet gọi là resource. Đây là 1 sự khác nhau quan trọng giữa Puppet và nhiều công cụ cấu hình khác. Sự khác biệt nằm ở chỗ là ngôn ngữ đặc tả mô tả về trạng thái của cấu hình – vd: nó mô tả là 1 gói phần mềm sẽ được cài đặt hoặc 1 dịch vụ sẽ được chạy. Phần lớn các công cụ cấu hình, như Shell script hoặc Perl, quan tâm đến qui trình triển khai cấu hình, mà ít quan tâm đến trạng thái của cấu hình trên máy tính. 2.1. Configuration Language Chuyện gì sẽ xảy ra nếu không có Configuration Language? Giả sử chúng ta cần cài đặt ứng dụng Vim trên 3 máy tính (host) chạy 3 hệ điều hành khác nhau là Microsoft Windows, Red Hat Enterprise Linux và Ubuntu, thì chúng ta cần phải viết kịch bản (script) cài đặt cho từng hệ điều hành, trong trường hợp này là 3 kịch bản, thực hiện các việc sau:
Chúng ta thực hiện công việc trên bằng việc định nghĩa 1 tài nguyên cấu hình (configuration resource) cho gói phần mềm vim như bên dưới: package { ‘vim’: ensure => present, } Cú pháp để định nghĩa 1 resource trong Puppet là: type { title: attribute => value, } Trong đó:
Resource trên sau đó sẽ được triển khai xuống các Puppet agent, chúng ta không cần quan tâm đến sự khác nhau giữa các nền tảng cũng như các kết quả trả về khác nhau, Puppet sẽ giúp chúng ta thực hiện việc này. 2.2. Resource Abstraction Layer Mỗi loại resource được định nghĩa trong Puppet có nhiều nhà cung cấp (provider) tương ứng với nó. Ví dụ với loại resource là package, tuỳ theo từng nền tảng và hệ điều hành, mà có hơn 20 provider bao hàm nhiều loại công cụ khác nhau, bao gồm yum, aptitude, pkgadd,ports, và emerge. Khi 1 agent kết nối, Puppet sử dụng 1 công cụ gọi là Facter để trả về thông tin về agent đó, bao gồm cả thông tin về hệ điều hành mà agent đó đang chạy. Puppet sau đó chọn nhà cung cấp gói phần mềm tương ứng cho hệ điều hành đó và sử dụng nhà cung cấp đó để kiểm tra gói vim đã được cài đặt chưa.Vd: trên Red Hat, nó sẽ thực thi yum, trên Ubuntu là aptitude, và trên Solaris thì lệnh pkgadd được sử dụng. Nếu gói phần mềm chưa được cài, Puppet sẽ cài nó. Nếu gói phần mềm cài rồi, Puppet không làm gì cả. Puppet sau đó sẽ báo cáo kết quả thành công hoặc thất bại cho Puppet master. 3. The Transactional Layer Tầng giao dịch là đông cơ của Puppet, thực hiện việc hoàn thành tiến trình cấu hình từng máy tính trong hệ thống, bao gồm những bước sau:
Sau đó Puppet lấy resource và biên dịch chúng vào 1 catalog cho từng agent. Catalog này được gửi đến máy tính và được áp dụng bởi Puppet agent. Kết quả của việc áp dụng này sau đó được gửi về Puppet master. Tầng giao dịch cho phép các cấu hình được tạo và được áp dụng lặp lại trên 1 máy tính. Puppet không phải là giao dịch đầy đủ, các giao dịch của chúng ta không được ghi nhận lại, và do đó chúng ta không thể quay ngược lại các giao dịch (roll back) như chúng ta có thể làm với các hệ cơ sở dữ liệu. Theo: GocIT |
|
|