Frage Installieren mehrerer Pakete mit Koch


Wenn ich versuche, mehrere Pakete mit einer Platzhalterbenennung zu installieren, habe ich folgende Fehlermeldung erhalten:

 * yum_package[mysql-server] action install (up to date)
 * yum_package[mysql*] action install
 * No candidate version available for mysql*
    ============================================================================                                                                                        ====
    Error executing action `install` on resource 'yum_package[mysql*]'
    ============================================================================                                                                                        ====

Rezeptcode ist:

package 'mysql-server' do
  action :install
end

package 'mysql*' do
  action :install
end

5
2017-07-12 09:44


Ursprung


Antworten:


Sie müssen den genauen Paketnamen verwenden. Der Küchenchef Paket Ressource macht keine Magie, um passende Pakete zu finden.

Der Name der Ressource (der Teil unmittelbar nach dem Paket) wird als Paketname verwendet und dem zugrunde liegenden System übergeben (yum auf RH-ähnlichen Systemen, apt auf Debian-ähnlichen Systemen)

Wenn Sie mehrere zu installierende Pakete und eine allgemeine Konfiguration haben, können Sie diese stattdessen in Ihrem Rezept durchlaufen:

['mysql-server','mysql-common','mysql-client'].each do |p|
  package p do
    action :install
  end
end

Die Array-Erstellung könnte mit einer Ruby-Syntax als Wörtergenerator vereinfacht werden %w:

%w(mysql-server mysql-common mysql-client).each [...]

Seit Koch 12.1 der package Ressource annehmen Array von Paketen direkt so:

package %w(mysql-server mysql-common mysql-client)

16
2017-07-12 13:45



Dies kann mit Koch Fällen gelöst werden. Siehe unten

Fügen Sie Ihrer Attributdatei Folgendes hinzu:

packages = []

case node[:platform_family]
when 'rhel' #based on your OS
  packages = [
    "package1",
    "package2",
    "package3",
    "package4",
    "package5",
    "package6",
    "package7" ## Last line without comma
  ]
end

default[:cookbookname][:packages] = packages

Fügen Sie dann Ihrer Rezeptdatei (recipes / default.rb) Folgendes hinzu:

node[:cookbookname][:packages].each do |pkg|
  package pkg do
    action :install
    retries 3
    retry_delay 5
  end
end

-1
2017-12-12 21:22