モジュールからpuppetマニフェストでファイルを調達する方法
Puppetマニフェストのローカルモジュールからファイルを取得しようとしています(スタンドアロンモードでpuppetを使用):
file {
'/home/repowt/.crontab':
ensure => present,
source => 'puppet:///modules/site/crontab';
}
しかし、私は得る:
Could not evaluate: Could not retrieve information from source(s) ...
ファイルは次の場所にあります。
config/puppet/modules/site/files/crontab
(puppetはvagrant provision
を介して呼び出され、Vagrantfileはmodule_path = 'config/puppet/modules'を指定し、puppetはそこからインポートしてモジュールをロードするため、明らかに問題ありません。)
私も試しました:
source => 'puppet:///site/crontab'
source => 'site/crontab'
source => 'config/puppet/modules/site/files/crontab'
source => '/modules/site/crontab'
役に立たない。私はウェブ上で何も照らしているものを見つけませんでした、非常に単純なもののようです。あなたの助けに感謝します。
ここで起こっていることがいくつかあります。
まず、pwanが指摘しているように、fileserver.conf
を正しく設定する必要があります。
/vagrant
には、Vagrantfile
が存在するディレクトリ(したがって、そのすべてのコンテンツ)が含まれていることに注意してください。これは、次のことを意味します。
vm_config.vm.provision :puppet, :module_path => "modules", :options => ["--fileserverconfig=/vagrant/fileserver.conf", ]
私のfileserver.conf
は、/etc/puppet/files
を使用することを指定しています。
別のfileserver.conf
を指定することもできましたが、Vagrantのためだけに、ほとんどすべてを通常と同じにしたかったのです。
だから、私も/etc/puppet/files
をマウントしました
vm_config.vm.share_folder "files", "/etc/puppet/files", "files"
それは私のために物事を動かしました。
puppet:///modules/my_module/file
は%vagrant_root%/modules/my_module/files/file
と一致する必要があります
Vagrantがそのディレクトリのコピーをターゲットにマウントしていることに気づきましたVM(私はbase http://dl.dropbox.com/u/15307300/vagrant-0.7を使用しています) -centos-64-base.box );「マウント」を実行し、これもあるかどうかを確認します。
これにより、Vagrant内に、「files /」と呼ぶmanifests /と並行してディレクトリを作成できます。次に、構成ソースファイルをその下に配置します(例:.../myvagrantproject/files/slapd.conf)。これはVMとして/vagrant/files/slapd.confとして表示されます
次に、ファイルソースのパペットマニフェストに、次のように、パペットサーバーパスではなく、絶対ファイルパスとしてソースをリストします。
file { 'slapd.conf':
name => '/etc/openldap/slapd.conf',
ensure => present,
source => '/vagrant/files/slapd.conf',
owner => root,
group => ldap,
mode => 0640,
require => Package["ldapservers"],
}
独自のvboxにマウントされたリモートファイルシステムからは問題がないことがわかりました。
元のpuppet:// modules/site/crontabが機能するはずです。
Puppetmasterのfileserver.confにモジュールセクションがない可能性があります。まだ存在しない場合は、以下のようなものを追加してみてください。
[modules]
allow *
http://docs.puppetlabs.com/guides/modules.html の「モジュールルックアップ」セクションを確認してください。
スタンドアロンモードでパペットを使用しているのか、クライアントサーバーモードでパペットを使用しているのかは、説明からは明らかではありません。スタンドアロンモードを使用していると仮定して、VMの/ tmpフォルダーを再確認して、モジュールフォルダーが実際に存在し、vagrantがマウントしているかどうかを確認します。マニフェストをロードできるという事実は、モジュールもそこにあるという意味ではありません。
元の構成は正しいようです。