20 điểm bởi GN⁺ 2024-05-01 | 3 bình luận | Chia sẻ qua WhatsApp
  • 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.py rồ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

 
savvykang 2024-05-02

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.

 
xguru 2024-05-01

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.

 
GN⁺ 2024-05-01
Ý kiến Hacker News

Tóm tắt:

  • Ansible yêu cầu hệ thống đích phải có trình thông dịch Python, trong khi Pyinfra chỉ cần shell. Pyinfra là một phần mềm bị đánh giá thấp.
  • Ansible tốt, nhưng rốt cuộc bạn lại viết Python dưới dạng chuỗi YAML. Nếu vậy thì dùng Python trực tiếp ngay từ đầu sẽ tốt hơn.
  • Một nhà phát triển Pyinfra đã để lại bình luận và khuyến nghị dùng v3, hiện đang ở giai đoạn beta. Bản này ổn định và đang được chuẩn bị để phát hành chính thức.
  • Có nhiều bài đăng HN trước đây liên quan đến Pyinfra được đính kèm liên kết.
  • Một người dùng cho biết đã chuyển từ Ansible sang Pyinfra và đánh giá Pyinfra gọn gàng hơn nhiều. Họ cũng thấy rất hữu ích khi có thể dùng Pyinfra trong môi trường Fedora CoreOS không có Python.
  • Cũng có ý kiến cho rằng Puppet là công cụ phù hợp nhất trong lĩnh vực này. Nó đơn giản nhưng vẫn cung cấp khả năng như một ngôn ngữ lập trình khi cần. Tuy nhiên, về mặt khả dụng thì vẫn cần được cải thiện.
  • Việc sử dụng công cụ CM (quản lý cấu hình) có thể rất khó khăn. Ngay cả chuyên gia cũng đồng ý rằng chi phí bảo trì cao. Chúng cần phát triển theo hướng tích hợp chặt chẽ hơn với container.
  • Python có thể không phù hợp để quản lý hạ tầng. Nó có những hạn chế như build binary, khả năng tái lập gói và thiếu static typing.
  • Có giới thiệu cách kết hợp Pyinfra với Docker và Tailscale để triển khai dịch vụ một cách đơn giản. Trước đây có thể người ta sẽ dùng Kubernetes, nhưng nó quá nặng và cũng khó debug.
  • Nhờ Pyinfra mà có thể tránh được các vấn đề cố hữu của Ansible. Pyinfra cho phép định nghĩa inventory và biến một cách linh hoạt bằng script Python nên rất tiện.