web-dev-qa-db-ja.com

puppetを使用して依存関係のあるパッケージをインストールする

私はpuppetを初めて使用しました。学習プロセスのために、Puppet MasterおよびPuppet Slaveセットアップを作成し、mysqlモジュールを構成してPuppet clientにmysqlをインストールしました。以下はマニフェストファイルです。

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"も追加してみましたが、それでも同じ問題が発生します。

これに関するどんな助けでもありがたいです。

4
Yaalie

以下のマニフェストを試すことができます。問題は、依存関係を自動的に解決してインストールするために、-f--allow-unauthenticatedおよびapt-getオプションを追加する必要があることです。これらのフラグが追加されたら、依存パッケージをpackageリソースに追加する必要はありません。

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

私が見るところによると、あなたはUbuntuを使用しているため、Aptパッケージマネージャーを使用しています。発生しているエラーは、パッケージの公開鍵が見つからないパッケージをインストールしたことが原因です。

次の理由が考えられます。

  • 公開鍵を含まないパッケージソースがあります。
  • あなたがする必要がありますapt-get updateインストールを行う前にソースを更新します。
  • または、キーを手動でインポートする必要があります。

次の2つの解決策があります。

  • キーをインポートする
  • 不足しているキーを無視する
  • または、Puppetで以下を使用して、欠落しているキーを無視するようにAptを構成します。

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

上記はPppetLabs Aptモジュール。

キーを無効にする前に、最初のオプションを確認します。正確な原因/解決策を提供するのに十分な詳細を提供していませんが、上記は正しい方向にあなたを導くはずです。

4
ETL