Mon. Jan 27th, 2025

Series Ansible – Bài 1 – Tổng quan về Ansible

By admin Mar 23, 2024
Ansibe

Ansible là gì?

Ansible là là một công cụ phần mềm cung cấp khả năng tự động hóa đơn giản nhưng mạnh mẽ để hỗ trợ đa nền tảng. Nó chủ yếu dành cho các những người sử dụng nó để triển khai ứng dụng, hoặc DevOps , cập nhật đồng loạt trên các server cùng lúc, quản lý cấu hình (configuration management), điều phối nội bộ dịch vụ (intra-service orchestration) và gần như mọi thứ mà bạn thực hiện trên server hàng tuần hoặc hàng ngày. Ansible rất dễ triển khai.

Một số công cụ tương tự như Saltstack, Puppet,…

Ansibe

Mục đích

Mục đích chính của Ansible là tự động hóa việc triển khai, quản lý và cấu hình hệ thống máy tính và mạng. Ansible là một công cụ mã nguồn mở và được phát triển để giúp các nhà quản trị hệ thống và lập trình viên quản lý một số lượng lớn các máy chủ và thiết bị mạng một cách hiệu quả và nhất quán.

Các mục tiêu chính của Ansible bao gồm:

  1. Đơn giản: Ansible được thiết kế để dễ sử dụng, không yêu cầu kiến thức chuyên sâu về lập trình và không cần cài đặt phần mềm phức tạp trên các nút đích.
  2. Dễ dàng triển khai: Ansible cho phép triển khai các ứng dụng và cấu hình hệ thống trên nhiều máy chủ cùng một lúc, giúp tiết kiệm thời gian và công sức.
  3. Khả năng mở rộng: Ansible hỗ trợ quản lý một lượng lớn các máy chủ và thiết bị mạng, cho phép mở rộng hệ thống một cách linh hoạt.
  4. Nhất quán: Ansible đảm bảo rằng các máy chủ và thiết bị mạng được duy trì ở trạng thái nhất quán, giúp đảm bảo tính ổn định và tin cậy của hệ thống.
  5. Tự động hóa: Ansible cung cấp khả năng tự động hóa các tác vụ quản lý hệ thống, từ việc triển khai ứng dụng, cài đặt phần mềm, đến cấu hình hệ thống và kiểm tra tình trạng của các máy chủ và thiết bị mạng.

Với các tính năng và mục tiêu này, Ansible giúp tăng cường hiệu suất và năng suất của các nhà quản trị hệ thống và lập trình viên, đồng thời đảm bảo tính nhất quán và tin cậy của hệ thống.

Tại sao nên sử dụng Ansible?

Hiện nay có rất nhiều các tool quản lý cấu hình vậy tại sao nên lựa chọn Ansible? Có rất nhiều lý do khiến bạn không nên bỏ qua tool này:

  • Là một opensource và được sử dụng miễn phí.
  • Sử dụng phương thức ssh
  • Không tốn nhiều tài nguyên khi cài đặt
  • Được phát triển bởi ngôn ngữ python, khi tạo thêm module cũng sẽ sử dụng ngôn ngữ này.
  • Khá nhẹ và dễ setup
  • Các sciprt chủ yếu được dùng định dạng YAML
  • Trên Ansible có một cộng đồng tương tác lớn, dễ dàng giao lưu học hỏi.

Kiến trúc của Ansible là gì?

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à hoàn toà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à 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, SaltStack, Puppet (trong đó Salt có hỗ trợ cả 2 mode là agent và agentless).

Ứng dụng của Ansible hiện nay

Ansible được sử dụng rất nhiều trong triển khai phần mềm và quản trị hệ thống.

  • Provisioning: Khởi tạo VM, container hàng loạt trên cloud dựa trên API – OpenStack, AWS, Google Cloud, Azure…
  • Configuration Management: Quản lý cấu hình tập trung các dịch vụ, không cần phải tốn công chỉnh sửa cấu hình trên từng server.
  • Application Deployment: Deploy ứng dụng hàng loạt, giúp quản lý hiệu quả vòng đời của ứng dụng từ giai đoạn dev cho đến production.
  • Security & Compliance: Quản lý các chính sách về an toàn thông tin một cách đồng bộ trên nhiều sản phẩm và môi trường khác nhau như deploy policy hay cấu hình firewall hàng loạt trên nhiều server,…

Thành phần chính của ansible

Ansible bao gồm các thành phần chính sau:

  1. Control Node (Nút điều khiển): Đây là máy tính hoặc máy chủ nơi bạn cài đặt và chạy Ansible. Nút điều khiển là nơi bạn định nghĩa, tổ chức và thực thi các tác vụ Ansible. Nút điều khiển cần được cấu hình để có thể truy cập vào các nút đích thông qua SSH hoặc WinRM.
  2. Inventory (Danh sách máy chủ): Inventory chứa thông tin về các máy chủ hoặc nhóm máy chủ mà Ansible sẽ quản lý. Đây là nơi bạn liệt kê các địa chỉ IP hoặc tên máy chủ, cùng với các biến môi trường và nhóm máy chủ tương ứng. Inventory có thể được lưu trữ trong một tệp cấu hình YAML hoặc trên một hệ thống quản lý kho lưu trữ như AWS EC2 hoặc OpenStack.
  3. Playbook: Playbook là một tệp YAML chứa các tác vụ và quy trình mà Ansible sẽ thực hiện trên các máy chủ. Playbook định nghĩa các nhiệm vụ cần được thực hiện, các biến sử dụng và các yêu cầu khác để cấu hình hệ thống. Playbook cho phép bạn mô tả và tự động hóa quy trình triển khai và quản lý hệ thống.
  4. Modules (Mô-đun): Ansible sử dụng các mô-đun để thực hiện các tác vụ trên các máy chủ. Các mô-đun là các phần mềm nhỏ được thực thi trên máy chủ đích để thực hiện các thao tác như cài đặt phần mềm, cấu hình hệ thống, tạo người dùng và nhiều hoạt động khác. Ansible đi kèm với một số mô-đun tích hợp sẵn và bạn cũng có thể viết các mô-đun tùy chỉnh của riêng mình.
  5. Play: Một play trong Ansible là một tập hợp các tác vụ liên quan được thực hiện trên một nhóm máy chủ cụ thể. Play bao gồm một danh sách các nhiệm vụ và một tập hợp các máy chủ hoặc nhóm máy chủ được áp dụng. Trong mỗi play, Ansible thực hiện các nhiệm vụ theo thứ tự và đảm bảo tính nhất quán giữa các máy chủ.
  6. Roles: Roles là cách tổ chức và chia sẻ mã Ansible. Một vai trò bao gồm các tệp playbook, các mô-đun, các biến và các tệp mẫu liên quan đến một chức năng cụ thể của hệ thống. Roles giúp bạn tái sử dụng mã Ansible, tạo thành các thành phần độc lập và dễ dàng quản lý và chia sẻ lại.

Cách hoạt động của ansible.

Ansible hoạt động dựa trên mô hình “Push-based” (đẩy dữ liệu) và sử dụng SSH (hoặc WinRM trên Windows) để kết nối và thực hiện các tác vụ trên các máy chủ đích. Dưới đây là cách hoạt động cơ bản của Ansible:

  1. Kết nối SSH: Trước khi thực hiện bất kỳ tác vụ nào, Ansible sẽ thiết lập kết nối SSH (hoặc WinRM) từ nút điều khiển đến các máy chủ đích. Điều này đòi hỏi nút điều khiển được cấu hình để có quyền truy cập SSH (hoặc WinRM) vào các máy chủ mục tiêu.
  2. Xác định Inventory: Ansible sử dụng thông tin từ Inventory để biết danh sách các máy chủ cần quản lý và thực hiện tác vụ. Inventory có thể được cấu hình trực tiếp trong tệp YAML hoặc đọc từ các hệ thống quản lý kho lưu trữ như AWS EC2 hoặc OpenStack.
  3. Playbooks và Roles: Ansible sử dụng Playbooks để định nghĩa các tác vụ và quy trình cần thực hiện trên các máy chủ. Playbook là một tệp YAML chứa danh sách các nhiệm vụ và các máy chủ hoặc nhóm máy chủ áp dụng. Playbooks có thể chứa các Roles, đây là cách để tổ chức và chia sẻ mã Ansible.
  4. Modules và Tasks: Mỗi nhiệm vụ trong Playbook được thực hiện bằng cách sử dụng các Modules. Các Modules là các phần mềm nhỏ được thực thi trên máy chủ đích để thực hiện các tác vụ như cài đặt phần mềm, cấu hình hệ thống, tạo người dùng và nhiều hoạt động khác. Ansible cung cấp một số Modules tích hợp sẵn và bạn cũng có thể viết các Modules tùy chỉnh của riêng mình.
  5. Thực thi Playbooks: Khi Ansible chạy, nó sẽ áp dụng các Playbooks và thực hiện các nhiệm vụ tương ứng trên các máy chủ đích. Ansible đảm bảo tính nhất quán trong việc thực hiện các nhiệm vụ trên các máy chủ và theo thứ tự được xác định trong Playbook.
  6. Báo cáo kết quả: Sau khi hoàn thành việc thực hiện các Playbooks, Ansible sẽ trả về kết quả và báo cáo về trạng thái thực hiện của từng nhiệm vụ trên các máy chủ. Điều này giúp bạn kiểm tra và xác nhận rằng các tác vụ đã được thực hiện thành công.

Ansible được thiết kế để đơn giản, dễ sử dụng và tự động hóa việc quản lý hệ thống. Với cách hoạt động này, Ansible giúp bạn triển khai và cấu hình hệ thống một cách nhất quán và tin cậy, đồng thời tăng cường hiệu suất và năng suất trong quản lý hệ thống.

Ansible

Hy vọng bài này các bạn nắm sơ qua về Ansible, những bài sau chúng ta chú trọng hơn về việc thực hành nó!!

Ngoài ra các bạn có thể theo dõi Series này tại đây. Tại bài sau chúng ta sẽ tiến hành cài đặt và chạy kiểm tra cơ bản.

Cảm ơn các bạn đã đọc !!

Tài liệu tham khảo : https://opensource.com/resources/what-ansible

 

By admin

Related Post

Leave a Reply

Your email address will not be published. Required fields are marked *

error: Content is protected !!
Don`t copy text!