Puppet

使用 puppet 安裝具有依賴項的軟體包

  • June 28, 2018

我是新手puppet,在學習它的過程中,我創建Puppet MasterPuppet Slave設置並配置了一個mysql模組來安裝 mysql Puppet client。下面是清單文件。

class mysql {
   package { ["mysql-server-5.5", "libaio1", "libdbd-mysql-perl", "libdbi-perl", "libhtml-template-perl", "libmysqlclient18", "mysql-client-5.5", "mysql-common", "mysql-server-core-5.5"]:
   ensure => present,
   allowcdrom => 'true',
   }
}

package資源包含 mysql-server 的所有依賴項。但我收到以下錯誤。

Building dependency tree...
Reading state information...
The following extra packages will be installed:
 mysql-common
The following NEW packages will be installed:
 libmysqlclient18 mysql-common
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 738 kB of archives.
After this operation, 3513 kB of additional disk space will be used.
WARNING: The following packages cannot be authenticated!
 mysql-common libmysqlclient18
E: There are problems and -y was used without --force-yes
Error: /Stage[main]/Mysql/Package[libmysqlclient18]/ensure: change from purged to present failed: Execution of '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install libmysqlclient18' returned 100: Reading package lists...

我還嘗試install_options: "--force-yes"按照錯誤輸出中的說明添加,但仍然遇到相同的問題。

對此的任何幫助將不勝感激。

你可以試試下面的清單。問題是您必須添加選項來自動解決依賴關係並安裝它們-f。一旦添加了這些標誌,就不需要將每個依賴包都添加到資源中。--allow-unauthenticated``apt-get``package

class mysql {
   package { ["mysql-server-5.5"]:
       ensure          => present,
       allowcdrom      => 'true',
       install_options => ['--allow-unauthenticated', '-f'],
   }
}

據我所知,您使用的是 Ubuntu,因此使用的是 Apt 包管理器。您遇到的錯誤是由於安裝了一個找不到該包的公鑰的包。

這可能是因為:

  • 您有一個不包含公鑰的包源。
  • apt-get update在進行安裝之前,您需要更新您的原始碼。
  • 或者您需要手動導入密鑰。

您有兩種可能的解決方案:

  • 導入密鑰
  • 忽略失去的密鑰
  • 或者在 Puppet 中使用以下內容來配置 Apt 以忽略失去的鍵。

class {'::apt': disable_keys: true}

以上需要PppetLabs Apt模組。

我會在禁用鍵之前檢查第一個選項。您沒有提供足夠的詳細資訊來獲得精確的原因/解決方案,但以上內容應該能讓您朝著正確的方向前進。

引用自:https://serverfault.com/questions/667804