Получение файлов Puppet извне модулей - PullRequest
7 голосов
/ 01 марта 2012

Я устанавливаю пакет из модуля (Nginx в данном конкретном случае) и хотел бы включить файл конфигурации снаружи модуля, то есть из каталога files верхнего уровня, параллельного верхнему уровню *Каталог 1003 *.Я не вижу способа получить файл, хотя и не включил его в модуль или в мою текущую среду Vagrant, ссылаясь на абсолютный локальный путь.

Позволяет ли Puppet получать файлы извне модулей, как описанодокументация?

Ответы [ 3 ]

3 голосов
/ 21 марта 2012

если я правильно понимаю ваш вопрос, вы можете. В вашем модуле простой код, подобный этому

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 будет получен из файла, расположенного в общей папке Puppet "files". (в приведенном выше примере поиск выполняется в 4 разных местах).

update может быть, вы говорите о каталоге для хранения файлов, который не используется файловым сервером Puppet (посмотрите на http://docs.puppetlabs.com/guides/file_serving.html),, и в этом случае вы не можете, я думаю, Vagrant или нет, но вы можете добавить его на свой файловый сервер Puppet, чтобы сделать это. Я думаю, что это лучший (и, возможно, единственный) способ сделать это.

1 голос
/ 01 марта 2013

Если у вас есть несколько виртуальных машин Vagrant, вы можете просто хранить файлы в каталоге вашего проекта Vagrant (содержащем ваш VagrantFile).Этот каталог обычно доступен для всех виртуальных машин как / vagrant внутри виртуальной машины при создании.

Если вы хотите, чтобы другие каталоги на вашем компьютере были доступны для ваших виртуальных машин, просто добавьте в VagrantFile

# see http://docs.vagrantup.com/v1/docs/config/vm/share_folder.html
config.vm.share_folder "v-packages", "/vagrant_packages", "../../dpkg"
следующее

Затем, чтобы использовать файлы в марионетке, вы можете просто обращаться с ними как с локальными файлами для виртуальной машины

# 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',
}

Это, вероятно, целесообразно сделать, только если вы используете только локальные манифесты / модули.

0 голосов
/ 07 сентября 2013

Возможно, слишком поздно, чтобы помочь 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'"

Затем убедитесь, что / example / source / path содержит указанный файл fileserver.conf.Это должно выглядеть примерно так ...

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

Теперь, если предположить, что example-file.txt существует в / example / source / path, в ваших манифестах будет работать следующее:

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

См .:

  1. Ссылочная запись конфигурации кукол для fileserverconfig
  2. Обслуживание файлов из пользовательских точек монтирования
...