Làm thế nào để tôi chạy một kịch bản shell từ con rối?


8

Tôi cần phải cài đặt npmđược thực hiện bởi curl http://npmjs.org/install.sh | shvà chưa quen với việc sử dụng puppet, tôi hơi bối rối về cách thực hiện.

Tôi nhận thức rõ về việc tạo một package {}mục nhập gọi một execmục tiêu, nhưng khi tôi cài đặt npmtừ nguồn, điều này sẽ không cắt giảm.

Tôi rõ ràng không muốn xây dựng npmmỗi khi tôi puppetthực hiện thao tác kéo, vì vậy tôi cần một ngày nào đó để kiểm tra xem nó có được cài đặt hay không, vì vậy chỉ làm một exec {}mình cũng không đủ.

Tôi có thể làm gì?

Câu trả lời:


15

Cái gì đó như

exec { "install npm":
    command => "/usr/bin/curl http://npmjs.org/install.sh | sh",
    creates => "/some/directory/somewhere"
}

Nên làm thủ thuật.

Tuy nhiên, tôi sẽ mạnh mẽ khuyên làm điều này, vì nó làm cho quá trình cài đặt của bạn phụ thuộc vào rất nhiều những thứ khác làm việc một cách chính xác, và giọt file untracked người-biết-nơi trong hệ thống tập tin của bạn (và đó là ngay cả trước khi chúng tôi bắt đầu nói về những tác động an ninh của chạy mã không tin cậy và không thể xác minh tự động). Bạn sẽ tốt hơn nhiều khi tạo một gói gốc cho HĐH của mình, đặt nó vào một repo cục bộ và cài đặt nó bằng cách sử dụng tài nguyên gói.


4

Tôi sẽ "thứ hai" mọi thứ mà Womble nói về việc đóng gói và cài đặt nó thông qua các công cụ quản lý gói từ kho lưu trữ cục bộ. Tùy thuộc vào nền tảng, cũng có thể có các kho lưu trữ của bên thứ ba đáng tin cậy mà bạn có thể sử dụng.

Một câu chuyện nhỏ liên quan đến câu trả lời của Womble: hướng dẫn kiểu con rối khuyên bạn nên sử dụng dấu ngoặc đơn trừ khi bạn cần dấu ngoặc kép cho phép nội suy biến. Trong mã mà Womble hiển thị, không có biến nào, vì vậy tất cả "thay vào đó là".

Lưu ý rằng nhiều tài liệu con rối đã không được cập nhật để phản ánh đề xuất này, vì vậy bạn sẽ thấy dấu ngoặc kép ở nhiều nơi ngay cả trong các tài liệu chính thức. Cả hướng dẫn phong cách và múa rối đều phản ánh các thực tiễn tốt nhất được đề xuất hiện tại và các tài liệu cuối cùng sẽ được sửa chữa.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.