web-dev-qa-db-ja.com

モジュールから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'

役に立たない。私はウェブ上で何も照らしているものを見つけませんでした、非常に単純なもののようです。あなたの助けに感謝します。

18
Viktor Trón

ここで起こっていることがいくつかあります。

まず、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"

それは私のために物事を動かしました。

20
akumria

puppet:///modules/my_module/file%vagrant_root%/modules/my_module/files/fileと一致する必要があります

11
knoopx

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にマウントされたリモートファイルシステムからは問題がないことがわかりました。

6
Shentonfreude

元のpuppet:// modules/site/crontabが機能するはずです。

Puppetmasterのfileserver.confにモジュールセクションがない可能性があります。まだ存在しない場合は、以下のようなものを追加してみてください。

[modules]
    allow *

http://docs.puppetlabs.com/guides/modules.html の「モジュールルックアップ」セクションを確認してください。

3
pwan

スタンドアロンモードでパペットを使用しているのか、クライアントサーバーモードでパペットを使用しているのかは、説明からは明らかではありません。スタンドアロンモードを使用していると仮定して、VMの/ tmpフォルダーを再確認して、モジュールフォルダーが実際に存在し、vagrantがマウントしているかどうかを確認します。マニフェストをロードできるという事実は、モジュールもそこにあるという意味ではありません。

元の構成は正しいようです。

1
zekus