Kukla ile / etc / profile satır eklensin mi?


16

Geçerli bir JDK ve tomcat kurmak için kukla kullanıyorum.

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

Şimdi eklemek istiyorum

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

için /etc/profile, sadece yol almak bu kadar. Henüz dokümanlarda basit bir cevap bulamadım. Bunu yapmanın önerilen bir yolu var mı?

Genel olarak, kuklaya bu dosyayı oraya yerleştirmesini veya dosyayı değiştirmesini nasıl söyleyebilirim? Sadece denemek ve sunucu kurulumunun bir günlüğünü tutmak için tek bir düğüm (bağımsız modda) için kukla kullanıyorum .


1
Kukla'ya giriyorsanız, önceden oluşturulmuş modüller için Örnek42'ye bakın. Her zaman istediğiniz gibi çalışmazlar, ancak tutarlı ve kararlıdırlar. github.com/example42/puppet-modules
kashani

Yanıtlar:


26

/etc/profile.d/Soneki olan bir dosya ekleyin .sh. Red Hat ve Debian ve türevlerindeki / etc / profilinin bir parçası olarak kaynaklanacaktır, diğer dağıtımlarda söylenemez. Genel olarak konuşursak, mümkünse, gelecekte daha güvenli olma eğiliminde olduğu için dağıtılmış dosyaları değiştirmek yerine parçacıklar eklemek daha iyidir.

Yani kuklada aşağıdakiler yapardı:

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

Aradığın şey veya daha fazla ayrıntıya ihtiyacın var mı?


1
Bu aynı zamanda OpenSUSE ve Gentoo için de geçerlidir.
Kamil Kisiel

1
Teşekkürler, bu harika. Neredeyse işe yaradı, sadece .ppkaynağa göre bir dosyaya başvurmak için uygun bir yol bulmanız gerekiyor .
miku

1
Kukla 0.25 veya daha iyisi source => kukla: /// $ modulename / $ dosyasını varsayarak gerçek sistem yolu $ modulename / files / $ file
kashani

2
IIRC 2.6.5 ve üstü, kukla: /// $ modulename / files / $ dosyaadı gösterimini kullanırsanız kullanımdan kaldırma uyarısı verir. kukla gibi görünmelidir: /// modules / $ modulename / files / $ dosyaadı
ztron

42

mark'ın çözümü herkesin profiline bir şeyler eklemek için en iyisidir, ancak bazı satırların bir dosyada olduğundan emin olmanız gerekiyorsa, Puppet Labs, stdlib adlı, ihtiyacınız olanı yapacak olan file_line adlı harika bir modüle sahiptir . Daha önce bunu yapmak için exec türünde echo ve grep kullandım, ancak file_line çok daha kolay ve temiz.

İşte bunun için yardım:

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
İstemcide pluginsync'in etkin olduğundan emin olun, aksi takdirde sessizce başarısız olur.
gak

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.