Bằng cách sử dụng Ansible, chúng ta sẽ thực hiện việc tự động hóa hàng loạt nhanh hơn, do đó sẽ giúp giảm thiểu thời gian thao tác trên từng server được cài đặt, và thậm chí nó có thể đạ
Trang 1ĐẠI HỌC DUY TÂN TRƯỜNG KHOA HỌC MÁY TÍNH KHOA KỸ THUẬT MẠNG MÁY TÍNH & TRUYỀN THÔNG
BỘ MÔN KỸ THUẬT MẠNG
KHÓA LUẬN TỐT NGHIỆP
Tên đề tài:
TÌM HIỂU VÀ TRIỂN KHAI
HỆ THỐNG QUẢN LÝ CẤU HÌNH SỬ DỤNG ANSIBLE
Trang 2LỜI CẢM ƠN
Đầu tiên, tôi xin gửi lời cảm ơn chân thành đến thầy Trương Tiến Vũ đãnhiệt tình giúp đỡ tôi trong quá trình lựa chọn cũng như trong quá trình phát triểnKhóa luận Em cũng xin chân thành cảm ơn Ban giám hiệu nhà trường, các thầy côtrong khoa Công nghệ thông tin và các phòng ban nhà trường đã tạo điều kiện tốtnhất cho tôi trong suốt quá trình học tập và làm Khóa luận
Để có thể thực hiện và hoàn thành đồ án này, những kiến thức đã được học
là vô cùng cần thiết, vì vậy tôi xin gửi lời cảm ơn tới tất cả các thầy cô giáo đãtruyền đạt cho tôi những bài học quý báu trong thời gian vừa qua
Cuối cùng, tôi xin gửi lời cảm ơn tới gia đình tôi, nguồn động viên to lớn đãgiúp tôi cố gắng trong học tập và cuộc sống
Đà Nẵng, ngày 23 tháng 5 năm 2022
Sinh viên
Phan Văn Phụng
[1]
Trang 3LỜI CAM ĐOAN
Tôi xin cam đoan:
a Những nội dung trong khóa luận này là do tôi thực hiện dưới sự hướngdẫn trực tiếp của thầy Trương Tiến Vũ
b Mọi tham khảo dùng trong khóa luận đều được trích dẫn rõ ràng và trungthực tên tác giả, tên công trình, thời gian, địa điểm công bố
c Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, tôi xinchịu hoàn toàn trách nhiệm
[2]
Trang 4Mục Lục
LỜI CẢM ƠN
LỜI CAM ĐOAN
DANH MỤC HÌNH ẢNH
DANH MỤC BẢNG BIỂU
DANH MỤC TỪ VIẾT TẮT
LỜI MỞ ĐẦU
CHƯƠNG 1 TỔNG QUAN VỀ QUẢN TRỊ MẠNG
1.1 Tổng quan về quản trị mạng
1.1.1 Giới thiệu về quản trị mạng
1.1.2 Kiến trúc Manager/Agent trong quản trị mạng
1.1.3 Các kiểu mô hình quản lý mạng
1.1.4 Nhiệm vụ của quản trị mạng
1.2 Tổng quan về quản lý cấu hình
1.2.1 Giới thiệu về quản lý cấu hình
1.2.2 Lợi ích của quản lý cấu hình
1.2.3 Các tiêu chí đánh giá một hệ thống quản lý cấu hình
1.2.4 Các thủ tục triển khai quản lý cấu hình
1.3 Tự động hoá mạng
1.3.1 Khái niệm
1.3.2 Lợi ích của tự động hóa mạng
1.3.3 Một số chức năng của tự động hoá mạng
1.4 Một số công cụ quản lý cấu hình phổ biến
1.4.1 Ansible
1.4.2 Puppet
1.4.3 Chef
CHƯƠNG 2 NGHIÊN CỨU VỀ CÔNG CỤ QUẢN LÝ CẤU HÌNH ANSIBLE
2.1 Tìm hiểu về Ansible và các thành phần cơ bản: SSH, YAML
2.1.1 Sơ lược về SSH
2.1.2 Sơ lược về YAML
2.2 Lệnh Ansible Ad-hoc
[3]
Trang 52.2.1 Khái niệm lệnh Ansible Ad-hoc
2.2.3 Cú pháp lệnh ansible ad-hoc
2.2.4 Một số lệnh Ansible Ad-hoc thường sử dụng
2.3 Ansible playbook
2.3.1 Khái niệm về Ansible playbook
2.3.2 Cách thức hoạt động của Ansible playbook
2.3.3 Cách tạo Ansible playbook
2.4 Ansible inventory
2.4.1 Static Inventory
2.4.2 Dynamic Inventory
CHƯƠNG 3 TRIỂN KHAI HỆ THỐNG QUẢN LÝ CẤU HÌNH SỬ DỤNG ANSIBLE
3.1 Mô hình triển khai hệ thống quản lý cấu hình sử dụng Ansible
3.2 Các cài đặt và cấu hình cơ bản
3.2.1 Cài đặt ansible trên node Ansible_server-1
3.2.2 Cấu hình SSH Key
3.2.3 Khai báo file Inventory
3.3 Thực hiện cấu hình tự động cho các thiết bị Router, Switch
3.3.1 Kiểm tra kết nối từ máy chủ Ansible đến các thiết bị
3.3.2 Tạo và thực thi các Playbook cấu hình cho Router, Switch
3.4 Thực hiện các cài đặt tự động trên Client1
3.4.1 Kiểm tra kết nối từ máy chủ Ansible đến Client1
3.4.2 Sử dụng các lệnh Ad-hoc cơ bản
3.4.3 Tạo và thực thi các Playbook cài đặt cho Client1
KẾT LUẬN
TÀI LIỆU THAM KHẢO
[4]
Trang 6DANH MỤC HÌNH ẢNH
Hình 1.1 Mô hình Manager/Agent của hệ thống quản trị mạng 12
Hình 1.2 Các thủ tục triển khai Configuration Management 17
Hình 2.1 Cách thức hoạt động của Ansible 31
Hình 3.1 Mô hình triển khai hệ thống quản lý cấu hình sử dụng Ansible 46
Hình 3.2 Kết quả của lệnh kiểm tra phiên bản Ansible 47
Hình 3.3 Kết quả của quá trình tạo khóa SSH 49
Hình 3.4 Kết quả của lệnh sao chép khoá SSH sang node Client1 49
Hình 3.5 Khai báo Inventory 50
Hình 3.6 Kết quả thực hiện Ping đến các thiết bị Cisco 51
Hình 3.7 Liệt kê các file yml đã tạo 55
Hình 3.8 Kết quả sau khi thực thi Playbook SW2_3.yml 55
Hình 3.9 Kết quả lệnh ping đến Client1 đã thành công 55
Hình 3.10 Kết quả sử dụng lệnh kiểm tra dung lượng RAM trên Clien1 56
Hình 3.11 Kết quả sử dụng lệnh xem ngày giờ trên trên Client1 56
Hình 3.12 Kết quả sử dụng lệnh reboot 56
Hình 3.13 Kết quả sử dụng lệnh cài đặt Python trên PC 57
Hình 3.14 Kết quả sử dụng module command để kiểm tra phiên bản kernel Client1 57
Hình 3.15 Kết quả sau khi chạy thành công playbook 1 58
Hình 3.16 Kết quả sử dụng lệnh kiểm tra các gói đã được cài đặt 58
Hình 3.17 Nội dung file index.html 59
Hình 3.18 Kết quả tại node Client 1 sau khi chạy playbook 2 60
[5]
Trang 7DANH MỤC BẢNG BIỂU
Bảng 1.1 So sánh giữa Workgroup và Domain 14
Bảng 2.1 Cú pháp YAML 26
Bảng 2.2 So sánh cấu trúc giữa Ansible, Puppet và Chef: 29
Bảng 2.3 Chức năng các tham số inventory 42
[6]
Trang 8DANH MỤC TỪ VIẾT TẮT
Từ viết tắt Diễn giải
AWS Amazon Web Services
DNS Domain Name System
DDoS Distributed Denial of Service
FTP File Transfer Protocol
GUI Graphical User Interface
HTML HyperText Markup Language
HTTP Hypertext Transfer Protocol
IP Internet Protocol
JSON JavaScript Object Notation
LAN Local Area Network
LDAP Lightweight Directory Access Protocol
MIB Management Information Base
OS Operating System
PDU Protocol data unit
RAM Random Access Memory
SSH Secure Shell
SMI Structure of Management Information
VM Virtual Machine
WAN Wide Area Network
YAML YAML Ain’t Markup Language
[7]
Trang 9LỜI MỞ ĐẦU
1) Lý do chọn đề tài
Việc cài đặt và cấu hình các máy chủ thường được ghi chép lại trong tài liệudưới dạng các câu lệnh đã chạy, với giải thích kèm theo Cách thức này gây mệtmỏi cho quản trị viên vì phải làm theo từng bước ở mỗi máy khi thiết lập mới, và cóthể dẫn đến sai lầm, thiếu sót
Để giải quyết vấn đề trên thì cần một giải pháp để tự động hóa hàng loạt cáccông việc liên quan đến hạ tầng CNTT như tự động cấu hình, tự động triển khaiphần mềm, và nhiều công việc khác nữa
Bằng cách sử dụng Ansible, chúng ta sẽ thực hiện việc tự động hóa hàng loạtnhanh hơn, do đó sẽ giúp giảm thiểu thời gian thao tác trên từng server được càiđặt, và thậm chí nó có thể đạt tới những điều mà ta chưa từng thấy trước đó
Nhận thấy lợi ích của việc sử dụng Ansible nên tôi đã chọn đề tài “Tìm hiểu
& triển khai hệ thống quản lý cấu hình sử dụng Ansible” để làm hướng nghiêm
cứu trong báo cáo đồ án chuyên ngành
2) Mục tiêu của đề tài
Sau khi hoàn thành đề tài này sinh viên có thể nắm được những kiến thức cơbản về quản trị mạng, quản trị cấu hình Việc nghiên cứu công cụ nguồn mở cũng
sẽ giúp cho sinh viên có cái nhìn tích cực hơn về việc lựa chọn các giải pháp nguồn
mở để triển khai cho hệ thống mạng doanh nghiệp Từ đó, sinh viên có thể sử dụngcông cụ Ansible để triển khai hệ thống Configuration Management
3) Đối tượng nghiên cứu
- Nghiên cứu về cách triển khai hệ thống cấu hình sử dụng công cụ Ansible
- Nghiên cứu về công cụ Ansible
4) Phạm vi nghiên cứu
- Tìm hiểu về quản lý cấu hình và công cụ quản lý cấu hình tự động Ansible
- Tìm hiểu về cách cài đặt và sử dụng Ansible trên hệ điều hành CentOS7
- Nghiên cứu về việc sử dụng Ansible để triển khai hệ thống quản lý cấu hình
[8]
Trang 105) Ý nghĩa khoa học và thực tiễn
để cung cấp kết quả tốt hơn Việc triển khai quản lý cấu hình sử dụng ansible là mộtlựa chọn rất tốt với các doanh nghiệp
6) BỐ CỤC KHOÁ LUẬN
Bố cục khóa luận được chia thành 3 chương:
Chương 1: Tổng quan về quản trị mạng
Chương 2: Nghiên cứu về vông cụ quản lý cấu hình Ansible
Chương 3: Triển khai hệ thống quản lý cấu hình sử dụng Ansible
[9]
Trang 11CHƯƠNG 1 TỔNG QUAN VỀ QUẢN TRỊ MẠNG1.1 Tổng quan về quản trị mạng
1.1.1 Giới thiệu về quản trị mạng
Quản trị mạng được định nghĩa là các công việc quản trị mạng lưới bao gồmcung cấp các dịch vụ hỗ trợ, đảm bảo mạng lưới hoạt động hiệu quả, đảm bảo mạnglưới cung cấp đúng chỉ tiêu định ra
Chúng ta có thể khái quát công việc quản trị mạng bao gồm:
Quản trị cấu hình, tài nguyên mạng: Bao gồm các công tác quản lý, kiểm soátcấu hình, quản lý tài nguyên cấp phát cho các đối tượng sử dụng khác nhau
Quản trị người dùng, dịch vụ mạng: bao gồm các công tác quản lý người sửdụng trên hệ thống và đảm bảo dịch vụ cung cấp có độ tin cậy cao, chất lượngđảm bảo theo đúng các chỉ tiêu đã đề ra
Quản trị hiệu năng, hoạt động mạng: bao gồm các công tác quản lý, giám sáthoạt động mạng lưới, đảm bảo các hoạt động của thiết bị hệ thống ổn định
Quản trị an ninh, an toàn mạng: bao gồm các công tác quản lý, giám sát mạnglưới, các hệ thống để đảm bảo phòng tránh các truy nhập trái phép Việc phòngchống, ngăn chặn sự lây lan của các loại virus máy tính, các phương thức tấncông như DDos làm tê liệt hoạt động của mạng cũng là một phần rất quan trọngtrong công tác quản trị, an ninh, an toàn mạng
Để đảm bảo sự hoạt động liên tục của mạng, đặc biệt là những mạng lớn,người quản trị mạng cần phải nắm được đầy đủ và thường xuyên các thông tin vềcấu hình, về sự cố và tất cả các số liệu thống kê liên quan đến việc sử dụng mạng
Để hiểu rõ các chức năng, nhiệm vụ của một người quản trị mạng, trước hếtcần hiểu rõ kiến trúc của một hệ thống quản trị mạng cũng như cách nó thực thinhiệm vụ của mình
Các công việc hàng ngày và kỹ năng thị trường cần có của một quản trị viên:
Cấu hình và duy trì mạng máy tính nội bộ của công ty
Quản lý các công cụ bảo mật mạng, ví dụ như tường lửa, hệ thống diệt virus vàphát hiện xâm nhập
[10]
Trang 12 Xác định, khắc phục sự cố, giải quyết và ghi lại các vấn đề kết nối và hiệu suấtmạng.
Cài đặt và hỗ trợ điện thoại đường dây cứng và các thiết bị viễn thông nối mạngkhác
Giám sát hiệu suất mạng và tối ưu hóa mạng để có tốc độ và tính sẵn sàng tốiưu
Cài đặt, cấu hình và duy trì phần cứng mạng, ví dụ, router và chuyển mạchCisco
Triển khai, cấu hình và nâng cấp phần mềm mạng, chẳng hạn như chương trìnhchuẩn đoán hoặc diệt virus doanh nghiệp
Triển khai và duy trì các hệ thống sao lưu và khôi phục khẩn cấp cho các máychủ mạng quan trọng
Quản trị viên mạng có nhiệm vụ điều chỉnh quyền truy cập của người dùng vàocác file nhạy cảm để bảo vệ chống lại vi phạm an ninh nội bộ
Trong các công ty nhỏ hơn, quản trị viên mạng thường chịu trách nhiệm về hỗtrợ máy tính để bàn của người dùng cuối và bảo trì máy chủ cũng như các thiết
bị được kết nối mạng khác
1.1.2 Kiến trúc Manager/Agent trong quản trị mạng
Kiến trúc Manager/Agent là kiến trúc quản trị mạng cơ bản bao gồm một hệquản trị (manager), một hệ bị trị (managed system), một cơ sở dữ liệu chứa thôngtin quản trị và giao thức quản trị mạng
Tiến trình Manager cung cấp giao diện giữa người quản trị mạng và các thiết
bị được quản trị, đồng thời thực hiện các nhiệm vụ như là đo lượng lưu thông trênmột đoạn mạng cục bộ ở xa, hoặc ghi tốc độ truyền và địa chỉ vật lý của giao diệnLAN trên một Router Manager cũng bao gồm cả một số loại kết xuất để hiển thịcác dữ liệu quản trị, thống kê … ví dụ điển hình của kiểu hiển thị đồ họa đó là mộtbản đồ về topology liên mạng thể hiện các vị trí của các LAN segments, từ đó cóthể chọn một segment cụ thể nào đó và hiển thị trạng thái hoạt động hiện hành củanó
[11]
Trang 13Còn hệ bị quản trị bao gồm tiến trình Agent và các đối tượng quản trị Tiếntrình Agent thực hiện các thao tác quản trị mạng như là đặt các tham số cấu hình vàcác thống kê hoạt động hiện hành cho một Router trên một segment cho trước Cácđối tượng quản trị bao gồm các trạm làm việc, các máy chủ, hub, các kênh truyền
… gắn với các đối tượng này là các thuộc tính có thể được xác định tĩnh (như tốc
độ của giao diện), động (như các mục trong bảng chọn đường) hoặc đòi hỏi đolường tiếp tục (như số gói tin truyền không có lỗi trong một thời đoạn cho trước)
Cơ sở dữ liệu chứa thông tin quản trị mạng được gọi là cơ sở thông tin quảntrị (MIB) được gắn với cả hai bên Tổ chức logic của MIB được gọi là cấu trúc củathông tin quản trị (SMI) SMI được tổ chức thành cấu trúc cây, bắt đầu từ gốc vớicác cành chứa các đối tượng quản trị được phân loại logic
Giao thức quản trị mạng cung cấp phương thức liên lạc giữa manager, cácđối tượng bị quản trị và các agent Để cấu trúc tiến trình truyền thông, giao thứcphải xác định các đơn vị dữ liệu (PDU) thể hiện các thủ tục của nó
Hình 1.1 Mô hình Manager/Agent của hệ thống quản trị mạng
1.1.3 Các kiểu mô hình quản lý mạng
Có hai kiểu mô hình quản lí mạng mà chúng ta hay thấy đó là mô hình mạngWorkgroup và mô hình mạng Domain Ở mỗi mô hình đều có những ưu nhượcđiểm riêng và phù hợp với từng mục đích khác nhau của người sử dụng
Mô hình mạng Workgroup
[12]
Trang 14Ở mô hình này có một nhóm máy tính mạng cùng chia sẻ tài nguyên như file
dữ liệu, máy in Đó là một nhóm logic các máy tính mà tất cả chúng có cùng tênnhóm Ở một mạng cục bộ LAN có thể có nhiều nhóm làm việc Workgroup khácnhau cùng kết nối
Trong mô hình này, các máy tính có quyền hạn ngang nhau và không có cácmáy tính chuyên dụng làm nhiệm vụ cung cấp dịch vụ hay quản lý Các máy tính tựbảo mật và quản lý các tài nguyên của riêng mình, hơn hết các máy tính cục bộ nàycũng tự chứng thực cho người dùng cục bộ
Với mô hình này các máy tính có quyền chia sẻ tài nguyên ngang nhau màkhông cần sự chỉ định của server Sự quản trị về tài khoản người dùng, bảo mật chonguồn tài nguyên chia sẻ không được tập trung hóa Bạn có thể kết nối tới mộtnhóm đã tồn tại hoặc khởi tạo một nhóm mới
Mô hình Workgroup không yêu cầu máy tính chạy trên hệ điều hànhWindows Server Với nhóm máy tính dưới 10 máy và được đặt gần nhau thì môhình mạng Workgroup là sự lựa chọn ưu việt Tuy nhiên ở mô hình này mỗi ngườidùng cần có một tài khoản người dùng trên mỗi máy tính mà họ muốn đăng nhập,nếu như có bất kì sự thay đổi nào liên quan đến tài khoản đều cần thực hiện trên tất
cả các máy tính trong nhóm làm việc Việc chia sẻ thiết bị và file được xử lý bởicác máy tính riêng, và chỉ cho người dùng có tài khoản trên máy tính đó được sửdụng
Mô hình mạng Domain
Một nhóm máy tính mạng cùng chia sẻ cơ sở dữ liệu thư mục tập trung đượcgọi là mô hình Domain Thư mục dữ liệu chứa tài khoản người dùng và thông tinbảo mật cho toàn bộ Domain
Ngược lại với mô hình Workgroup, với mô hình Domain thì việc quản lý vàchứng thực người dùng mạng tập trung tại máy tính Primary Domain Controller.Domain controller là một Server quản lý tất cả các khía cạnh bảo mật của Domain.Các tài nguyên mạng cũng được quản lý tập trung và cấp quyền hạn cho từng ngườidùng Lúc đó trong hệ thống có các máy tính chuyên dụng làm nhiệm vụ cung cấpcác dịch vụ và quản lý các máy trạm
[13]
Trang 15Trong một Domain, thư mục chỉ tồn tại trên các máy tính được cấu hình nhưmáy điều khiển miền Việc bảo mật hay quản trị trong Domain được tập trung hóa.Một domain không được xem như một vị trí đơn hoặc cấu hình mạng riêng biệt.Các máy tính trong cùng domain có thể ở trên một mạng LAN hoặc WAN Chúng
có thể giao tiếp với nhau qua bất kỳ kết nối vật lý nào
Khác với Workgroup nếu người dùng có bất cứ thay đổi nào thì sự thay đổi
đó sẽ được cập nhật tự động hóa trên toàn bộ Domain Tuy nhiên một nhược điểmcủa Domain cần được nhắc tới đó chính là việc Domain phải tồn tại trước khi ngườidùng tham gia vào nó Muốn tham gia Domain cần có tài khoản người dùng đượcngười quản trị Domain cung cấp cho máy tính người dùng tới Domain đó.Bảng 1 So sánh giữa Workgroup và Domain1
Tính bảo mật thấp, không tập trung dữ
liệu
Tính bảo mật cao vì dữ liệu được tậptrung tại máy server
Triển khai được ít dịch vụ mạng Có thể triển khai hầu hết các dịch vụ
Các tài nguyên không được quản lí tập
trung nên khó tìm kiếm hay sử dụng
Dễ tìm kiếm và sử dụng các tài nguyênmạng
1.1.4 Nhiệm vụ của quản trị mạng
Nhiệm vụ quản trị mạng bao gồm:
- Theo dõi hoạt động mạng: Người quản trị mạng phải nắm rõ nguyên tắc hoạtđộng của thiết bị cũng như các giao thức, các ứng dụng để theo dõi hệ thốngmạng hoạt động có sai lệch hay không
- Tăng cường khả năng tự động: một hệ thống mạng tối ưu phải có hệ thống dựphòng khi có sự cố xảy ra
- Theo dõi thời gian đáp ứng trong mạng: phải tối ưu hóa về mặt định tuyến, chấtlượng dịch vụ … sao cho việc sử dụng tài nguyên một cách tốt nhất
- Bảo mật: Cần phải nắm rõ hệ thống mạng để bảo mật mạng
- Cung cấp khả năng lưu trữ dữ liệu
[14]
Trang 16- Phát triển dịch vụ: người sử dụng luôn mong chờ những dịch vụ mới hơn, tốthơn khi hệ thống mạng phát triển hơn.
- Cân bằng các nhu cầu khác nhau: người sử dụng luôn đòi hỏi các phần mềm ứngdụng khác nhau với những mức hỗ trợ khác nhau và yêu cầu khác nhau về mức
độ hoạt động cũng như khả năng bảo mật
- Giảm tối đa thời gian ngừng hoạt động do sự cố: sử dụng các biện pháp dựphòng để đảm bảo khả năng cung cấp dịch vụ và tài nguyên mạng
- Kiểm soát chi phí: theo dõi và kiểm soát mức độ sử dụng tài nguyên để phù hợpvới mức chi phí chấp nhận được
1.2 Tổng quan về quản lý cấu hình
1.2.1 Giới thiệu về quản lý cấu hình
Quản lý cấu hình là một quá trình thiết lập và duy trì tính nhất quán về tốc
độ, tính năng của một hệ thống, một dịch vụ với yêu cầu, thiết kế và các thông tinvận hành xuyên suốt vòng đời của nó
Việc quản lý cấu hình thường thực hiện qua quá trình xây dựng trước mẫucho các chương trình cần quản lý và khi sử dụng thì ta chỉ cần thêm thông số phùhợp Các máy chủ sẽ tải cấu hình dành cho mình về và thực thi các công việc càiđặt, cấu hình để đạt được một trạng thái định trước Một số chương trình có hỗ trợchức năng để đảm bảo máy chủ luôn có một cấu hình như đã định trước ngay cả khicấu hình máy chủ đó đã bị người dùng thay đổi thủ công…
Quản lý cấu hình được áp dụng trong vòng đời của một hệ thống cung cấpkhả năng hiển thị và kiểm soát hiệu suất, chức năng và các thuộc tính vật lý của nó.Quá trình quản lý cấu hình tạo điều kiện thuận lợi cho việc quản lý có trật tự thôngtin hệ thống và các thay đổi của hệ thống cho các mục đích có lợi như sửa đổi khả
[15]
Trang 17năng, cải thiện hiệu suất, độ tin cậy hoặc khả năng bảo trì, kéo dài tuổi thọ, giảmchi phí, giảm rủi ro và trách nhiệm pháp lý, sửa chữa các khiếm khuyết Chi phíthực hiện quản lý cấu hình tương đối thấp Việc thiếu quản lý cấu hình, hoặc triểnkhai không hiệu quả, có thể rất tốn kém và đôi khi có thể gây ra những thiệt hạinhư hỏng hóc thiết bị.
Quản lý cấu hình nhấn mạnh mối quan hệ chức năng giữa các bộ phận, hệthống và hệ thống con để kiểm soát hiệu quả sự thay đổi của toàn bộ hệ thống Nógiúp xác minh rằng các thay đổi được đề xuất được xem xét một cách có hệ thống,giúp giảm thiểu các tác động bất lợi Các thay đổi đối với hệ thống được đề xuất,đánh giá và thực hiện bằng cách tiếp cận hệ thống đã được tiêu chuẩn hóa nhằmđảm bảo tính nhất quán và các thay đổi được đề xuất có thể đánh giá về tác động dựkiến của chúng đối với toàn bộ hệ thống Quản lý cấu hình cũng xác minh rằng cácthay đổi được thực hiện theo quy định và tài liệu về các hạng mục và hệ thống phảnánh cấu hình thực của chúng
1.2.2 Lợi ích của quản lý cấu hình
Quản lý cấu hình đem lại nhiều lợi ích cho người quản trị viên:
Giúp thực hiện công việc triển khai hệ thống đơn giản và thuận tiện
Hạn chế những công đoạn lặp lại, tiết kiệm thời gian
Có thể sử dụng lại cho những hệ thống tương tự
Linh hoạt, mềm dẻo trong quản lý
1.2.3 Các tiêu chí đánh giá một hệ thống quản lý cấu hình
Tính đơn giản: Đối tượng sử dụng các hệ thống quản lý cấu hình chủ yếu là các
nhà quản trị và vận hành hệ thống Vì thế nên tính đơn giản là một trong nhữngtiêu chí hàng đầu khi đánh giá Những chương trình sử dụng các loại ngôn ngữphức tạp để viết file cấu hình có thể gây khó khăn cho việc sử dụng của ngườidùng
Tính linh hoạt: Một mẫu cấu hình cần có khả năng áp dụng cho nhiều máy
khác nhau, với những thay đổi tùy thuộc theo các thông số của từng máy
[16]
Trang 18 Khả năng mở rộng tính năng: Nhu cầu dễ dàng thêm các thành phần của bên
thứ ba vào một chương trình quản lý cấu hình là cần thiết Điều này sẽ giúp cácnhà phát triển dễ dàng thêm các thành phần của họ, đồng thời giúp chương trình
có thể sử dụng ở một môi trường chuyên biệt mà không đòi hỏi thay đổi mãnguồn chương trình
Khả năng mở rộng hệ thống: Với những hệ thống lớn, mô hình của chương
trình quản lý cấu hình sử dụng ảnh hưởng lớn tới khả năng mở rộng của nó.Chẳng hạn như một chương trình sử dụng mô hình máy chủ - máy khách chỉ vớimột máy chủ duy nhất có thể dẫn đến quá tải và không thể mở rộng hệ thống
1.2.4 Các thủ tục triển khai quản lý cấu hình
Hình 1.2 Các thủ tục triển khai Configuration Management
Dentification (Nhận biết): Hành động đầu tiên đối với quản lý cấu hình là thu
thập thông tin Dữ liệu cấu hình phải được tổng hợp và biên dịch từ các môitrường ứng dụng khác nhau, phát triển, sắp xếp và sử dụng cho tất cả các thànhphần và dịch vụ đang được sử dụng Bất kỳ dữ liệu bí mật nào như mật khẩu vàkhóa phải được xác thực, mã hóa và lưu trữ an toàn Đồng thời, dữ liệu cấu hìnhnên được tổ chức thành các tệp dữ liệu
Baseline (Đường cơ sở): Sau khi dữ liệu cấu hình đã được tổng hợp và sắp xếp,
một baseline có thể được thiết lập Cấu hình cơ sở là trạng thái cấu hình sẽ vậnhành thành công phần mềm mà không bị lỗi
Version Control (Kiểm soát phiên bản): Dự án phát triển của chúng ta nên sử
dụng hệ thống kiểm soát phiên bản Nếu chưa có hệ thống kiểm soát phiên bản,
ta nên cài đặt Git, khởi tạo kho lưu trữ cho dự án và thêm tệp dữ liệu cấu hình
[17]
Trang 19vào kho lưu trữ Lưu ý trước khi thêm dữ liệu cấu hình vào kho lưu trữ là hãyđảm bảo rằng mọi dữ liệu bí mật như mật khẩu hoặc khóa đều được mã hóabằng khóa ngoài Dữ liệu bí mật chưa mã hoá vô tình được đưa vào một kho lưutrữ thì khá nguy hiểm và nó cần được xóa khỏi lịch sử kho lưu trữ, nếu không
dữ liệu đó sẽ có nguy cơ bị khai thác
Auditing (Kiểm toán): Việc tổ chức dữ liệu cấu hình và thêm vào kho lưu trữ
cho phép truy cập và hiển thị cấu hình của hệ thống Bất kỳ thay đổi nào được
áp dụng cho cấu hình phải được hệ thống kiểm toán xem xét và chấp nhận Điềunày bổ sung trách nhiệm giải trình và khả năng hiển thị đối với các thay đổi cấuhình
1.3 Tự động hoá mạng
1.3.1 Khái niệm
Tự động hóa mạng là quá trình tự động hóa việc cấu hình, quản lý, kiểm
tra, triển khai và vận hành các thiết bị vật lý và ảo trong cùng một mạng Với cácnhiệm vụ và chức năng mạng hàng ngày, các quy trình tự động lặp đi lặp lại đượckiểm soát và quản lý tự động, tính khả dụng của dịch vụ mạng được cải thiện.Bất kỳ loại mạng nào cũng có thể sử dụng tự động hóa mạng Các giải phápdựa trên phần cứng và phần mềm cho phép các trung tâm dữ liệu, nhà cung cấp dịch
vụ và doanh nghiệp thực hiện tự động hóa mạng để nâng cao hiệu quả, giảm lỗi docon người và giảm chi phí vận hành
Các bộ phận công nghệ thông tin ngày nay luôn tìm kiếm tốc độ, sự nhanhnhẹn và tính nhất quán trong việc cung cấp và quản lý cả các ứng dụng gốc truyềnthống và đám mây Một nền tảng tự động hóa mạng hiện đại có thể đạt được nhữngmục tiêu này bằng cách tự động hóa các chức năng mạng như cung cấp tài nguyên,lập bản đồ mạng và kiểm tra mạng
1.3.2 Lợi ích của tự động hóa mạng
Một trong những vấn đề lớn nhất đối với các nhà quản lý mạng là sự gia tăngchi phí CNTT cho các hoạt động mạng Sự phát triển của dữ liệu và thiết bị đangbắt đầu vượt xa khả năng CNTT, khiến các phương pháp tiếp cận thủ công gần như
[18]
Trang 20không thể thực hiện được Tuy nhiên, có tới 95% thay đổi mạng được thực hiện thủcông, dẫn đến chi phí vận hành cao hơn chi phí của mạng từ 2 đến 3 lần Tự độnghóa CNTT ngày càng phát triển, được quản lý tập trung và từ xa là điều cần thiếtcho các doanh nghiệp để bắt kịp thế giới kỹ thuật số.
Tự động hóa mạng cho phép người dùng tăng tốc độ triển khai ứng dụngbằng cách tự động hóa việc cung cấp và quản lý mạng và bảo mật thông qua cácvòng đời ứng dụng hoàn chỉnh và trên các môi trường trung tâm dữ liệu và đámmây
1.3.3 Một số chức năng của tự động hoá mạng
Triển khai một thiết bị mới hoàn toàn tự động: Một thiết bị mới chỉ cần kết
nối là tự động tham gia vào hạ tầng mạng và hoạt động như các node khác Tínhnăng này giúp các thiết bị mới hoạt động với rất ít công sức Một cấu hình đầy
đủ hoặc một phần sẽ được đẩy xuống thiết bị Sau khi thiết bị đã hoạt động thìcác công việc thay đổi, giám sát, tối ưu đều trở nên dễ dàng hơn
Quản lý phần mềm chạy trên thiết bị: Ví dụ như để kiểm tra và đảm bảo
khoảng 800 - 1000 thiết bị có cùng một phiên bản hệ điều hành thì tự động hóamạng sẽ làm tốt hơn con người
Kiểm tra tính tương thích: Tự động hóa mạng có khả năng độc đáo và duy
nhất để audit một số lượng lớn các thiết bị xem có bị lỗi trong cấu hình haykhông Tự động hóa mạng cũng sẽ tự động thực thi các điều chỉnh phù hợp bằngcác cơ chế kiểm định bên trong
Tạo ra các báo cáo: Để trích xuất và tổng hợp các thông tin từ các nguồn thiết
bị khác nhau thì tự động hóa mạng sẽ giúp ích rất nhiều Các thông tin có thểđược tổng hợp để trở nên hữu ích và con người có thể đọc được
Khắc phục sự cố: Tự động hóa mạng giúp cho quá trình khắc phục sự cố trở
nên dễ dàng hơn bằng cách phân tích các cấu hình hiện tại và các lỗi đang xảy ra
ở thời gian thực một cách đồng thời trên nhiều thiết bị
Thu thập dữ liệu và chẩn đoán từ xa: Tự động hóa mạng sẽ tận dụng các API
để thu thập thông tin về các tiến trình hoạt động và cho phép tích hợp dễ dàngvới các ứng dụng quản lý bên trên
[19]
Trang 211.4 Một số công cụ quản lý cấu hình phổ biến
1.4.1 Ansible
Ansible là một trong những công cụ quản lý cấu hình hiện đại, nó tạo điều kiệnthuận lợi cho công việc cài đặt, quản lý và bảo trì các server từ xa, với thiết kế tốigiản giúp người dùng cài đặt và chạy nhanh chóng
Trọng tâm của Ansible là sắp xếp hợp lý và nhanh chóng, và không yêu cầu càiđặt agent node Các chức năng Ansible được thực hiện qua SSH Ansible được xâydựng bằng Python, còn Puppet và Chef được xây dựng bằng Ruby
Người dùng viết các tập lệnh cấp phép Ansible trong YAML, một tiêu chuẩntuần tự hóa dữ liệu thân thiện với người dùng, chúng không bị ràng buộc với bất kỳngôn ngữ lập trình nào Chính vì vậy người dùng có thể tạo ra các tập lệnh cấp phép
phức tạp một cách trực quan hơn so với các công cụ còn lại trong cùng danh mục
Để sử dụng Ansible (www.ansible.com), chúng ta cần cài đặt Ansible trên một
số máy tính: Mac, Linux hoặc Linux VM trên máy chủ Windows Ta cũng có thể sửdụng phiên bản nguồn mở miễn phí như Ansible AWX hoặc sử dụng phiên bảnmáy chủ Ansible Tower có trả phí
1.4.2 Puppet
Puppet là một công cụ quản lý cấu hình mã nguồn mở viết bằng Ruby, được
sử dụng để quản lý cấu hình máy chủ và tự động hóa hệ thống trong các trung tâm
dữ liệu của Google, Twitter, thị trường chứng khoán New York, và nhiều doanhnghiệp lớn khác Puppet được phát triển đầu tiên bởi Puppet Labs, và hiện tạiPuppet Labs cũng là người duy trì chính của dự án này Puppet có thể dùng để quản
lý từ vài máy chủ cho tới hơn chục nghìn máy chủ, cùng với đó là đội quản trị hệthống từ một người tới hàng trăm người
Puppet là một công cụ để quản lý cấu hình và bảo trì hệ thống máy tính.Ngôn ngữ cấu hình của Pupper khá đơn giản Chúng ta chỉ cần chỉ cho Puppet thấychúng ta muốn cấu hình máy tính của chúng ta như thế nào, nó sẽ thực hiện đúngnhững gì chúng ta muốn Khi hệ thống có sự thay đổi, chẳng hạn như một phiên bảncập nhật của gói phần mềm, thêm người dùng mới hay một cấu hình nào đó thay
[20]
Trang 22đổi, Puppet sẽ tự động cập nhật tất cả các máy chủ trong hệ thống đúng như cấuhình chúng ta muốn.
Sự khác biệt giữa cách tiếp cận Ansible và Puppet, đó là Playbooks Ansible
sử dụng một ngôn ngữ bắt buộc, trong khi Puppet sử dụng ngôn ngữ khai báo.Chẳng hạn, với Ansible, playbook sẽ liệt kê các tác vụ và lựa chọn dựa trên các kếtquả đó, như xác định cấu hình tất cả các Router nhánh ở những vị trí này và nếu xảy
ra lỗi cho bất kỳ thiết bị nào, hãy thực hiện các tác vụ bổ sung này cho thiết bị đó.Puppet thường sử dụng kiến trúc dựa trên agent để hỗ trợ thiết bị mạng Một sốthiết bị mạng cho phép hỗ trợ Puppet thông qua một agent trên thiết bị Tuy nhiên,không phải mọi hệ điều hành của Cisco đều hỗ trợ các agent, vì vậy Puppet giảiquyết vấn đề đó bằng cách sử dụng một agent proxy chạy trên một số máy chủ bênngoài (được gọi là hoạt động không có tác nhân)
Trên trang web Puppet, Puppet hỗ trợ cả kiến trúc dựa trên tác nhân vàkhông có tác nhân, với kiến trúc không có tác nhân là trường hợp sử dụng một tácnhân bên ngoài cho thiết bị mạng
1.4.3 Chef
Chef (www.chef.io), giống như với Ansible và Puppet, tồn tại dưới dạng cácgói phần mềm Chef (công ty) cung cấp một số sản phẩm, với Chef Automate là sảnphẩm mà hầu hết mọi người gọi đơn giản là Chef Như với Puppet, trong hệ thốngmạng, người dùng có thể chạy Chef dưới dạng máy chủ (được gọi là chế độ client-server), với nhiều máy trạm Chef được nhân viên kỹ thuật sử dụng để xây dựng cáctệp Chef được lưu trữ trên máy chủ Chef Tuy nhiên người dùng cũng có thể chạyChef ở chế độ độc lập (được gọi là Chef Zero), rất hữu ích cho người mới bắt đầu
và học trong phòng lab
Cấu hình của Chef xoay quanh Git, vì vậy kiến thức về cách Git hoạt động làmột điều kiện tiên quyết cho hoạt động Chef Như Puppet, Chef được dựa trênRuby, vì vậy kiến thức của Ruby cũng được yêu cầu Modules có thể được tải vềhoặc viết từ đầu, và triển khai tới các nút quản lý cấu hình
Chef sử dụng một kiến trúc tương tự như Puppet Đối với các thiết bị mạng, mỗithiết bị được quản lý (được gọi là nút Chef hoặc Chef client) chạy một tác nhân
[21]
Trang 23agent Tác nhân thực hiện giám sát cấu hình trong đó client lấy các công thức và tàinguyên từ máy chủ Chef và sau đó điều chỉnh cấu hình của nó để đồng bộ Tuynhiên, không giống như Puppet, Chef chưa có một tính năng push tốt Điều này cónghĩa rằng các nhân viên sẽ cần phải được cấu hình để kiểm tra với chủ định kỳ, vàứng dụng ngay lập tức các thay đổi là không thực sự tốt.
[22]
Trang 24CHƯƠNG 2 NGHIÊN CỨU VỀ CÔNG CỤ QUẢN LÝ CẤU
HÌNH ANSIBLE2.1 Tìm hiểu về Ansible và các thành phần cơ bản: SSH, YAML
2.1.1 Sơ lược về SSH
2.1.1.1 Khái niệm
SSH là một giao thức điều khiển từ xa cho phép người dùng kiểm soát vàchỉnh sửa server từ xa qua Internet Dịch vụ này được tạo ra nhằm thay thế chotrình Telnet vốn không có mã hóa và sử dụng kỹ thuật cryptographic để đảm bảo tất
cả giao tiếp gửi tới và gửi từ server từ xa diễn ra trong tình trạng mã hóa Nó cungcấp thuật toán để chứng thực người dùng từ xa, chuyển input từ client tới host, vàrelay kết quả trả về tới khách hàng
2.1.1.2 Lịch sử phát triển
SSH được phát triển tại Đại học Công nghệ Helsinki năm 1995 bởi TatuYlönen nhằm đáp trả cuộc tấn công đánh hơi bằng mật khẩu trên mạng lưới trườngđại học Nó nhằm mục đích cung cấp một sự thay thế cho các giao thức như FTP,TELNET, rsh và rlogin, không đảm bảo tính bảo mật hoặc xác thực người dùng mộtcách an toàn
SSH được phát hành miễn phí cho công chúng vào năm 1995 và được đónnhận Trong khi SSH được áp dụng nhanh chóng, Ylönen đã thành lập SSHCommunications Security vào cuối năm đó để tiếp tục phát triển và thương mại hóaSSH
Năm 1995, Ylönen cũng xuất bản Dự thảo Internet của Lực lượng đặc nhiệm
kỹ thuật Internet (IETF) ghi lại giao thức SSH-1 Những hạn chế đã sớm được tìmthấy trong giao thức, và những điều này không thể được giải quyết mà không ảnhhưởng đến khả năng tương thích ngược Giải pháp là một phiên bản mới của giaothức và SSH-2 được ra mắt bởi công ty Ylönen vào năm 1996
[23]
Trang 25SSH-2 nổi bật với các thuật toán mới, khiến IETF tìm thấy một nhóm làmviệc nhằm chuẩn hóa giao thức Nhóm có biệt danh là SECSH, vì Giâyure Shell và
nó đã xuất bản Dự thảo Internet đầu tiên cho SSH-2 vào năm 1997
Phần mềm cho SSH-2 được phát hành vào năm 1998, nhưng nó đã ngay lậptức được áp dụng một cách phổ biến vì cấp phép hạn chế hơn Năm 2006, IETF đãtạo ra một phiên bản thay đổi của giao thức Điều này an toàn hơn, sử dụng mã xácthực tin nhắn để kiểm tra tính toàn vẹn và trao đổi khóa Diffie-Hellman để xác thực.Năm 1999, dự án OpenBSD đã phát hành OpenSSH OpenSSH là phiên bảnmiễn phí của giao thức đó là dựa trên những sửa đổi mà Bjorn Grönvall đã thựchiện cho SSH 1.1.12 Các nhà phát triển đã quay lại phiên bản cũ hơn và thay đổi
nó rất nhiều, vì đây là phiên bản cuối cùng của SSH hoàn toàn là nguồn mở.OpenSSH hiện là tùy chọn được sử dụng rộng rãi nhất và nó đã được triển khaitrong một loạt các hệ điều hành, như Windows, macOS, Linux, Solaris và các hệthống khác
2.1.1.3 Cách thức hoạt động của SSH
SSH làm việc thông qua 3 bước đơn giản:
Bước 1 Định danh host:
Việc định danh host được thực hiện qua việc trao đổi khoá Mỗi máy tính có
hỗ trợ kiểu truyền thông SSH có một khoá định danh duy nhất Khoá này gồm haithành phần: khoá riêng (Private key) và khoá công cộng (Public key) Khoá côngcộng được sử dụng khi cần trao đổi giữa các máy chủ với nhau trong phiên làm việcSSH, dữ liệu sẽ được mã hoá bằng khoá riêng và chỉ có thể giải mã bằng khoá côngkhai Khi có sự thay đổi về cấu hình trên máy chủ: thay đổi chương trình SSH, thayđổi cơ bản trong hệ điều hành, khoá định danh cũng sẽ thay đổi Khi đó mọi người
sử dụng SSH để đăng nhập vào máy chủ này đều được cảnh báo về sự thay đổi này.Khi hai hệ thống bắt đầu một phiên làm việc SSH, máy chủ sẽ gửi khoá công cộngcủa nó cho máy khách Máy khách sinh ra một khoá phiên ngẫu nhiên và mã hoákhoá này bằng khoá công cộng của máy chủ, sau đó gửi lại cho máy chủ Máy chủ
sẽ giải mã khoá phiên này bằng khoá riêng của mình và nhận được khoá phiên
[24]
Trang 26Khoá phiên này sẽ là khoá sử dụng để trao đổi dữ liệu giữa hai máy Quá trình nàyđược xem như các bước nhận diện máy chủ và máy khách.
Bước 2 Mã hoá
Sau khi hoàn tất việc thiết lập phiên làm việc bảo mật (trao đổi khoá, địnhdanh), quá trình trao đổi dữ liệu diễn ra thông qua một bước trung gian đó là mãhoá/giải mã Điều đó có nghĩa là dữ liệu gửi/nhận trên đường truyền đều được mãhoá và giải mã theo cơ chế đã thoả thuận trước giữa máy chủ và máy khách Việclựa chọn cơ chế mã hoá thường do máy khách quyết định Các cơ chế mã hoáthường được chọn bao gồm: 3DES, IDEA, và Blowfish Khi cơ chế mã hoá đượclựa chọn, máy chủ và máy khách trao đổi khoá mã hoá cho nhau Việc trao đổi nàycũng được bảo mật dựa trên đinh danh bí mật của các máy Kẻ tấn công khó có thểnghe trộm thông tin trao đổi trên đường truyền vì không biết được khoá mã hoá.Các thuật toán mã hoá khác nhau và các ưu, nhược điểm của từng loại:
3DES (cũng được biết như Triple-DES) - phương pháp mã hoá mặc định choSSH
IDEA - Nhanh hơn 3DES, nhưng chậm hơn Arcfour và Blowfish
Arcfour - Nhanh, nhưng các vấn đề bảo mật đã được phát hiện
Blowfish - Nhanh và bảo mật, nhưng các phương pháp mã hoá đang đượccải tiến
Bước 3 Chứng thực:
Việc chứng thực là bước cuối cùng trong ba bước, và là bước đa dạng nhất.Tại thời điểm này, kênh trao đổi bản thân nó đã được bảo mật Mỗi định danh vàtruy nhập của người sử dụng có thể được cung cấp theo rất nhiều cách khác nhau.Chẳng hạn, kiểu chứng thực rhosts có thể được sử dụng, nhưng không phải là mặcđịnh; nó đơn giản chỉ kiểm tra định danh của máy khách được liệt kê trong filerhost (theo DNS và địa chỉ IP) Việc chứng thực mật khẩu là một cách rất thôngdụng để định danh người sử dụng, nhưng ngoài ra cũng có các cách khác: chứngthực RSA, sử dụng ssh-keygen và ssh-agent để chứng thực các cặp khoá
[25]
Trang 272.1.2 Sơ lược về YAML
2.1.2.1 Khái niệm:
YAML là một chuẩn dữ liệu kiểu serialization dành cho tất cả các ngôn ngữ.
Nó được sử dụng phổ biến để tạo ra các file config cho nhiều ứng dụng
2.1.2.2 Cú pháp:
Bảng 2 Cú pháp YAML2
Trang 28“A double-quoted string”
2.1.3 Giới thiệu về Ansible
Hiện nay có rất nhiều tool automation để quản trị hệ thống trên thị trường, cụthể như: Chef, Puppet, CFEngine, StackStorm, Ansible, SaltStack… So với cáccông cụ khác với tính năng tương đương thì Ansible dễ học và dễ tiếp cận hơn rấtnhiều Cộng đồng người dùng Ansible cũng nhiều hơn so với các công cụ khác
[27]
Trang 292.1.3.1 Khái niệm Ansible
Ansible là cơng cụ quản lý cấu hình, cho phép tự động hĩa cơng việc của
Sysadmin/devOps; là cơng cụ mã nguồn mở dùng để quản lý cài đặt, cấu hình hệthống một cách tập trung
Ansible sử dụng SSH (PowerShell) và các module được viết bằng Python đểđiều khiển hệ thống Cơng cụ này sử dụng YAML để xây dựng cấu trúc mơ tả hệthống và sử dụng định dạng JSON để hiện thị thơng tin
2.1.3.2 Lịch sử phát triển Ansible
Cơng cụ Ansible được phát triển bởi Michael DeHaan, tác giả của ứng dụngmáy chủ cung cấp Cobbler và đồng tác giả của khuơn khổ Fedora Unified NetworkController (Func) để quản trị từ xa
Ansible, Inc (ban đầu là AnsibleWorks, Inc.) là cơng ty được thành lập vàonăm 2013 bởi Michael DeHaan, Timothy Gerla và Sạd Ziouani để hỗ trợ và tài trợcho Ansible về mặt thương mại
Red Hat mua lại Ansible vào tháng 10 năm 2015 Ansible được bao gồm nhưmột phần của bản phân phối Fedora của Linux, do Red Hat sở hữu và cũng cĩ sẵncho Red Hat Enterprise Linux, CentOS, openSUSE, SUSE Linux Enterprise,Debian, Ubuntu, Scientific Linux và Oracle Linux thơng qua Gĩi bổ sung dành choDoanh nghiệp Linux (EPEL), cũng như các hệ điều hành khác
2.1.3.3 Kiến trúc của Ansible
Ansible sử dụng kiến trúc agentless khơng cần đến agent để giao tiếp với cácmáy khác Cơ bản nhất là giao tiếp thơng qua các giao thức WinRM trên Windows,SSH trên Linux hoặc giao tiếp qua chính API của thiết bị đĩ cung cấp
Ansible cĩ thể giao tiếp với rất nhiều OS, platform và loại thiết bị khác nhau
từ Ubuntu, VMware, CentOS, Windows cho tới Azure, AWS, các thiết bị mạngCisco và Juniper… mà hồn tồn khơng cần agent khi giao tiếp
Nhờ vào cách thiết kế này đã giúp làm tăng tính tiện dụng của Ansible dokhơng cần phải cài đặt và bảo trì agent trên nhiều host Cĩ thể nĩi rằng đây chính là
[28]
Trang 30một thế mạnh của Ansible so với các công cụ có cùng chức năng như Chef vàPuppet.
Bảng 2 So sánh cấu trúc giữa Ansible, Puppet và Chef:3
Thuật ngữ cho tệp liệt kê
Recipe,Runlist
Giao thức cho thiết bị mạng SSH,
NETCONF HTTP (REST) HTTP (REST)
Sử dụng mô hình agent hoặc
Cả ba trong số các công cụ quản lý cấu hình trên đều có một cơ sở ngườidùng tốt và các thế mạnh khác nhau Đối với việc sử dụng chúng để quản lý cấuhình thiết bị mạng, Ansible dường như được quan tâm nhất, sau đó là Puppet và sau
đó là Chef
2.1.3.4 Ưu điểm của Ansible:
- Clear: Ansible sử dụng cú pháp đơn giản (YAML) và dễ hiểu đối với bất kỳ ai
(developers, sysadmins, managers)
- Fast: Học nhanh, cài đặt nhanh chóng và không phải cài đặt phần mềm hay
daemon nào khác trên server của chúng ta
- Complete: Phương pháp tiếp cận batteries included của Ansible, chúng ta có mọi
thứ chúng ta cần trong một package hoàn chỉnh
- Efficient: Việc không có phần mềm bổ sung trên máy chủ của chúng ta sẽ giúp
chúng ta tiết kiệm tài nguyên và dành nhiều tài nguyên hơn cho các ứng dụng.Ngoài ra, vì các modules của Ansible hoạt động thông qua JSON, Ansible có thể
mở rộng với các modules được viết bằng ngôn ngữ lập trình mà chúng ta đã biết
- Secure: Ansible sử dụng SSH và không yêu cầu thêm mở port hoặc daemon nên
tránh bị truy cập vào máy chủ của bạn qua port hay daemon
[29]
Trang 31- Ansible nhẹ và nhất quán, không có bất kỳ ràng buộc nào liên quan đến hệ điềuhành hay phần cứng cơ bản nào
2.1.3.5 Một số thuật ngữ cơ bản khi sử dụng Ansible:
Management Node: Là nơi ansible được cài đặt và từ đó tất cả các tasks và
playbooks sẽ được chạy
Inventory: Là file chứa thông tin các server cần quản lý File này thường nằm
tại đường dẫn /etc/ansible/hosts
Playbook: Là file chứa các task của Ansible được ghi dưới định dạng YAML
Máy controller (Ansible server) sẽ đọc các task trong Playbook và đẩy các lệnh thực thi tương ứng bằng Python xuống các máy con Ví dụ 1 playbook có thể chứa 2 task là: yum update và yum install vim
Task: Một block ghi tác vụ cần thực hiện trong playbook và các thông số liên
quan
Module: Một Module sẽ trừu tượng hóa một tác vụ hệ thống Ansible cũng cấp
sẵn rất nhiều Module tích hợp để chúng ta sử dụng nhưng nếu muốn, người dùng cũng có thể tự tạo Module Nói một cách dễ hiểu, người dùng sẽ giao tiếp với Ansible thông qua các Module
Role: Một tập hợp các Playbook, các template và các file khác, được tổ chức
theo cách được xác định trước để tạo điều kiện tái sử dụng và chia sẻ
Play: Là kịch bản thực thi của 1 playbook.
Facts: Các biến toàn cục chứa các thông tin về hệ thống, như các network
interface hay operating system
Handlers: Sử dụng để kích hoạt thay đổi trạng thái các service, như việc ta
restart hay reload một service
Template: Là file mẫu - là các file chưa hoàn thiện, còn thiếu phần giá trị của
các biến trong đó, khi thực thi ansible sẽ được hoàn thiện
2.1.3.6 Cách thức hoạt động của Ansible
Giống như đa phần các phần mềm quản lý cấu hình tập trung khác Ansible
có 2 loại server là Management Node (hay còn gọi là Control Machine) và Node
[30]