Các khái niệm này là chung cho tất cả các ứng dụng của Ansible, bao gồm tự động hóa mạng. Bạn cần hiểu chúng để sử dụng Ansible cho tự động hóa mạng. Sự giới thiệu cơ bản này cung cấp các kiến thức cơ bản mà bạn cần để làm theo các ví dụ trong hướng dẫn này.
Control node
Trong Ansible, Control node là máy tính từ đó bạn chạy các công cụ CLI của Ansible (ansible-playbook ansible, ansible-vault và các công cụ khác). Bạn có thể sử dụng bất kỳ máy tính nào đáp ứng các yêu cầu phần mềm làm Control node, chẳng hạn như laptop, máy tính để bàn chung hoặc máy chủ. Các Managed nodes (hoặc hosts) là các thiết bị mục tiêu (máy chủ, các thiết bị mạng hoặc bất kỳ máy tính nào) mà bạn muốn quản lý với Ansible. Ansible thường không được cài đặt trên Managed nodes, trừ khi bạn đang sử dụng ansible-pull, nhưng đây là một thiết lập hiếm và không được khuyến khích.
Managed nodes
Managed node hay còn được gọi là ‘host’ là các thiết bị mục tiêu (máy chủ, thiết bị mạng hoặc bất kỳ máy tính nào) mà bạn muốn quản lý bằng Ansible. Ansible thường không được cài đặt trên các nút được quản lý, trừ khi bạn sử dụng ansible-pull, nhưng đây là một thiết lập hiếm và không được khuyến khích.
Inventory
Inventory là một danh sách các Managed nodes do một hoặc nhiều nguồn ‘inventory sources’ cung cấp. Inventory của bạn có thể chỉ định thông tin cụ thể cho mỗi node, chẳng hạn như địa chỉ IP. Nó cũng được sử dụng để phân loại thành các nhóm, cho phép chọn node trong Play và phân bổ biến số hàng loạt. Playbooks chứa Plays (đây là đơn vị cơ bản của thực thi Ansible). Đây là một khái niệm ‘thực thi’ và cách chúng ta mô tả các file mà ansible-playbook hoạt động. Playbooks được viết bằng YAML và dễ đọc, viết, chia sẻ và hiểu. Các Plays là ngữ cảnh chính cho thực thi Ansible. Nó ánh xạ các Managed nodes (hosts) thành các Task. Role là một phân phối giới hạn của nội dung Ansible có thể tái sử dụng (tasks, handlers, biến, plugin, template và file) để sử dụng trong Play.
Playbooks
Playbooks chứa các Plays (đây là đơn vị cơ bản của thực thi Ansible). Playbooks được viết bằng YAML và dễ đọc, viết, chia sẻ và hiểu. Mỗi Playbook có một danh sách các nhiệm vụ (tasks) và biến, và nó có thể được chạy nhiều lần.
Plays
Ngữ cảnh chính cho thực thi Ansible, đối tượng playbook này ánh xạ các nút được quản lý (hosts) sang các tác vụ. Play chứa các biến, vai trò và một danh sách các tác vụ được sắp xếp và có thể được chạy lặp lại.Nó về cơ bản bao gồm một vòng lặp ngầm định trên các host và task đã được ánh xạ, nó xác định cách thức lặp lại chúng. Với mỗi host, Ansible thực hiện các task được xác định trong playbook và sử dụng các module để thực hiện các công việc cụ thể trên host đó. Kết quả của mỗi task sẽ được thu thập và trả về bởi Ansible, và nó sẽ tiếp tục thực hiện các task khác cho đến khi tất cả các task được hoàn thành trên tất cả các host được xác định trong playbook. Kết quả cuối cùng của quá trình triển khai được trả về cho người dùng để xem xét.
Roles
Roles trong Ansible là một khái niệm quan trọng để tái sử dụng nội dung của Ansible. Chúng là một bộ sưu tập các tài nguyên Ansible, bao gồm các task, handler, biến, plugin, template và file, được sắp xếp theo chức năng nhất định để thực hiện một tác vụ cụ thể. Với Roles, bạn có thể tổ chức và quản lý tài nguyên Ansible theo cách dễ dàng hơn, giúp cho việc phát triển và bảo trì các Playbooks trở nên thuận tiện hơn.
Khi sử dụng Roles, bạn có thể sử dụng lại các tài nguyên của Ansible trong các Playbook khác nhau mà không cần phải viết lại các task, handler, biến, plugin, template và file. Roles cung cấp khả năng tổ chức và quản lý tài nguyên Ansible một cách rõ ràng và có cấu trúc hơn. Điều này giúp giảm thiểu số lượng mã lặp lại, cải thiện khả năng tái sử dụng và tiết kiệm thời gian và công sức trong quá trình phát triển và bảo trì các Playbook.
Để sử dụng các tài nguyên của Roles, bạn cần phải import chúng vào Playbook. Các Roles cũng có thể được nhóm lại với nhau để tạo thành các Role thứ cấp hoặc thậm chí là Role thứ ba. Các Role có thể được tìm thấy và tải xuống từ Ansible Galaxy, một kho lưu trữ công cộng các Roles, Playbooks và các tài nguyên khác cho Ansible.
Tasks (Công việc)
Tasks định nghĩa một “hành động” được áp dụng lên các host được quản lý. Tasks phải luôn nằm trong một Play, trực tiếp hoặc gián tiếp (Role, hoặc file danh sách tasks được nhập hoặc bao gồm). Bạn có thể thực hiện một task đơn lẻ một lần với một lệnh ad hoc sử dụng ansible hoặc ansible-console (cả hai đều tạo ra một Play ảo).
Handlers (Người xử lý)
Handlers là một dạng đặc biệt của Task, chỉ được thực thi khi được thông báo bởi Task trước đó kết quả là trạng thái ‘changed’.
Modules (Mô-đun)
Module là mã hoặc nhị phân mà Ansible sao chép và thực thi trên mỗi nút được quản lý (khi cần) để hoàn thành hành động được định nghĩa trong mỗi Task. Mỗi module có một ứng dụng cụ thể, từ quản lý người dùng trên loại cơ sở dữ liệu cụ thể đến quản lý các giao diện VLAN trên thiết bị mạng cụ thể. Bạn có thể gọi một module đơn lẻ với một task, hoặc gọi nhiều module khác nhau trong một playbook. Các module Ansible được nhóm thành các bộ sưu tập. Để biết ý tưởng về số lượng bộ sưu tập mà Ansible bao gồm, xem Collection Index.
Plugins (Các plugin)
Các plugin là các đoạn mã mở rộng khả năng cốt lõi của Ansible, chúng có thể kiểm soát cách kết nối đến các nút được quản lý (plugin kết nối), thao tác với dữ liệu (plugin bộ lọc) và thậm chí kiểm soát những gì được hiển thị trên màn hình console (plugin callback). Xem Working with plugins để biết chi tiết.
Collections (Bộ sưu tập)
Collections là một định dạng mà nội dung Ansible được phân phối và có thể chứa playbooks, roles, modules và plugins. Bạn có thể cài đặt và sử dụng các bộ sưu tập thông qua Ansible Galaxy. Để biết thêm thông tin về bộ sưu tập, hãy xem Using Ansible collections. Tài nguyên bộ sưu tập có thể được sử dụng độc lập và rời rạc với nhau.
AAP (Ansible Automation Platform)
Ansible Automation Platform (AAP) là một sản phẩm của Red Hat cung cấp một nền tảng tự động hóa công việc để quản lý hạ tầng IT. AAP tích hợp nhiều công cụ của hệ sinh thái Ansible, bao gồm ansible-core, awx, galaxyNG, và nhiều công cụ khác.
Các tính năng của AAP bao gồm:
- Quản lý dễ dàng: AAP cung cấp một giao diện quản lý trực quan và dễ sử dụng, giúp người dùng quản lý các nhiệm vụ tự động hóa và theo dõi tình trạng của chúng.
- Tự động hóa toàn bộ chu trình: AAP cung cấp khả năng tự động hóa các công việc từ đầu đến cuối, bao gồm phát hiện các thiết bị mạng, triển khai phần mềm và cấu hình hệ thống.
- Quản lý quy trình: AAP cho phép người dùng quản lý và tùy chỉnh các quy trình tự động hóa để đáp ứng các yêu cầu cụ thể của họ.
- Tích hợp đa nền tảng: AAP hỗ trợ nhiều nền tảng khác nhau, bao gồm các hệ thống máy chủ, mạng và đám mây.
- Bảo mật cao: AAP cung cấp các tính năng bảo mật mạnh mẽ như xác thực hai yếu tố, mã hóa và kiểm tra chữ ký số để bảo vệ các dữ liệu quan trọng.
Tóm lại, AAP là một nền tảng tự động hóa công việc toàn diện và tiện ích cho việc quản lý hạ tầng IT.