web-dev-qa-db-ja.com

Linux / CentOSへのPuppetパッケージのインストール

私はPuppetを初めて使用します。基本を学びながら遊んでいます。 puppet ページにあるほとんどの例(非常に基本的な例を除く)は私には機能しません-いくつかの依存関係が欠落しているか、パッケージが見つかりません。何が悪かったのかを説明するログが表示されません(--testまたは--verboseオプションを実行しても)

  1. 誰もが、puppetがタイトルから特定のパッケージをどのようにインストールするのかを明確にできますか(たとえば、以下のマニフェストから開始します:

    class httpd {
          package { 'httpd':
               ensure => installed,
          }
    }
    

    ここで-「httpd」から開始-このマニフェストにpuppetapplyを実行するとどうなりますか?インストーラーはどこにありますか(つまり、リポジトリはどこにありますか?構成されていますか?)

  2. 具体的には、このエラーが発生しています:

    err: /Stage[main]/Ntp/Package[httpd]/ensure: change from absent to present failed: Execution of '/usr/bin/yum -d 0 -e 0 -y install httpd' returned 1: Error: failure: repodata/filelists.xml.gz from base: [Errno 256] No more mirrors to try.
    You could try using --skip-broken to work around the problem
    You could try running: package-cleanup --problems
                           package-cleanup --dupes
                           rpm -Va --nofiles --nodigest
    

どうすればこれを修正できますか?

2
Bhaskar

Yumを実行してhttpdをインストールしようとしています

 /usr/bin/yum -d 0 -e 0 -y install httpd

ルートとして実行してみてくださいが、失敗すると確信しているので、試してみてください

 /usr/bin/yum clean all
 /usr/bin/yum -d 0 -e 0 -y install httpd

それが機能しない場合は、yumリポジトリが機能していないため、そのファイルを修正する必要があります。おそらくファイル

/etc/yum.repos.d
4
Mike

マイクの答えは問題を確実に解決しますが、私はパペットを通じて同様のことをします。

たとえば、最初のステップとして、パッケージをインストールする前に次のコードを追加します

exec {'yum-clean-all':
  command =>  'yum clean all',
  path    =>  '/usr/bin',
  user    =>  'root',
  before  =>  Package[httpd],
}

同様に、パッケージをインストールする前に実行する必要がある実行は、最初のステップとしてpuppetを介して実行する必要があります。

1
vishal.biyani