Ansible là gì? #
Đây là một công cụ mã nguồn mở IaC (Infrastructure as Code) phổ biến trên thị trường hiện nay, hỗ trợ người dùng trong việc tự động hóa việc cài đặt, quản lý các server / thiết bị từ xa. Ansible này được ra mắt lần đầu tiên vào ngày 20/02/2012 bởi Michael DeHaan và sau đó được Red Hat mua lại vào tháng 10/2015 (theo Wikipedia).
Ansible ban đầu được viết bằng ngôn ngữ Python kết hợp với file YAML – dùng để định nghĩa các công việc cần được thực thi, với mục tiêu hỗ trợ cấu hình cho các hệ thống Unix và Windows với kiến trúc “Agentless”.
Chức năng của Ansible #
Bên dưới là các chức năng chính của Ansible:
- Provisioning: Ansible cũng có thể khởi tạo VM (Virtual Machine), container hàng loạt trong môi trường cloud thông qua các API (OpenStack, AWS, Google Cloud, Azure…) tương tự như Terraform.
- Configuration Management: Quản lý cấu hình tập trung. Từ đó giúp người dùng không cần phải tốn thời gian cho việc chỉnh sửa cấu hình trên từng server / thiết bị.
- Application Deployment: Deploy ứng dụng hàng loạt, quản lý hiệu quả vòng đời của ứng dụng từ giai đoạn dev cho tới 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 môi trường và sản phẩm khác nhau (deploy policy, cấu hình firewall,…).
Cách thức hoạt động #
Nhờ sử dụng kiến trúc “Agentless”, người dùng sẽ không cần phải cài đặt agent ở trên các server / thiết bị chỉ định. Thay vào đó, Ansible sẽ kết nối đến thiết bị thông qua kết nối SSH / WinRM hoặc các API, sau đó thực thi việc cài đặt cũng như quản lý cấu hình của thiết bị.
Hiện tại Ansible có thể giao tiếp với rất nhiều nền tảng, hệ điều hành và các thiết bị khác nhau bao gồm:
- Hệ điều hành: Ubuntu, Centos, Windows,…
- Ảo hóa: VMware, VirtualBox,…
- Cloud: AWS, GCP, Azure, Openstack,…
- Thiết bị mạng: Cisco, Juniper, Meraki,…
Kiến trúc cơ bản của Ansible sẽ bao gồm Control Machine và Node. Trong đó:
- Control Machine: đóng vai trò quản lý, lưu trữ thông tin các Node, playbook, module, script cần thiết để deploy trên các Node.
- Node: Các thiết bị sẽ thực thi các các tác vụ do Control Machine yêu cầu.
Ansible chỉ sử dụng tài nguyên của hệ thống khi thực thi các công việc được yêu cầu. Trong trường hợp không có công việc nào cần được thực hiện, Ansible sẽ không chiếm dụng tài nguyên của hệ thống vì không có daemon hoặc tiến trình nào được chạy ẩn.
Ưu và nhược điểm #
Ưu điểm #
- Mã nguồn mở và miễn phí
- Dễ tiếp cận đối với người mới
- Đơn giản với kiến trúc “Agentless”: Đây là đặc điểm cũng như là ưu điểm của Ansible khi người dùng không cần phải cài đặt agent trên thiết bị cần cấu hình và quản lý
- Playbook được viết bằng file YAML
Nhược điểm #
- Ở thời điểm bài viết này lên sóng, Ansible chưa cung cấp giao diện người dùng – UI
- Chưa hỗ trợ tốt đối với Windows
- Chưa có gói hỗ trợ chuyên biệt cho doanh nghiệp
Nguồn tham khảo: Tổng hợp
Trung tâm đào tạo Viễn thông và Công nghệ thông tin TEL4VN (TEL4VN) chuyên đào tạo các khóa học về DevOps như: Docker, Kubernetes, Ansible, Jenkins, Linux…….Ngoài ra, TEL4VN còn là Trung tâm đào tạo duy nhất về VoIP mã nguồn mở. 🌐Website: https://tel4vn.edu.vn/ |