Pyinfra: Công cụ tự động hóa hạ tầng bằng Python
(pyinfra.com)- Công cụ tự động hóa hạ tầng bằng Python
- Có thể mở rộng nhanh chóng từ một máy chủ đơn lẻ đến hàng nghìn máy chủ
- Phù hợp để chạy lệnh tạm thời, triển khai dịch vụ, quản lý cấu hình và hơn thế nữa
Vì sao nên dùng pyinfra
- Có thể chạy cực nhanh trên hàng nghìn mục tiêu với hiệu năng ổn định, dễ dự đoán
- Có thể gỡ lỗi ngay lập tức với đầu ra stdin/stdout/stderr theo thời gian thực (
-vvv) - Hỗ trợ diff và dry run trước khi áp dụng thay đổi, mang lại tính idempotent (idempotent operations)
- Có khả năng mở rộng nhờ toàn bộ hệ sinh thái gói Python
- Có thể chạy không cần agent trên mọi thiết bị có thể dùng SSH
- Tích hợp với các connector như Docker, Terraform, Vagrant, v.v.
Bắt đầu nhanh
- Cài đặt pyinfra bằng lệnh
pip install pyinfra - Có thể thực thi lệnh qua SSH
pyinfra my-server.net exec -- echo "hello world"
- Có thể chỉ định mục tiêu là Docker, máy cục bộ và các connector khác
pyinfra @docker/ubuntu exec -- echo "Hello world"pyinfra @local exec -- echo "Hello world"
- Ngoài việc chạy lệnh, cũng có thể dùng các tác vụ để định nghĩa trạng thái
pyinfra @docker/ubuntu apt.packages iftop update=true _sudo=true
- Có thể lưu nội dung này thành tệp Python như
deploy.pyrồi chạy - Có thể kết hợp inventory, tác vụ và mã Python để triển khai mọi thứ
Để biết thêm chi tiết, hãy xem hướng dẫn bắt đầu, hướng dẫn sử dụng tác vụ, cách dùng inventory và dữ liệu, cách dùng đối số toàn cục và CLI, hoặc tham khảo các ví dụ đã được tài liệu hóa.
Ý kiến của GN⁺
- Với vai trò là công cụ triển khai, tính an toàn và khả năng kiểm soát rất quan trọng, nhưng vì công cụ này tập trung vào chức năng quản lý hạ tầng nên có thể phát sinh vấn đề trong quy trình triển khai
- Bản thân pyinfra không ép buộc các best practice về triển khai, nên nhóm cần tự đặt ra quy tắc và quản lý riêng
- Việc dùng Python là một lợi thế vì có thể tận dụng hệ sinh thái Python và quen thuộc với lập trình viên, nhưng cũng tạo ra rào cản gia nhập cao hơn so với một số công cụ triển khai phổ biến khác
- Có vẻ đây là công cụ phù hợp cho các kịch bản triển khai đơn giản và linh hoạt; còn với các triển khai phức tạp cấp doanh nghiệp, những công cụ trưởng thành hơn như Ansible, Puppet có thể phù hợp hơn
- Việc tích hợp với các công cụ IaC như Terraform hay Pulumi là điểm tốt, nhưng cũng đặt ra câu hỏi liệu có nhiều tác vụ mà chỉ riêng chúng không làm được hay không
3 bình luận
Tôi nghĩ Ansible cần một cách định nghĩa playbook ngoài YAML. Ansible đang cung cấp lại các tính năng của Python bằng cách tái triển khai chúng thành các bộ lọc jinja để xử lý dữ liệu, và tôi thấy đó là một sự lãng phí rất lớn. Nếu schema của fact trong playbook trùng khớp với đầu vào của task thì không sao, nhưng trong thực tế, tình huống bắt buộc phải xử lý dữ liệu trung gian xảy ra thường xuyên hơn nhiều. Tôi cũng tự hỏi liệu việc dùng Jinja cho xử lý dữ liệu có phải là một quyết định kỹ thuật khá thiển cận hay không.
pyinfra - Công cụ tự động hóa hạ tầng dựa trên Python
Trước đây khi phát hành bản 1.0 tôi đã từng đăng một lần, nhưng dự án vẫn đang được cập nhật rất tích cực.
Hiện tại là phiên bản 2.92 và bản 3.0 hiện đang ở giai đoạn beta dự kiến sẽ sớm được phát hành.
Ý kiến Hacker News
Tóm tắt: