2013-10-31 12 views
13

Hiện tại tôi có tất cả các kịch bản triển khai trong trình bao, cài đặt khoảng 10 chương trình và cấu hình chúng. Cách tôi thấy nó là một công cụ tuyệt vời cho việc này:Các ưu điểm của một công cụ triển khai như Ansible over shell

Modular: Chỉ một chương trình cho mỗi tập lệnh, theo cách này tôi có thể truyền bá chương trình trên các máy chủ khác nhau.

Đơn giản: Kịch bản lệnh cực kỳ đơn giản và không cần bất kỳ phần mềm nào khác được cài đặt.

Một lần nhấp: Tôi chỉ phải chạy tập lệnh shell một lần và mọi thứ được thiết lập.

Độc lập: Hầu hết các lập trình viên có thể tìm ra trình bao và không cần biết cách sử dụng chương trình cụ thể.

Versioning: Vì mã của tôi là trên GitHub một lần kéo Git đơn giản và khởi động lại tất cả người giám sát sẽ chạy mã mới nhất của tôi.

Với tất cả những ưu điểm này, tại sao mọi người liên tục bảo tôi sử dụng công cụ như Ansible hoặc Chef và không sử dụng trình bao?

+1

Bài viết hay mà tôi tìm thấy về chủ đề này. Nó làm một công việc tốt trong việc giải quyết các câu hỏi định kỳ bạn nhận được khi cố gắng thuyết phục sysadmins mà các công cụ như đầu bếp/ansible/con rối có giá trị nhìn: http://devopsu.com/blog/ansible-vs-shell-scripts/ –

+2

thực tế là điều này được đóng như chủ yếu dựa trên ý kiến ​​là chính xác những gì tôi thấy tình tiết tăng nặng về stackoverflow. Hầu hết những thứ quan trọng liên quan đến sự phán xét (ý kiến). – AdamC

+0

Chỉ 'Đơn giản' và 'Thuyết bất khả tri' cũng không áp dụng cho ví dụ. Ansible. – jwg

Trả lời

35

Tập lệnh shell không tệ, nếu bạn có chúng hoạt động như bạn cần.

dân đề nghị các công cụ khác (chẳng hạn như CFEngine, Múa rối, Chef, Ansible, và bất cứ điều gì khác) vì nhiều lý do, một số trong đó là:

  1. Tập cùng một lý do tại sao mọi người sử dụng các công cụ như make thay triển khai xây dựng các hệ thống có tập lệnh.
  2. idempotency: Chất lượng theo đó mất đảm bảo rằng nó có thể là một cách an toàn tái chạy bất kỳ số lần, và tại mỗi chạy nó hoặc là sẽ đến với mong muốn nhà nước, hoặc vẫn còn ở đó, hoặc ít nhất là di chuyển gần hơn với nó theo cách // hội tụ.

    Chắc chắn, bạn có thể viết kịch bản để kết quả cuối cùng là idempotent:

    # Crude example 
    grep myhost /etc/hosts || echo '1.2.3.4 myhost' >> /etc/hosts 
    

    Nhưng nó đẹp hơn rất nhiều với công cụ idempotent.

  3. Tập lệnh vỏ là bắt buộc. Các công cụ như Chef/Ansible/Puppet là khai báo. Nói chung, tuyên bố dẫn đến năng suất tốt hơn cho một số ngưỡng quy mô.

  4. DSL lấy đi một số quyền lực nhưng sau đó chúng cung cấp cho bạn thứ tự, độ sạch và các loại khác loại quyền lực. Tôi yêu kịch bản shell, nhưng tôi cũng yêu Ruby, và Puppet people yêu ngôn ngữ của họ! Nếu bạn vẫn nghĩ rằng vỏ là con đường để đi bởi vì bạn thích nó nhiều hơn, hey, bạn không có một vấn đề sau đó.

  5. [ADDED] Các gói có thể phân phối lại, có thể tái sử dụng.Ruby có đá quý, Perl có CPAN, Node có npm, Java có maven - và tất cả các ngôn ngữ đều có quy ước riêng về cách sử dụng mã nguồn có thể tái sử dụng được chia sẻ và chia sẻ với thế giới.

    Shell Scripts không.

    Đầu bếp có sách dạy nấu ăn theo quy ước và có thể được nhập khẩu giống như cách bạn nhập đá quý vào ứng dụng ruby ​​để cung cấp cho ứng dụng của bạn một số khả năng mới. Con rối có puppetforge và đó là các mô-đun, Juju có sự quyến rũ (chúng khá gần với đối với các kịch bản lệnh shell để bạn có thể quan tâm).

  6. Các công cụ thực sự đã giúp họ! Tôi là một người viết kịch bản chết cứng, và vẫn còn sáng, nhưng sử dụng Chef cho phép tôi về nhà sớm hơn, ngủ ngon, kiểm soát, di động trên hệ điều hành, tránh nhầm lẫn - lợi ích hữu hình mà tôi gặp phải sau khi từ bỏ máy chủ shell-script quy mô lớn.

+1

+1. Đã đánh dấu trang. Lời giải thích tuyệt vời. – slayedbylucifer

Các vấn đề liên quan