Я использовал информацию об этом:
Но мне нужно что-то более продуманное, потому что у меня есть несколько рабочих столов, и каждый из них используется двумя или тремя пользователями, поэтому я хочу создать класс для копирования ярлыка на его рабочие столы.
Компьютеры присоединены к домену, поэтому любой пользователь может войти в систему с любого рабочего стола, а его профиль создается на каждом рабочем столе.
Я пробовал с этим:
class applink {
file { "/home/installer/Escritorio/Workdesktop.desktop":
owner => installer,
group => root,
mode => 770,
source => "puppet://$server/files/Workdesktop.desktop"
}
Это только для одного пользователя, называемого «установщиком», как это сделать для нескольких пользователей?
Могу ли я использовать $USER
для этого? Есть предположения?
Спасибо!
На самом деле есть два способа сделать это: определение или виртуальный ресурс. Я знаю больше об определениях, так что это подход, который я опишу. О виртуальных ресурсах читайте здесь, но будьте готовы запутаться, прежде чем получите понимание.
Чтобы сделать это в определении, создайте манифест в своем структура модуля содержать его; в вашем примере это будет в _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
. Узнать больше о определенные типы здесь.
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
как массив вместо строки; Puppet проанализирует это так, как если бы вы написали следующее:
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"
}
т.е. вы получаете оба File["/home/installer/Escritorio/Workdesktop.desktop"]
и File["/home/user/Escritorio/Workdesktop.desktop"]
привязан к вашей конфигурации.
Я подозреваю, что это сработает для многих типов ресурсов, но я не тестировал ничего, кроме file
.