Kiểm tra rối nếu có tệp


8

Tôi đang tìm cách để kiểm tra nếu một tệp tồn tại trong máy khách của tôi (chỉ kiểm tra không tạo). Tôi đã tìm thấy con đường (File.exists) trong đầu bếp nhưng điều đó không đơn giản với con rối.

Cảm ơn trước.

Câu trả lời:


6

Cách "bản địa" để thực hiện việc này mà không cần thực thi nếu bạn đang ở Puppet 2.6.6+:

file { '/path/to/myfile':
  ensure => 'present',
  audit  => 'all',
}

(Chức năng này tồn tại kể từ Puppet 2.6.0, nhưng có một số vấn đề với việc kiểm toán chỉ thực sự được khắc phục với bản phát hành 2.6.6.)

Nếu bạn đang sử dụng phiên bản cũ hơn, bạn cũng có thể yêu cầu tài nguyên chạy ở noopchế độ, nó sẽ chỉ hiển thị một thông báo khi Puppet được chạy và tệp không tồn tại:

file { '/path/to/myfile':
  ensure => 'present',
  noop   => 'true',
}

vâng Điều này thật tuyệt vời với con rối trứng phiên bản mới. ive đã làm việc với bản 2.6.0 và phải viết hàm ruby ​​của riêng tôi để kiểm tra tệp tồn tại / trống.
Bữa ăn

9

Bạn nên tạo chức năng của riêng bạn hoặc sử dụng exec với lệnh onlyif. cái gì đó như :

exec { "mycommand":
  path => "/usr/bin:/usr/sbin:/bin",
  onlyif => "test -f /etc/blalba" //yours command 
}

Đảm bảo => hiện tại sẽ tạo tập tin nếu nó không tồn tại. bazic chỉ muốn thử nghiệm và không tạo ra nó. Xem tài liệu: docs.puppetlabs.com/references/stable/type.html#file
shakalandy

Cảm ơn, nhưng không có gì thú vị trong tài liệu.
bazic

ive đã cập nhật câu trả lời của tôi
MealstroM

1
@MealstroM: Sẽ không " creates => '/etc/blabla'" tốt hơn " onlyif"?
freiheit

1
@MealstroM: Trong trường hợp cụ thể này, createssẽ có kết quả tương tự và đơn giản hơn nhiều (và nhanh hơn một chút). Vâng, nói chung onlyifkhông cung cấp linh hoạt hơn.
freiheit
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.