私はPuppetを初めて使用します。基本を学びながら遊んでいます。 puppet ページにあるほとんどの例(非常に基本的な例を除く)は私には機能しません-いくつかの依存関係が欠落しているか、パッケージが見つかりません。何が悪かったのかを説明するログが表示されません(--test
または--verbose
オプションを実行しても)
誰もが、puppetがタイトルから特定のパッケージをどのようにインストールするのかを明確にできますか(たとえば、以下のマニフェストから開始します:
class httpd {
package { 'httpd':
ensure => installed,
}
}
ここで-「httpd」から開始-このマニフェストにpuppetapplyを実行するとどうなりますか?インストーラーはどこにありますか(つまり、リポジトリはどこにありますか?構成されていますか?)
具体的には、このエラーが発生しています:
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
どうすればこれを修正できますか?
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
マイクの答えは問題を確実に解決しますが、私はパペットを通じて同様のことをします。
たとえば、最初のステップとして、パッケージをインストールする前に次のコードを追加します
exec {'yum-clean-all':
command => 'yum clean all',
path => '/usr/bin',
user => 'root',
before => Package[httpd],
}
同様に、パッケージをインストールする前に実行する必要がある実行は、最初のステップとしてpuppetを介して実行する必要があります。