那么我使用这个信息:
木偶 – 任何方式从木偶主人(主机)复制客户端软件预定义的自定义configuration文件?
但是我需要一些更详细的说明,因为我有几个桌面,每个用户有两三个用户,所以我想在桌面上做一个复制快捷方式的类。
计算机join到一个域,所以任何用户都可以login任何桌面,他的个人资料是在每个桌面上创build的。
我试过这个:
class applink { file { "/home/installer/Escritorio/Workdesktop.desktop": owner => installer, group => root, mode => 770, source => "puppet://$server/files/Workdesktop.desktop" }
这只针对一个名为“installer”的用户,对于多个用户来说,该如何做到这一点?
我可以使用$USER做这个吗? 有什么想法吗?
谢谢!
确实有两种方法可以做到这一点:定义或虚拟资源。 我对定义更加了解,所以这就是我将要描述的方法。 在这里阅读关于虚拟资源的信息 ,但是在获得理解之前,请准备好弄糊涂。
要在定义中做到这一点,在你的模块结构中创build一个清单来包含它。 在你的例子中它会在_modulepath_/applink/manifests/desktoplinks.pp
define applink::desktoplinks { file { "/home/$title/Escritorio/Workdesktop.desktop": owner => $title, group => root, source => "puppet://$server/files/Workdesktop.desktop", } # you could have others here if you wanted }
然后使用它,你可以用每个用户的名字来调用它,也许一次在一个数组中:
applink::desktoplinks { [ "user1", "user2", "user3" ]: }
诀窍是用户名是定义资源的“标题”,所以它在定义里可以用$title 。 在这里阅读更多关于定义types 。
HTH
我刚刚学会了另一种方式来做到这一点。 这更像是一个语法上的怪癖,而不是任何东西,但是在这里,你去:
file { ["/home/installer/Escritorio/Workdesktop.desktop", "/home/user/Escritorio/Workdesktop.desktop"]: owner => installer, group => root, mode => 770, source => "puppet://$server/files/Workdesktop.desktop" }
关键是将title指定为数组而不是string; 木偶会parsing这个,好像你写了下面的内容:
file { "/home/installer/Escritorio/Workdesktop.desktop": owner => installer, group => root, mode => 770, source => "puppet://$server/files/Workdesktop.desktop" } file { "/home/user/Escritorio/Workdesktop.desktop": owner => installer, group => root, mode => 770, source => "puppet://$server/files/Workdesktop.desktop" }
即在您的configuration中绑定了File["/home/installer/Escritorio/Workdesktop.desktop"]和File["/home/user/Escritorio/Workdesktop.desktop"] 。
我怀疑这可以适用于很多types的资源,但我没有testing任何其他file 。