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ÂNTRƯỜNG KHOA HỌC MÁY TÍNH
KHOA KỸ THUẬT MẠNG MÁY TÍNH & TRUYỀN THÔNGBỘ 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ển Khó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ốt nhấ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ướng dẫ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à trung thự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 xin chịu hoàn toàn trách nhiệm.
[2]
Trang 41.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
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
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ắtDiễ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ệu dướ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ệt mỏ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ác công việc liên quan đến hạ tầng CNTT như tự động cấu hình, tự động triển khai phầ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ạ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ể đạ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ụng cô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
Ý nghĩa khoa học:
Hệ thống quản lý cấu hình sử dụng Ansible cho phép người dùng xác định một cách nhất quán các cài đặt hệ thống, cũng như xây dựng và duy trì các hệ thống đó theo các cài đặt cơ bản đó Quản lý cấu hình giúp người dùng và quản trị viên biết một số dịch vụ nhất định tồn tại ở đâu và trạng thái hiện tại của ứng dụng.
Ý nghĩa thực tiễn:
Trong một hệ thống mạng thật, việc quản lý cấu hình của nhiều thiết bị mạng tạo ra những thách thức Những thách thức đó có thể được giải quyết bằng cách sử dụng cùng một chế độ cấu hình cũ trên mỗi quy trình của thiết bị, cộng với làm việc chăm chỉ, chú ý đến chi tiết và thực hành vận hành tốt Tuy nhiên, quá trình trên mỗi thiết bị thủ công đó ngày càng trở nên khó khăn hơn vì nhiều lý do, vì vậy, tại một số điểm, các doanh nghiệp chuyển sang các công cụ quản lý cấu hình tự động để 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ột lự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Ạ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
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ồm cung 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ạng lướ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át cấ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át hoạ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ạng
lướ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òng chố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ấn cô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ọng trong 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ết cầ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 thi nhiệ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ất
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ình chuẩ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áy chủ 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ào cá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ông tin 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ên mộ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ện LAN 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ột bả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ủa nó.
[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ến trì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 đo lườ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ản trị (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ủa thô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ới cá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ức phả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ạng Workgroup 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ên nhóm Ở một mạng cục bộ LAN có thể có nhiều nhóm làm việc Workgroup khác nhau 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ác má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ày cũ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 cho nguồ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ột nhó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ành Windows 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ười dù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ởi cá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 được gọ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 tin bả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ười dù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ấp cá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ểm củ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ười dùng tham gia vào nó Muốn tham gia Domain cần có tài khoản người dùng được ngườ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ập trung 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ên mạng
1.1.4 Nhiệm vụ của quản trị mạngNhiệ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ống mạ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ất lượ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 16Trách nhiệm quản trị mạng:
- Kiểm soát tài sản chung: Nếu tài nguyên mạng không được kiểm soát hiệu quả thì hoạt động của hệ thống mạng sẽ không đạt như mong muốn.
- Kiểm soát độ phức tạp: Sự phát triển bùng nổ số lượng thiết bị mạng, user, giao thức và các nhà cung cấp dịch vụ hay thiết bị là những điều gây khó khăn cho công việc quản trị mạng.
- 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ốt hơ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 ứng dụ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ợp vớ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 tin vậ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ẫu cho 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ả khi cấ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ấp khả 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ông tin 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ảm chi 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ển khai 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ại như 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ác thay đổ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ững tiê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ười dù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ác nhà 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ới mộ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ôi trườ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ành phầ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ình nê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ận hà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óa bằ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ưu trữ 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ều nà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ấu hình.
1.3 Tự động hoá mạng1.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ác nhiệ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 được kiể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áp dự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 do con 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ự nhanh nhẹ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ền thố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ững mụ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ăng chi phí CNTT cho các hoạt động mạng Sự phát triển của dữ liệu và thiết bị đang bắ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ự động hó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ết cho 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ụng bằ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ác vò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à đám mâ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ính nă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óa mạ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 hay khô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ằng cá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àng vớ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ến1.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ện thuậ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ối giả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ây dự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ẩn tuầ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ản má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 doanh nghiệp lớn khác Puppet được phát triển đầu tiên bởi Puppet Labs, và hiện tại Puppet 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ấy chú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 đúng nhữ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ản cậ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ấu hì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ết quả đó, 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ải quyế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ên ngoà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ác nhâ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ác gó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ản phẩm mà hầu hết mọi người gọi đơn giản là Chef Như với Puppet, trong hệ thống mạ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ác tệp Chef được lưu trữ trên máy chủ Chef Tuy nhiên người dùng cũng có thể chạy Chef ở 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ên Ruby, 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ỗi thiế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ài nguyên từ máy chủ Chef và sau đó điều chỉnh cấu hình của nó để đồng bộ Tuy nhiê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ẤUHÌNH ANSIBLE
2.1 Tìm hiểu về Ansible và các thành phần cơ bản: SSH, YAML2.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ế cho trì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ó cung cấ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 Tatu Ylö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ột cá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 đón nhận Trong khi SSH được áp dụng nhanh chóng, Ylönen đã thành lập SSH Communications Security vào cuối năm đó để tiếp tục phát triển và thương mại hóa SSH.
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ìm thấy trong giao thức, và những điều này không thể được giải quyết mà không ảnh hưở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 giao thứ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àm việ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ập tứ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ác thự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ản miễn phí của giao thức đó là dựa trên những sửa đổi mà Bjorn Grönvall đã thực hiệ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 khai trong 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 hai thành phần: khoá riêng (Private key) và khoá công cộng (Public key) Khoá công cộ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ệc SSH, dữ liệu sẽ được mã hoá bằng khoá riêng và chỉ có thể giải mã bằng khoá công khai 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ộng củ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á, định danh), 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ệc lự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á được lựa chọn, máy chủ và máy khách trao đổi khoá mã hoá cho nhau Việc trao đổi này cũ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 cho SSH.
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 được cả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 file rhost (theo DNS và địa chỉ IP) Việc chứng thực mật khẩu là một cách rất thông dụng để định danh người sử dụng, nhưng ngoài ra cũng có các cách khác: chứng thự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ề YAML2.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ác cô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ất nhiề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ụng máy chủ cung cấp Cobbler và đồng tác giả của khuơn khổ Fedora Unified Network Controller (Func) để quản trị từ xa
Ansible, Inc (ban đầu là AnsibleWorks, Inc.) là cơng ty được thành lập vào nă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ẵn cho 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 cho Doanh 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ác má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ạng Cisco 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 do khơ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ười dù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ấu hì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ều hà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]