2012-03-01 16 views
7

Tôi đang cài đặt gói từ mô-đun (Nginx trong trường hợp cụ thể này) và muốn bao gồm tệp cấu hình từ bên ngoài mô-đun, tức là từ thư mục files cấp cao nhất song song với cấp cao nhất manifests thư mục. Tôi không thấy bất kỳ cách nào để nguồn tập tin mặc dù không bao gồm nó trong một mô-đun hoặc trong môi trường Vagrant hiện tại của tôi đề cập đến con đường địa phương tuyệt đối.Tìm nguồn cung cấp Tệp rối từ bên ngoài mô-đun

Puppet có cho phép tìm nguồn cung cấp tệp từ bên ngoài mô-đun như được mô tả trong tài liệu không?

Trả lời

3

nếu tôi hiểu chính xác câu hỏi của bạn, bạn có thể. Trong mô-đun của bạn, một mã đơn giản như thế này

file { '/path/to/file': 
    ensure => present, 
    source => [ 
       "puppet:///files/${fqdn}/path/to/file", 
       "puppet:///files/${hostgroup}/path/to/file", 
       "puppet:///files/${domain}/path/to/file", 
       "puppet:///files/global/path/to/file", 
    ], 
} 

sẽ thực hiện công việc. /đường dẫn/đến/tệp sẽ được lấy nguồn bằng tệp nằm trong phần chia sẻ tệp "tệp". (trong ví dụ trên, nó tìm kiếm ở 4 vị trí khác nhau).

cập nhật có lẽ bạn đang nói về một thư mục để lưu trữ các tập tin mà không được chia sẻ bởi Múa rối fileserver (nhìn vào http://docs.puppetlabs.com/guides/file_serving.html), và trong trường hợp này, bạn tôi không thể nghĩ, Vagrant hay không, nhưng bạn có thể thêm nó vào máy chủ tập tin con rối của bạn để làm điều đó. Tôi nghĩ đó là cách tốt nhất (và có thể chỉ) để làm điều đó.

1

Nếu bạn có một số máy ảo Vagrant, bạn có thể chỉ lưu trữ các tệp trong thư mục dự án Vagrant của bạn (chứa VagrantFile). Thư mục này thường có sẵn cho tất cả các máy ảo như/vagrant trong VM khi tạo.

Nếu bạn muốn thư mục khác trên máy tính của bạn sẽ có sẵn cho các máy ảo của bạn chỉ cần thêm dòng sau vào VagrantFile bạn

# see http://docs.vagrantup.com/v1/docs/config/vm/share_folder.html 
config.vm.share_folder "v-packages", "/vagrant_packages", "../../dpkg" 

Sau đó, để sử dụng các tập tin bên trong con rối bạn chỉ có thể đối xử với chúng như tập tin địa phương cho VM

# bad example, bub basically use 'source => 'file:///vagrant/foo/bar' 
file { '/opt/cassandra': 
    ensure => directory, 
    replace => true, 
    purge => true, 
    recurse => true, 
    source => 'file:///vagrant/conf/dist/apache-cassandra-1.2.0', 
} 

Điều này có lẽ chỉ khôn ngoan nếu bạn chỉ sử dụng các biểu hiện/mô-đun bù nhìn cục bộ.

0

Có lẽ quá muộn để giúp bennylope, nhưng đối với những người khác xảy ra qua câu hỏi này, như tôi đã làm trước tìm nó ra cho bản thân mình ...

Bao gồm những thứ như thế này trong Vagrantfile của bạn ...

GUEST_PROVISIONER_CONFDIR = "/example/destination/path" 
HOST_PROVISIONER_CONFDIR = "/example/source/path" 
config.vm.synced_folder HOST_PROVISIONER_CONFIDIR, GUEST_PROVISIONER_CONFDIR 
puppet.options = "--fileserverconfig='#{GUEST_PROVISIONER_CONFDIR}/fileserver.conf'" 

Sau đó đảm bảo/example/source/path chứa tệp fileserver.conf được tham chiếu. Nó sẽ giống như ...

[foo] 
    path /example/destination/path 
    allow * 

Bây giờ, giả sử dụ-file.txt tồn tại trong/example/nguồn/path, sau đây sẽ làm việc trong biểu hiện của bạn:

source => "puppet:///foo/example-file.txt", 

Xem:

  1. Puppet configuration reference entry for fileserverconfig
  2. Serving Files From Custom Mount Points