Thêm dòng vào / etc / profile với con rối?


16

Tôi sử dụng con rối để cài đặt JDK và tomcat hiện tại.

package {
    [ "openjdk-6-jdk", "openjdk-6-doc", "openjdk-6-jre",
      "tomcat6", "tomcat6-admin", "tomcat6-common", "tomcat6-docs", 
      "tomcat6-user" ]:
    ensure => present,
}

Bây giờ tôi muốn thêm

JAVA_HOME="/usr/lib/java"
export JAVA_HOME

để /etc/profile, chỉ để có được điều này ra khỏi đường đi. Tôi chưa tìm thấy câu trả lời thẳng thắn trong các tài liệu. Có một cách được đề nghị để làm điều này?

Nói chung, làm thế nào để tôi bảo con rối đặt tập tin này ở đó hoặc sửa đổi tập tin đó? Tôi đang sử dụng con rối cho một nút (trong chế độ độc lập) chỉ để dùng thử và để ghi nhật ký thiết lập máy chủ .


1
Nếu bạn đang vào Puppet, hãy xem Ví dụ42 để biết các mô đun dựng sẵn. Họ không luôn làm việc như bạn muốn, nhưng họ mạch lạc và ổn định. github.com/example42/puppet-modules
kashani

Câu trả lời:


26

Thêm một tập tin /etc/profile.d/với hậu tố .sh. Nó sẽ có nguồn gốc như một phần của / etc / profile trong Red Hat và Debian và các dẫn xuất, không thể nói trên các bản phát hành khác. Nói chung, nếu có thể, tốt hơn là thêm đoạn mã thay vì thay thế các tệp phân tán vì nó có xu hướng an toàn hơn trong tương lai.

Vì vậy, trong con rối, sau đây sẽ làm:

file { "/etc/profile.d/set_java_home.sh":
    ensure => present,
    source => ...[whatever's appropriate for your setup]...,
    ...
}

Đây là những gì bạn đang tìm kiếm hoặc bạn cần thêm chi tiết?


1
Điều này cũng hoạt động trên OpenSUSE và Gentoo.
Kamil Kisiel

1
Cảm ơn, điều đó thật tuyệt. Làm cho nó gần như hoạt động, chỉ cần tìm một cách thích hợp để tham chiếu một tệp liên quan đến .ppnguồn dưới dạng.
miku

1
Giả sử Puppet 0,25 hoặc nguồn tốt hơn => Puppet: /// $ modulename / $ file với đường dẫn hệ thống thực là $ modulename / files / $ file
kashani

2
IIRC 2.6.5 trở lên sẽ phát ra cảnh báo không dùng nữa nếu bạn sử dụng con rối: /// $ modulename / files / $ tên tệp. nó sẽ trông giống như con rối: /// mô-đun / $ modulename / files / $ filename
ztron 18/03

42

Giải pháp của mark là cách tốt nhất để thêm nội dung vào hồ sơ của mọi người, nhưng nếu bạn cần đảm bảo một số dòng có trong một tệp, Puppet Labs có một mô-đun tuyệt vời gọi là stdlib bao gồm file_line sẽ làm những gì bạn cần. Trước đây tôi đã sử dụng echo và grep trong kiểu exec để thực hiện điều này, nhưng file_line thì dễ dàng và gọn gàng hơn nhiều.

Đây là sự giúp đỡ cho nó:

Ensures that a given line is contained within a file. The implementation
matches the full line, including whitespace at the beginning and end. If
the line is not contained in the given file, Puppet will add the line to
ensure the desired state. Multiple resources may be declared to manage
multiple lines in the same file.

Example:

file_line { 'sudo_rule':
   path => '/etc/sudoers',
   line => '%sudo ALL=(ALL) ALL',
}
file_line { 'sudo_rule_nopw':
   path => '/etc/sudoers',
   line => '%sudonopw ALL=(ALL) NOPASSWD: ALL',
}

In this example, Puppet will ensure both of the specified lines are
contained in the file /etc/sudoers.

2
Hãy chắc chắn rằng bạn đã kích hoạt plugin trên máy khách, nếu không điều này dường như thất bại trong âm thầm.
gak

1
đây là tài liệu với neo trực tiếp forge.puppetlabs.com/puppetlabs/stdlib#resource
Francesco Casula
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.