2016-08-01 12 views
-1

Ich benutze Amazon opsworks und kämpfen, um es durch ein einziges Skript arbeiten zu lassen, habe ich ein Skript mit dem Namen clamav.rb erstellt. Der Inhalt des Skripts ist:Wie ClamAV mit Ruby-Skript mit Konfiguration in demselben Skript installieren?

yum_package 'clamav' do 
    action :install 
end 

yum_package 'clamav-update' do 
    action :install 
end 

file_names = ['/etc/freshclam.conf'] 

file_names.each do |file_name| 

text = File.read(file_name) 

replace = text.gsub("Example", "#Example") 

    # To merely print the contents of the file, use: 

    puts replace 

    # To write changes to the file, use: 

    File.open(file_name, "w") {|file| file.puts replace } 

end 

execute "Run Freshclam" do 

    command "/usr/bin/freshclam" 

end 

Wenn ich das Skript ausführen es mit einem Fehler fest:

[2016-08-01T13:02:36+00:00] ERROR: Running exception handlers 
[2016-08-01T13:02:36+00:00] ERROR: Exception handlers complete 
[2016-08-01T13:02:36+00:00] FATAL: Stacktrace dumped to /var/lib/aws/opsworks/cache.stage2/chef-stacktrace.out 
[2016-08-01T13:02:36+00:00] ERROR: No such file or directory - /etc/freshclam.conf 
[2016-08-01T13:02:36+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1) 

aber als ich das Drehbuch in zwei Teile unterteilen es sehr gut laufen, wie das Erstellen separates Skript für Yum-Pakete und getrennt für Konfigurationsänderung.

Antwort

1

Sie werden vom Chef-Zweipass-Lademodell gebissen. An diesem Punkt im Code wurde das Paket noch nicht installiert. Weitere Informationen hierzu finden Sie unter https://coderanger.net/two-pass/, aber um Ihr tatsächliches Problem zu beheben, verwenden Sie das line Kochbuch, das Ressourcen für diese Art von Suche enthält und in Dateien ersetzt, die die Sequenzierung für Sie korrekt behandeln.

+0

Ich bin neu in diesem, können Sie die Info Schritte in Kürze – Navneet

+0

Keine Besuche für die Linie Kochbuch pls und es wird erklärt, wie seine Ressourcen nutzen. – coderanger

0

aufgelöst ich dieses Problem, unter der Lösung

Code ist: ersetzt meinen älteren Code mit diesem

File.open ('/ etc/freshclam.conf', "r") tut | aFile | wenn aFile text = File.read ('/ etc/freshclam.conf') replace = text.gsub ("Beispiel", "#Beispiel") # Um nur den Inhalt der Datei zu drucken, verwenden Sie: puts replace # Um Änderungen an der Datei zu schreiben, verwenden Sie: File.open ('/ etc/freshclam.conf', "w") {| file | file.puts ersetzen}

sonst puts "Datei kann nicht geöffnet werden!" Ende

Ende