-
Notifications
You must be signed in to change notification settings - Fork 6
/
framework.tex
91 lines (78 loc) · 6.7 KB
/
framework.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
\chapter{Các công cụ tự động hóa hệ thống}
\newpage
\clearpage
Sự gia tăng của ảo hóa cùng với sức mạnh ngày càng tăng của các máy chủ chuẩn công nghiệp và sự sẵn có của điện toán đám mây đã dẫn đến một sự gia tăng đáng kể số lượng các máy chủ cần phải được quản lý trong và ngoài các doanh nghiệp, tổ chức. Trước kia, chúng ta có thể làm việc với hàng loạt các máy chủ vật lý hay truy cập trực tiếp vào các trung tâm dữ liệu nhưng giờ đây, chúng ta phải quản lý nhiều hơn rất nhiều các máy chủ và chúng lại còn được đặt ở rất nhiều các trung tập dữ liệu trên toàn thế giới.
Những trung tâm dữ liệu - đó chính là nơi các công cụ tổ chức và quản lý cấu hình vào cuộc. Trong nhiều trường hợp, chúng ta quản lý nhiều nhóm máy chủ giống hệt nhau, chạy các ứng dụng và dịch vụ giống hệt nhau. Chúng được triển khai trên các nền tảng ảo hóa trong các doanh nghiệp, tổ chức, hay ở trên hệ thống điện toán đám mây hoặc một máy chủ nào đó tại một trung tâm dữ liệu ở xa. Điều đó dẫn đến cần có một công cụ tự động hóa để có thể quản lý các cơ sở hạ tầng lớn và đang phát triển không ngừng này.
Puppet, Chef hay Ansible đã được xây dựng với suy nghĩ: đó là làm sao để có thể cấu hình và duy trì hàng chục, hàng trăm, thậm chí hàng ngàn máy chủ một cách dễ dàng và thuận tiện. Nói như vậy không có nghĩa rằng các doanh nghiệp - tổ chức nhỏ hơn sẽ không được hưởng lợi từ những công cụ này. Nói chung, các công cụ tự động hóa và sắp xếp công việc đều làm cho công việc dễ dàng hơn cho dù cơ sở hạ tầng lớn hay nhỏ.
Trong chương này chúng ta sẽ tìm hiểu thiết kế và chức năng của các công cụ tự động hóa hệ thống. Từ đó, đưa ra quyết định sử dụng công cụ cho phù hợp nhằm giải quyết bài toán trong thực tế mà chúng ta gặp phải.
\newpage
\clearpage
\input{puppet}
\newpage
\clearpage
\input{chef}
\newpage
\clearpage
\input{ansible}
\newpage
\clearpage
\section{Tổng kết chương}
Với những đặc điểm và kiến trúc đã được nêu trong các mục ở trên, dễ dàng nhận thấy, Puppet hay Chef sẽ hấp dẫn các nhà phát triển hay những hệ thống phát triển có định hướng, Ansible được dùng nhiều hơn cho các nhu cầu của quản trị hệ thống. Giao diện đơn giản và tính hữu dụng của Ansible rất phù hợp những suy nghĩ của người quản trị hệ thống. Và trong một hệ thống với rất nhiều các hệ điều hành họ Linux và Unix, việc triển khai hệ thống sử dụng Ansible trở trên rất dễ dàng và nhanh chóng.
Puppet là framework trưởng thành nhất và cũng gần gũi nhất từ quan điểm khả năng sử dụng, mặc dù Puppet yêu cầu phải có nền tảng kiến thức vững chắc về ngôn ngữ lập trình Ruby. Puppet không ở dạng streamlined như Ansible. Puppet là phương án an toàn nhất đối với các môi trường không đồng nhất, tuy vậy Ansible cũng có thể tốt và phù hợp hơn trong một hệ thống có cơ sở hạ tầng lớn hơn hoặc phức tạp hơn.
Chef khá ổn định và được thiết kế tốt nhưng những tính năng của nó vẫn chưa đạt đến độ chín như của Puppet. Chef có thể gây ra một số khó khăn trong việc sử dụng nó đối với các quản trị hệ thống có ít kinh nghiệm về lập trình, tuy vậy nó cũng có thể phù hợp một cách tự nhiên cho những quản trị hệ thống có đầu óc lập trình.
\newpage
\clearpage
\pagestyle{empty}
\begin{landscape}
\begin{longtable}{|l|*3{p{6.5cm}|}}
\caption {Bảng so sánh ưu nhược điểm của các công cụ tự động hóa} \\
\hline \multicolumn{1}{|l|}{~} & \multicolumn{1}{|l|}{\textbf{Puppet}} & \multicolumn{1}{|l|}{\textbf{Chef}} & \multicolumn{1}{|l|}{\textbf{Ansible}} \\ \hline
\endfirsthead
\textbf{Ưu điểm}
& • Các module được viết bằng ngôn ngữ Ruby
& • Cookbooks và recipes có thể tận dụng toàn bộ sức mạnh của ngôn ngữ Ruby
& • Các module có thể viết bằng gần như tất cả các ngôn ngữ
\\ \hline
~
& • Push commands cho phép bạn kích hoạt thay đổi ngay lập tức
& • Tập trung JSON dựa trên "túi dữ liệu" cho phép các kịch bản thu thập các biên trong thời gian chạy
& • Không cần agent để có thể quản lý các client
\\
~
& • Giao diện web cho phép xử lý báo cáo, kiểm kê và quản lý nút theo thời gian thực
& • Giao diện web cho phép bạn tìm kiếm các nút và inventory, xem hành động của nút, và gán Cookbooks, roles, nodes
& • Giao diện web cho phép bạn cấu hình người dùng, các nhóm, và các thông tin cần thu thập, và áp dụng Playbooks tới các Inventory
\\
~
& • Chi tiết và báo cáo chuyên sâu về tình trạng của agnet và cấu hình của nút đó
& ~
& • Cực kì đơn giản để cài đặt và sử dụng
\\ \hline
\textbf{Nhược điểm}
& • Yêu cầu phải học Puppet DSL hoặc Ruby
& • Yêu cầu phải có sự hiểu biết nhất định về lập trình Ruby
& • Không hỗ trợ các máy chủ Windows
\\
~
& • Quá trình cài đặt thiếu việc kiểm tra lỗi và báo cáo lỗi
& • Hiện tại vẫn thiếu chức năng push command
& • Giao diện người dùng web không tự động triển khai cùng Ansible; Các inventory phải nhập vào thủ công
\\
~
& ~
& • Tài liệu đôi khi còn mơ hồ
& ~
\\ \hline
\textbf{Chi phí}
& • Phiên bản miễn phí mã nguồn mở
& • Phiên bản miễn phí mã nguồn mở
& • Phiên bản miễn phí mã nguồn mở
\\
~
& • Phiên bản dành cho doanh nghiệp Puppet Enterprise có giá 100\$/năm cho mỗi máy
& • Phiên bản dành cho doanh nghiệp Enterprise Chef: miễn phí cho 5 máy, 120\$/tháng cho 20 máy, 300\$/tháng cho 50 máy và 600\$/tháng cho 100 máy
& • Phiên bản dành cho doanh nghiệp AWX miễn phí cho 10 máy, 100\$ hoặ 250\$ một máy một năm tùy theo dịch vụ hỗ trợ
\\ \hline
\end{longtable}
\end{landscape}
\pagestyle{fancy}