7

モジュールからパッケージをインストールしており (この場合は)、モジュールの外側、つまり最上位ディレクトリと並行する最上位ディレクトリNginxから構成ファイルを含めたいと考えています。モジュールまたは絶対ローカルパスを参照する現在のVagrant環境にファイルを含めずに、ファイルをソースする方法がわかりません。filesmanifests

ドキュメントに記載されているように、Puppet はモジュールの外部からファイルを取得できますか?

4

3 に答える 3

3

私があなたの質問を正しく理解していれば、そうすることができます。あなたのモジュールでは、このような単純なコード

file { '/path/to/file':
    ensure => present,
    source => [
               "puppet:///files/${fqdn}/path/to/file",
               "puppet:///files/${hostgroup}/path/to/file",
               "puppet:///files/${domain}/path/to/file",
               "puppet:///files/global/path/to/file",
    ],
}

仕事をします。/path/to/fileは、「files」Puppet 共有にあるファイルを使用して供給されます。(上記の例では、4 つの異なる場所で検索します)。

puppetファイルサーバーによって共有されていないファイルを保存するディレクトリについて話している可能性があります(http://docs.puppetlabs.com/guides/file_serving.htmlを見てください)。この場合、私は考えることができません。 Vagrant であるかどうかに関係なく、Puppet ファイルサーバーに追加して実行できます。それが最善の(そしておそらく唯一の)方法だと思います。

于 2012-03-21T13:59:29.780 に答える
1

Vagrant VMが多数ある場合は、Vagrantプロジェクトディレクトリ(VagrantFileを含む)内にファイルを保存するだけです。このディレクトリは通常、作成時にVM内の/vagrantとしてすべてのVMで使用できます。

コンピューター上の他のディレクトリをVMで使用できるようにする場合は、VagrantFileに以下を追加するだけです。

# see http://docs.vagrantup.com/v1/docs/config/vm/share_folder.html
config.vm.share_folder "v-packages", "/vagrant_packages", "../../dpkg"

次に、puppet内のファイルを使用するには、それらをVMのローカルファイルとして扱うだけです。

# bad example, bub basically use 'source => 'file:///vagrant/foo/bar'
file { '/opt/cassandra':
    ensure  => directory,
    replace => true,
    purge   => true,
    recurse => true,
    source  => 'file:///vagrant/conf/dist/apache-cassandra-1.2.0',
}

これは、ローカルのpuppetマニフェスト/モジュールのみを使用する場合にのみ実行するのがおそらく賢明です。

于 2013-03-01T09:34:12.897 に答える
0

おそらくbennylopeを助けるには遅すぎますが、この質問に出くわした他の人にとっては、私が自分でそれを理解する前に行ったように...

このようなものを Vagrantfile に含めます...

GUEST_PROVISIONER_CONFDIR = "/example/destination/path"
HOST_PROVISIONER_CONFDIR  = "/example/source/path"
config.vm.synced_folder HOST_PROVISIONER_CONFIDIR, GUEST_PROVISIONER_CONFDIR
puppet.options = "--fileserverconfig='#{GUEST_PROVISIONER_CONFDIR}/fileserver.conf'"

次に、参照されている fileserver.conf ファイルが /example/source/path に含まれていることを確認します。それは次のように見えるはずです...

[foo]
  path /example/destination/path
  allow *

ここで、example-file.txt が /example/source/path に存在すると仮定すると、以下がマニフェストで機能します。

source  => "puppet:///foo/example-file.txt",

見る:

  1. fileserverconfig の Puppet 設定参照エントリ
  2. カスタム マウント ポイントからのファイルの提供
于 2013-09-06T22:27:32.403 に答える