私はVagrantを使用していくつかの初期Puppet構成をジャンプスタートし、追加マニフェストをモジュールに作成してそのように含めることなく、複数のマニフェスト(site.pp以外)をパペット実行ワークフローに含める/実行する方法に混乱しています。
Vagrantがポイントするパペットマニフェストディレクトリ(下記参照)には、実行したいマニフェストが2つあります:site.ppとhierasetup.pp。
config.vm.provision "puppet" do |puppet|
puppet.manifests_path = "puppet_files/manifests"
puppet.module_path = "puppet_files/modules"
puppet.manifest_file = "site.pp"
puppet.options = "--verbose --debug"
end
現在、site.ppをhierasetup.ppを呼び出すマニフェストにしています。私のsite.ppは次のようになります:
File {
owner => 'root',
group => 'root',
mode => '0644',
}
import "hierasetup.pp"
include jboss
しかし、「インポート」の廃止について次のエラーが表示されます。
警告:「インポート」の使用は/tmp/vagrant-puppet-1/manifests/site.pp:33で非推奨になりました。参照 http://links.puppetlabs.com/puppet-import-deprecation (at grammar.ra:610:in `_reduce_190 ')
「代わりに試すこと」の参照URLによると、「ノード定義を別のファイルに保持するには、ディレクトリをメインマニフェストとして指定します」。
さらに、これ 主なマニフェストの人形ドキュメント はこう言っています:
"推奨:ENCに依存せずにメインマニフェストを多用している場合は、マニフェスト設定を$ confdir/manifestsに変更することを検討してください。これにより、トップレベルのコードを複数のファイルに分割できますimportキーワードを避けながら。シンプルな環境の動作にも一致します。 "
Puppetは特定のマニフェストファイルではなく、ディレクトリ全体を参照できるようです。そのため、Vagrantがこれに対応し、「puppet.manifest_file = "site.pp"行で、代わりにすべての* .ppファイルが実行される親ディレクトリをポイントします。ただし、Vagrantでその行を削除すると、予期される「デフォルト代わりに.pp ":
puppetプロビジョナー:*設定されたPuppetマニフェストがありません。既存のマニフェストへのパスを指定してください:/some/path/puppet_files/manifests/default.pp
そう:
更新:シェーンのおかげで、#2の問題(Vagrantのコードが追いつかず、Puppetマニフェストディレクトリを指すことができない)がVagrantのGitHubの問題トラッカーで報告されましたサイトおよびそれ以降パッチされています: https://github.com/mitchellh/vagrant/issues/4169
最初に、複数のマニフェストを正しく呼び出す「新しい」(インポートではない)方法を理解していますか?その中のすべての* .ppファイルが実行されるディレクトリを指す必要がありますか?
そうです。 こちら を参照してください:
ENCに依存せずにメインマニフェストを多用している場合は、マニフェスト設定を$ confdir/manifestsに変更することを検討してください。これにより、インポートキーワードを回避しながら、トップレベルのコードを複数のファイルに分割できます。
さらに、manifest
とmodulepath
も非推奨になり、ディレクトリ環境とマニフェストディレクトリの動作が優先されます。 ここ を参照してください。
ディレクトリ環境が完成したので、config-file環境は非推奨になりました。 puppet.confで環境ブロックを定義すると、puppet.confでmodulepath、manifest、config_version設定を使用する場合と同様に、非推奨の警告が表示されます。
これは多くのデプロイメントにとってかなり大きな変更ですが、長期的にはかなりの改善になるはずです。
次に、Vagrantは、Puppetの「インポート」の廃止に伴うディレクトリの参照に対応するために、この新しい変更に「追いついた」のでしょうか。
いいえ、ありません。彼らのドキュメントから:
manifest_file(文字列)-Puppet実行のエントリポイントとして機能するマニフェストファイルの名前。このマニフェストファイルは、構成されたmanifests_pathに存在することが期待されています
Vagrantで使用するために、今のところ非推奨の警告を処理することに悩まされていますが、これは残念です。ただし、インポートは4.xまでは削除の予定がないため、Vagrantが追いつくまでの時間を確保します。