2012-12-30 28 views
6

Tôi có một hộp cơ sở CentOS ở Vagrant mà tôi đang đứng lên với một biểu hiện con rối. Dưới đây là những gì trong manifest cho đến nay:Bản kê rối - lệnh 'sudo'?

class base { 
    exec { "sudocmd": 
     path => ["/usr/bin/","/usr/sbin/","/bin"], 
     command => "sudo yum update -y", 
    } 

    package { "man": 
     ensure => present, 
    } 

    package { "bind": 
     ensure => present, 
    } 

    package { "bind-utils": 
     ensure => present, 
    } 
} 

include base 

Nhưng khi tôi nói vagrant up, tôi nhận được một lỗi mà sudocmd yum update thoát với một 1. Tôi đã nhìn trên web, nhưng tôi đã không tìm thấy một giải pháp cho điều này được nêu ra. Bất kỳ giúp đỡ?

======== EDIT ========= Tôi đã đọc câu trả lời và tôi đồng ý - cảm ơn các bạn. Tôi chỉ sử dụng nó trên một hộp dev để lộn xộn xung quanh và tôi cần nó để được cập nhật trước khi tôi bắt đầu làm việc trên đó.

Trả lời

3

Vì vậy, Puppet không thực sự có nghĩa là thực hiện các tác vụ như cập nhật yum. Nó là một công cụ quản lý cấu hình, chứ không phải cái gì đó thay thế hoàn toàn loại nhiệm vụ này. Ngoài ra, bạn gặp phải rất nhiều vấn đề với điều này. Điều gì sẽ xảy ra nếu Puppet được daemon hóa? Điều này có tác động tiêu cực đến môi trường sản xuất của chúng ta không? Điều gì xảy ra nếu người dùng vô tình chạy Puppet và nó cập nhật một gói phá vỡ các kịch bản lệnh của chúng tôi (JDK, MySQL, PHP, v.v.). Theo tôi biết không có giải pháp cho điều này bởi vì nó không thực sự được coi là một vấn đề. Scott gói trên Serverfault cung cấp một câu trả lời rất mô tả cho một câu hỏi tương tự.

11

Với con rối, bạn không cần sử dụng sudo, chỉ cần chạy lệnh yum trực tiếp. Các lệnh thông thường sẽ chạy dưới dạng gốc theo mặc định, nhưng bạn có thể chỉ định người dùng nào.

exec { "sudocmd": 
    path => ["/usr/bin/","/usr/sbin/","/bin"], 
    command => "yum update -y", 
    user => root, 
} 

Tuy nhiên, tôi đặc biệt khuyên bạn không nên sử dụng bất kỳ loại điều kiện không có điều kiện exec với con rối. Điều đó sẽ chạy mỗi khi con rối chạy. Như Forrest already said, nó không phải là những gì con rối được thiết kế cho. Tôi sẽ không sử dụng con rối cho yum updateexec của tôi luôn có creates, onlyif, refreshonly hoặc unless để đảm bảo chúng chỉ chạy khi cần.

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