Скопировать содержимое символической ссылки в каталог - PullRequest
0 голосов
/ 11 мая 2018

Я пытаюсь скопировать содержимое каталога символической ссылки в обычный каталог в Windows:

file { "copy symlink contents to directory":
    ensure             => directory,
    path               => "C:/Users/devacct/Desktop/puppet/puppet_dir2/", #directory
    source             => "C:/Users/devacct/Desktop/puppet/filessym/", #symlink
    recurse            => true,
    source_permissions => ignore,
    links              => 'manage',
    #ignore             => $ignore_files,
    #purge              => $purge,
    force              => true,
}

Сбой при появлении сообщения об ошибке:

Error: /Stage[main]/Custom::Profile::Symlink/File[copy symlink contents to directory]: Could not evaluate: Could not retrieve information from environment production source(s) file:/C:/Users/devacct/Desktop/puppet/filessym

Допустимо лидать путь к символической ссылке в качестве значения атрибута источника?Если нет, как мне достичь своей цели?

Ответы [ 2 ]

0 голосов
/ 12 мая 2018

Да, в общем случае допустимо использовать символическую ссылку в качестве параметра источника, и, как отметил Келсон Сильва, вам также нужно будет использовать links => follow вместо links => manage (см. документы ) .

Я не уверен, почему вы получаете это сообщение об ошибке.

FWIW, я проверял следующее на Mac OS X:

Настройка:

$ ls -ld /tmp/symlink
lrwxr-xr-x  1 alexharvey  wheel  10 12 May 16:31 /tmp/symlink@ -> realsource
$ ls -lL /tmp/symlink
total 0
drwxr-xr-x  5 alexharvey  wheel  160 12 May 16:30 a/
drwxr-xr-x  5 alexharvey  wheel  160 12 May 16:30 b/
drwxr-xr-x  5 alexharvey  wheel  160 12 May 16:30 c/
$ find /tmp/symlink/
/tmp/symlink/
/tmp/symlink//a
/tmp/symlink//a/f
/tmp/symlink//a/d
/tmp/symlink//a/d/somefile
/tmp/symlink//a/e
/tmp/symlink//c
/tmp/symlink//c/f
/tmp/symlink//c/d
/tmp/symlink//c/e
/tmp/symlink//b
/tmp/symlink//b/f
/tmp/symlink//b/d
/tmp/symlink//b/e

Код:

file { '/tmp/dest':
  ensure             => directory,
  links              => follow,
  source             => '/tmp/symlink',
  recurse            => true,
  source_permissions => ignore,
  force              => true,
}

Результат:

Notice: Compiled catalog for harveya-c02vj38lhtd7-ume.local in environment production in 0.03 seconds
Notice: /Stage[main]/Test/File[/tmp/dest]/ensure: created
Notice: /Stage[main]/Test/File[/tmp/dest/a]/ensure: created
Notice: /Stage[main]/Test/File[/tmp/dest/a/d]/ensure: created
Notice: /Stage[main]/Test/File[/tmp/dest/a/d/somefile]/ensure: defined content as '{md5}d41d8cd98f00b204e9800998ecf8427e'
Notice: /Stage[main]/Test/File[/tmp/dest/a/e]/ensure: created
Notice: /Stage[main]/Test/File[/tmp/dest/a/f]/ensure: created
Notice: /Stage[main]/Test/File[/tmp/dest/b]/ensure: created
Notice: /Stage[main]/Test/File[/tmp/dest/b/d]/ensure: created
Notice: /Stage[main]/Test/File[/tmp/dest/b/e]/ensure: created
Notice: /Stage[main]/Test/File[/tmp/dest/b/f]/ensure: created
Notice: /Stage[main]/Test/File[/tmp/dest/c]/ensure: created
Notice: /Stage[main]/Test/File[/tmp/dest/c/d]/ensure: created
Notice: /Stage[main]/Test/File[/tmp/dest/c/e]/ensure: created
Notice: /Stage[main]/Test/File[/tmp/dest/c/f]/ensure: created
Notice: Applied catalog in 0.13 seconds
0 голосов
/ 11 мая 2018

Используйте атрибут link в блоке file с follow.

Кроме того, установите источник без последней обратной косой черты ... Попробуйте это.

file { "copy symlink contents to directory":
    ensure             => directory,
    path               => "C:/Users/devacct/Desktop/puppet/puppet_dir2/", #directory
    source             => "C:/Users/devacct/Desktop/puppet/filessym", #symlink
    recurse            => true,
    source_permissions => ignore,
    links              => 'follow',
    #ignore             => $ignore_files,
    #purge              => $purge,
    force              => true,
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...