Giới thiệu về quản lý cấu hình với Ansible
Quản lý cấu hình là quá trình xử lý các thay đổi đối với hệ thống theo cách đảm bảo tính toàn vẹn theo thời gian, thường liên quan đến các công cụ và quy trình hỗ trợ tự động hóa và khả năng quan sát. Mặc dù khái niệm này không bắt nguồn từ ngành CNTT, nhưng thuật ngữ này được sử dụng rộng rãi để chỉ quản lý cấu hình server .Trong ngữ cảnh của server , quản lý cấu hình cũng thường được gọi là Tự động hóa CNTT hoặc Điều phối server . Cả hai thuật ngữ đều nêu bật các khía cạnh thực tế của quản lý cấu hình và khả năng kiểm soát nhiều hệ thống từ một server trung tâm.
Hướng dẫn này sẽ hướng dẫn bạn những lợi ích của việc sử dụng công cụ quản lý cấu hình để tự động cài đặt cơ sở hạ tầng server của bạn và cách một công cụ như vậy, Ansible , có thể giúp bạn điều đó.
Lợi ích của việc sử dụng công cụ quản lý cấu hình
Có một số công cụ quản lý cấu hình có sẵn trên thị trường, với mức độ phức tạp khác nhau và phong cách kiến trúc đa dạng. Mặc dù mỗi công cụ này có đặc điểm riêng và hoạt động theo những cách hơi khác nhau, nhưng tất cả chúng đều cung cấp chức năng giống nhau: đảm bảo trạng thái của hệ thống trùng với trạng thái được mô tả bởi một bộ tập lệnh cung cấp .
Nhiều lợi ích của việc quản lý cấu hình cho server đến từ khả năng xác định cơ sở hạ tầng của bạn dưới dạng mã. Điều này cho phép bạn:
- Sử dụng hệ thống kiểm soát version để theo dõi mọi thay đổi trong cơ sở hạ tầng của bạn
- Sử dụng lại các tập lệnh cấp phép cho nhiều môi trường server , chẳng hạn như phát triển, thử nghiệm và production
- Chia sẻ các tập lệnh cấp phép giữa các đồng nghiệp để tạo điều kiện cộng tác trong môi trường phát triển chuẩn hóa
- Hợp lý hóa quá trình sao chép server , tạo điều kiện thuận lợi cho việc khôi phục các lỗi nghiêm trọng
Ngoài ra, các công cụ quản lý cấu hình cung cấp cho bạn cách kiểm soát một đến hàng trăm server từ một vị trí tập trung, có thể cải thiện đáng kể hiệu quả và tính toàn vẹn của cơ sở hạ tầng server của bạn.
Tổng quan Ansible
Ansible là một công cụ quản lý cấu hình hiện đại tạo điều kiện thuận lợi cho công việc cài đặt và bảo trì các server từ xa, với thiết kế tối giản nhằm giúp user cài đặt và chạy nhanh chóng.
User 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 user không bị ràng buộc với bất kỳ ngôn ngữ lập trình cụ thể nào. Điều này cho phép user tạo 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ụ tương tự trong cùng danh mục.
Ansible không yêu cầu cài đặt bất kỳ phần mềm đặc biệt nào trên các node sẽ được quản lý bằng công cụ này. Một máy điều khiển được cài đặt với phần mềm Ansible, phần mềm này sau đó giao tiếp với các node thông qua SSH tiêu chuẩn.
Là một công cụ quản lý cấu hình và khuôn khổ tự động hóa, Ansible gói gọn tất cả các tính năng phổ biến có trong các công cụ cùng loại khác, trong khi vẫn duy trì sự tập trung mạnh mẽ vào tính đơn giản và hiệu suất:
Hành vi lý tưởng
Ansible theo dõi trạng thái của tài nguyên trong các hệ thống được quản lý để tránh lặp lại các việc đã được thực hiện trước đó. Nếu một gói đã được cài đặt, nó sẽ không cố cài đặt lại. Mục tiêu là sau mỗi lần thực thi cấp phép, hệ thống đạt (hoặc giữ) trạng thái mong muốn, ngay cả khi bạn chạy nó nhiều lần. Đây là những gì đặc trưng cho Ansible và các công cụ quản lý cấu hình khác là có một hành vi không cố định .Khi chạy playbook, bạn sẽ thấy trạng thái của từng tác vụ đang được thực thi và liệu tác vụ đó có thực hiện thay đổi trong hệ thống hay không.
Hỗ trợ các biến, điều kiện và vòng lặp
Khi viết kịch bản tự động hóa Ansible, bạn có thể sử dụng các biến, điều kiện và vòng lặp để làm cho quá trình tự động hóa của bạn linh hoạt và hiệu quả hơn.
Sự kiện hệ thống
Ansible thu thập một loạt thông tin chi tiết về các node được quản lý, chẳng hạn như network interface và hệ điều hành, và cung cấp nó dưới dạng các biến toàn cục được gọi là dữ kiện hệ thống . Facts được dùng trong playbook để làm cho tự động hóa của bạn linh hoạt hơn và thích ứng hơn, hoạt động khác nhau tùy thuộc vào hệ thống được cung cấp.
Hệ thống đúc
Ansible sử dụng hệ thống tạo khuôn mẫu Python Jinja2 để cho phép các biểu thức động và quyền truy cập vào các biến. Các mẫu được dùng để tạo thuận lợi cho việc cài đặt các file và dịch vụ cấu hình. Ví dụ: bạn có thể sử dụng một mẫu để cài đặt một server ảo mới trong Apache, trong khi sử dụng lại cùng một mẫu cho nhiều cài đặt server .
Hỗ trợ cho các phần mở rộng và module
Ansible đi kèm với hàng trăm module tích hợp để tạo điều kiện tự động hóa việc viết cho các việc quản trị hệ thống thông thường, chẳng hạn như cài đặt các gói có apt
và đồng bộ hóa file với rsync
và cũng để xử lý phần mềm phổ biến như hệ thống database (như MySQL, PostgreSQL, MongoDB, và các công cụ khác) và các công cụ quản lý phụ thuộc (chẳng hạn như trình composer
của PHP, gem
của Ruby, npm
của Node và những công cụ khác). Ngoài ra, có nhiều cách khác nhau để bạn có thể mở rộng Ansible: plugin và module là những lựa chọn tốt khi bạn cần một chức năng tùy chỉnh không có sẵn theo mặc định.
Bạn cũng có thể tìm thấy các module và plugin của bên thứ ba trong cổng Ansible Galaxy .
Làm quen với các khái niệm Ansible
Bây giờ ta sẽ xem xét các thuật ngữ và khái niệm Ansible để giúp bạn làm quen với các thuật ngữ này khi chúng xuất hiện trong suốt loạt bài này.
Nút điều khiển
Nút điều khiển là một hệ thống mà Ansible được cài đặt và cài đặt để kết nối với server của bạn. Bạn có thể có nhiều nút điều khiển và bất kỳ hệ thống nào có khả năng chạy Ansible đều có thể được cài đặt làm nút điều khiển, bao gồm máy tính cá nhân hoặc notebook chạy hệ điều hành dựa trên Linux hoặc Unix. Hiện tại, Ansible không thể được cài đặt trên các server Windows, nhưng bạn có thể vượt qua giới hạn này bằng cách cài đặt một máy ảo chạy Linux và chạy Ansible từ đó.
Các node được quản lý
Các hệ thống bạn kiểm soát bằng Ansible được gọi là các node được quản lý . Ansible yêu cầu các node được quản lý có thể truy cập được qua SSH và phải cài đặt Python 2 (phiên bản 2.6 trở lên) hoặc Python 3 (phiên bản 3.5 trở lên).
Ansible hỗ trợ nhiều hệ điều hành bao gồm các server Windows dưới dạng các node được quản lý.
Hàng tồn kho
Tệp khoảng không quảng cáo chứa danh sách các server mà bạn sẽ quản lý bằng Ansible. Mặc dù Ansible thường tạo file kiểm kê mặc định khi được cài đặt, nhưng bạn có thể sử dụng kiểm kê cho mỗi dự án để phân tách cơ sở hạ tầng của bạn tốt hơn và tránh do nhầm lẫn chạy lệnh hoặc sách phát trên server sai. Khoảng không quảng cáo tĩnh thường được tạo dưới dạng file .ini
, nhưng bạn cũng có thể sử dụng khoảng không quảng cáo được tạo động được viết bằng bất kỳ ngôn ngữ lập trình nào có thể trả về JSON.
Nhiệm vụ
Trong Ansible, một nhiệm vụ là một đơn vị công việc riêng lẻ để thực thi trên một nút được quản lý. Mỗi hành động cần thực hiện được định nghĩa là một nhiệm vụ. Các việc có thể được thực hiện như một hành động một lần thông qua các lệnh đặc biệt hoặc được đưa vào sách phát như một phần của tập lệnh tự động hóa.
Playbook
Playbook chứa danh sách các nhiệm vụ được sắp xếp theo thứ tự và một số chỉ thị khác để cho biết server nào là mục tiêu của quá trình tự động hóa đó, có sử dụng hệ thống leo thang quyền để chạy các việc đó hay không và các phần tùy chọn để xác định biến hoặc bao gồm file . Ansible thực thi các việc một cách tuần tự và việc thực thi toàn bộ playbook được gọi là một vở kịch . Playbook được viết ở định dạng YAML.
Người xử lý
Trình xử lý được sử dụng để thực hiện các hành động trên một dịch vụ, chẳng hạn như khởi động lại hoặc dừng một dịch vụ đang hoạt động tích cực trên hệ thống của nút được quản lý. Các trình xử lý thường được kích hoạt bởi các nhiệm vụ và việc thực thi chúng diễn ra ở cuối một lượt chơi, sau khi tất cả các nhiệm vụ đã kết thúc. Bằng cách này, ví dụ: nếu nhiều tác vụ kích hoạt khởi động lại một dịch vụ, thì dịch vụ sẽ chỉ được khởi động lại một lần và sau khi tất cả các việc được thực thi. Mặc dù hành vi xử lý mặc định hiệu quả hơn và nhìn chung là một thực tiễn tốt hơn, nhưng cũng có thể buộc thực hiện trình xử lý ngay lập tức nếu điều đó được yêu cầu bởi một tác vụ.
Role
Role là một tập hợp các sách vở và các file liên quan được tổ chức thành một cấu trúc được định nghĩa mà Ansible biết. Các role tạo điều kiện thuận lợi cho việc tái sử dụng và định vị lại sách vở thành các gói tự động hóa chi tiết có thể chia sẻ cho các mục tiêu cụ thể, chẳng hạn như cài đặt web server , cài đặt môi trường PHP hoặc cài đặt server MySQL.
Kết luận
Ansible là một công cụ tự động hóa CNTT tối giản có đường cong học tập nhẹ nhàng, một phần nhờ vào việc sử dụng YAML cho các tập lệnh cung cấp của nó. Nó có một số lượng lớn các module tích hợp được dùng cho các việc trừu tượng như cài đặt các gói và làm việc với các mẫu. Các yêu cầu về cơ sở hạ tầng được đơn giản hóa và cú pháp có thể truy cập của nó có thể phù hợp cho những ai đang bắt đầu quản lý cấu hình.
Trong phần tiếp theo của loạt bài này , ta sẽ xem cách cài đặt và bắt đầu với Ansible trên server Ubuntu 20.04 .
Các tin liên quan