Tải bản đầy đủ (.pdf) (63 trang)

tìm hiểu và triển khai hệ thống quản lý cấu hình sử dụng ansible

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (5.2 MB, 63 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>ĐẠI HỌC DUY TÂNTRƯỜNG KHOA HỌC MÁY TÍNH</b>

<b>KHOA KỸ THUẬT MẠNG MÁY TÍNH & TRUYỀN THƠNGBỘ MƠN KỸ THUẬT MẠNG</b>

<b>KHĨA LUẬN TỐT NGHIỆP</b>

<i><b>Tên đề tài: </b></i>

<b>TÌM HIỂU VÀ TRIỂN KHAI </b>

<b>HỆ THỐNG QUẢN LÝ CẤU HÌNH SỬ DỤNG ANSIBLE</b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>LỜI CẢM ƠN</b>

Đầ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 q 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

<b>Phan Văn Phụng</b>

[1]

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>LỜI CAM ĐOAN</b>

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 hồn tồn trách nhiệm.

[2]

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

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 hố 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 hố 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]

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

2.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...

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<b>DANH MỤC HÌNH ẢNH</b>

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 khố 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]

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

<b>DANH MỤC BẢNG BIỂU</b>

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]

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<b>DANH MỤC TỪ VIẾT TẮT</b>

<b>Từ viết tắtDiễn giải</b>

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]

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<b>LỜI MỞ ĐẦU</b>

<b>1) Lý do chọn đề tài</b>

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 đó.

<i><b>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</b></i>

cứu trong báo cáo đồ án chuyên ngành.

<b>2) Mục tiêu của đề tài</b>

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.

<b>3) Đối tượng nghiên cứu</b>

- 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.

<b>4) Phạm vi nghiên cứu</b>

- 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]

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

<b>5) Ý nghĩa khoa học và thực tiễn</b>

<b> Ý nghĩa khoa học: </b>

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.

<b> Ý nghĩa thực tiễn:</b>

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.

<b>6) BỐ CỤC KHỐ LUẬN</b>

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]

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

<b>CHƯƠNG 1. TỔNG QUAN VỀ QUẢN TRỊ MẠNG</b>

<b>1.1. Tổng quan về quản trị mạng</b>

<b>1.1.1. Giới thiệu về quản trị mạng</b>

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 qt 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 sốt cấu hình, quản lý tài ngun 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 tồ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]

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="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 đố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.

<b>1.1.2. Kiến trúc Manager/Agent trong quản trị mạng</b>

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]

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

Cị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

<b>1.1.3. Các kiểu mơ hình quản lý mạng</b>

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.

<b> Mơ hình mạng Workgroup</b>

[12]

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="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 ngun 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 ngun 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.

<b> Mơ hình mạng Domain</b>

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 tồ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]

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

Trong 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 tồ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 ngun 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

<b>1.1.4. Nhiệm vụ của quản trị mạngNhiệm vụ quản trị mạng bao gồm:</b>

- 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]

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

<b>Trách nhiệm quản trị mạng:</b>

- Kiểm soát tài sản chung: Nếu tài ngun mạng khơng được kiểm số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 ln đị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.

<small>-</small> Kiểm sốt chi phí: theo dõi và kiểm sốt mức độ sử dụng tài nguyên để phù hợp với mức chi phí chấp nhận được.

<b>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</b>

<i><b>Quản lý cấu hình là một quá trình thiết lập và duy trì tính nhất qn về tốc</b></i>

độ, 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ủ ln 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]

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

nă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 sốt hiệu quả sự thay đổi của tồ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 qn 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 tồ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.

<b>1.2.2. Lợi ích của quản lý cấu hình</b>

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ý.

<b>1.2.3. Các tiêu chí đánh giá một hệ thống quản lý cấu hình</b>

<b> 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</b>

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.

<b> 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</b>

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]

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

<b> 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</b>

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 chun biệt mà khơng địi hỏi thay đổi mã nguồn chương trình.

<b> 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</b>

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.

<b>1.2.4. Các thủ tục triển khai quản lý cấu hình </b>

Hình 1.2. Các thủ tục triển khai Configuration Management

<b> Dentification (Nhận biết): Hành động đầu tiên đối với quản lý cấu hình là thu</b>

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.

<b> Baseline (Đường cơ sở): Sau khi dữ liệu cấu hình đã được tổng hợp và sắp xếp,</b>

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.

<b> Version Control (Kiểm sốt phiên bản): Dự án phát triển của chúng ta nên sử</b>

dụng hệ thống kiểm số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]

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

và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 ngồi. Dữ liệu bí mật chưa mã hố 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.

<b> Auditing (Kiểm tốn): Việc tổ chức dữ liệu cấu hình và thêm vào kho lưu trữ</b>

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.

<b>1.3. Tự động hố mạng1.3.1. Khái niệm</b>

<b>Tự động hóa mạng là q trình tự động hóa việc cấu hình, quản lý, kiểm</b>

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 ln 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.

<b>1.3.2. Lợi ích của tự động hóa mạng</b>

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]

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

khơ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 hồn chỉnh và trên các mơi trường trung tâm dữ liệu và đám mây.

<b>1.3.3. Một số chức năng của tự động hoá mạng</b>

<b> 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</b>

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.

<b> Quản lý phần mềm chạy trên thiết bị: Ví dụ như để kiểm tra và đảm bảo</b>

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.

<b> Kiểm tra tính tương thích: Tự động hóa mạng có khả năng độc đáo và duy</b>

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.

<b> 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>

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.

<b> 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ở</b>

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ị.

<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</b>

để 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]

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

<b>1.4. Một số công cụ quản lý cấu hình phổ biến1.4.1. Ansible</b>

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 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

<b>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. </b>

Để 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í.

<b>1.4.2. Puppet</b>

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]

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="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.

<b>1.4.3 Chef</b>

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]

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

agent. 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 ngun 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]

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

<b>CHƯƠNG 2. NGHIÊN CỨU VỀ CƠNG CỤ QUẢN LÝ CẤUHÌNH ANSIBLE</b>

<b>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 </b>

<b>2.1.1.1. Khái niệm</b>

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 tố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.

<b>2.1.1.2. Lịch sử phát triển</b>

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 tồ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]

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

SSH-2 nổi bật với các thuật tố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 tồ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.

<b>2.1.1.3. Cách thức hoạt động của SSH</b>

SSH làm việc thông qua 3 bước đơn giản:

<b> Bước 1. Định danh host:</b>

Việc định danh host được thực hiện qua việc trao đổi khố. Mỗi máy tính có hỗ trợ kiểu truyền thơng SSH có một khố định danh duy nhất. Khoá này gồm hai thành phần: khố riêng (Private key) và khố cơng cộng (Public key). Khố 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 khố 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 khố 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ã khố phiên này bằng khố riêng của mình và nhận được khoá phiên.

[24]

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

Khoá 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> Bước 2. Mã hố</b>

Sau khi hồn tất việc thiết lập phiên làm việc bảo mật (trao đổi khố, định danh), q trình trao đổi dữ liệu diễn ra thông qua một bước trung gian đó là mã hố/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> Bước 3. Chứng thực:</b>

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 ngồ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]

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

<b>2.1.2. Sơ lược về YAML2.1.2.1. Khái niệm: </b>

<b>YAML là một chuẩn dữ liệu kiểu serialization dành cho tất cả các ngơn ngữ.</b>

Nó được sử dụng phổ biến để tạo ra các file config cho nhiều ứng dụng.

<b>2.1.2.2. Cú pháp: </b>

Bảng 2. . Cú pháp YAML2

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

“A double-quoted string” <b>2.1.3. Giới thiệu về Ansible </b>

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]

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">

<b>2.1.3.1. Khái niệm Ansible </b>

<b>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</b>

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.

<b>2.1.3.2. Lịch sử phát triển Ansible</b>

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.

<b>2.1.3.3. Kiến trúc của Ansible</b>

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]

</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">

mộ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 <sup>SSH,</sup>

NETCONF <sup>HTTP (REST)</sup> <sup>HTTP (REST)</sup> 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.

<b>2.1.3.4. Ưu điểm của Ansible:</b>

<b>- Clear: Ansible sử dụng cú pháp đơn giản (YAML) và dễ hiểu đối với bất kỳ ai</b>

(developers, sysadmins, managers).

<b>- Fast: Học nhanh, cài đặt nhanh chóng và không phải cài đặt phần mềm hay</b>

daemon nào khác trên server của chúng ta

<b>- Complete: Phương pháp tiếp cận batteries included của Ansible, chúng ta có mọi</b>

thứ chúng ta cần trong một package hồn chỉnh

<b>- 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</b>

chúng ta tiết kiệm tài nguyên và dành nhiều tài ngun hơn cho các ứng dụng. Ngồ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.

<b>- Secure: Ansible sử dụng SSH và không yêu cầu thêm mở port hoặc daemon nên</b>

tránh bị truy cập vào máy chủ của bạn qua port hay daemon. [29]

</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">

- Ansible nhẹ và nhất qn, 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

<b>2.1.3.5. Một số thuật ngữ cơ bản khi sử dụng Ansible:</b>

<small></small> <b>Management Node: Là nơi ansible được cài đặt và từ đó tất cả các tasks và </b>

playbooks sẽ được chạy.

<small></small> <b> Inventory: Là file chứa thông tin các server cần quản lý. File này thường nằm </b>

tại đường dẫn /etc/ansible/hosts.

<small></small> <b> Playbook: Là file chứa các task của Ansible được ghi dưới định dạng YAML. </b>

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.

<small></small> <b>Task: Một block ghi tác vụ cần thực hiện trong playbook và các thông số liên </b>

quan.

<small></small> <b>Module: Một Module sẽ trừu tượng hóa một tác vụ hệ thống. Ansible cũng cấp </b>

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.

<small></small> <b>Role: Một tập hợp các Playbook, các template và các file khác, được tổ chức </b>

theo cách được xác định trước để tạo điều kiện tái sử dụng và chia sẻ.

<small></small> <b>Play: Là kịch bản thực thi của 1 playbook.</b>

<small></small> <b>Facts: Các biến toàn cục chứa các thông tin về hệ thống, như các network </b>

interface hay operating system.

<small></small> <b>Handlers: Sử dụng để kích hoạt thay đổi trạng thái các service, như việc ta </b>

restart hay reload một service.

<small></small> <b>Template: Là file mẫu - là các file chưa hồn thiện, cịn thiếu phần giá trị của</b>

các biến trong đó, khi thực thi ansible sẽ được hồn thiện.

<b>2.1.3.6. Cách thức hoạt động của Ansible</b>

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]

</div>

×