2016-08-01 7 views
-1

Я использую Amazon opsworks и изо всех сил пытаюсь заставить его работать через один скрипт, я создал сценарий с именем clamav.rb. Содержание сценария:Как установить ClamAV с помощью Ruby-скрипта с настройкой в ​​том же скрипте?

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 

Когда я исполняю выше сценарий он застрял с ошибкой:

[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) 

, но когда я разделить сценарий на две части, что работают очень хорошо, как создание отдельного сценария для пакетов yum и отдельно для изменения конфигурации.

ответ

1

Вас укусят двухпроходная загрузочная модель Шеф-повара. В этот момент кода пакет еще не установлен. Обратитесь к https://coderanger.net/two-pass/ за более подробной информацией об этом, но чтобы исправить вашу фактическую проблему, используйте кулинарию line, в которой есть ресурсы для такого поиска и замены в файлах, которые правильно обрабатывают последовательность.

+0

Я новичок в этом, вы можете PLS предоставить шаги в кратком – Navneet

+0

Нет, проверить ридй для линии поваренной книги и объясняет, как использовать свои ресурсы. – coderanger

0

Я решил эту проблему, ниже решение

код: заменил мой старый код с этим

File.open ('/ и т.д./freshclam.conf', "г") делать | AFile | if aFile text = File.read ('/ etc/freshclam.conf') replace = text.gsub ("Пример", "#Example") # Чтобы просто распечатать содержимое файла, используйте: puts replace # Чтобы записать изменения в файл, используйте: File.open ('/ etc/freshclam.conf', "w") {| file | file.puts replace}

еще ставит «Невозможно открыть файл!» конца

конца

 Смежные вопросы

  • Нет связанных вопросов^_^