Как поменять обои всех клиентов, использующих марионетку?
Я настроил марионетку (Центральный сервер управления). Может кто-нибудь сказать мне, как изменить обои всех клиентов с этого марионеточного сервера?
2 ответа
Чтобы установить изображение обоев из командной строки (без марионетки), вы можете использовать что-то вроде этого:
gsettings set org.gnome.desktop.background picture-uri "file:///path/to/file.jpg"
который, очевидно, должен быть запущен как пользователь, для которого вы меняете фон.
Что касается марионеток, я полагаю, что вы сможете загрузить файл на управляемые машины, используя file ресурс:
file { "/usr/share/backgrounds/warty-final-ubuntu.png":
source => "puppet://server/modules/module_name/background.jpg"
}
затем, чтобы запустить команду, есть exec директива:
define set_bg($name) {
exec {"set bg for $name":
command => "/usr/bin/gsettings set org.gnome.desktop.background picture-uri file:///usr/share/backgrounds/warty-final-ubuntu.png",
user => "$name",
}
}
которую вы можете выполнить для каждого из ваших пользователей:
user { "joe":
ensure => "present",
uid => "1005",
comment => "Joe",
home => "/home/joe",
shell => "/bin/bash",
managehome => "true"
}
user { "ted":
ensure => "present",
uid => "1006",
comment => "Ted",
home => "/home/ted",
shell => "/bin/bash",
managehome => "true"
}
set_bg { "joe": name=>"joe" }
set_bg { "ted": name=>"ted" }
Кроме того, вы можете захотеть ограничить выбор пользовательских фонов только тем, который вы устанавливаете в Puppet. Для этого вам нужно изменить /usr/share/gnome-background-properties/ubuntu-wallpapers.xml (очевидно, используя Puppet). Сам файл будет выглядеть так:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE wallpapers SYSTEM "gnome-wp-list.dtd">
<wallpapers>
<wallpaper>
<name>Common Background</name>
<filename>/usr/share/backgrounds/warty-final-ubuntu.png</filename>
<options>zoom</options>
<pcolor>#000000</pcolor>
<scolor>#000000</scolor>
<shade_type>solid</shade_type>
</wallpaper>
</wallpapers>
Правило для загрузки будет выглядеть так:
file { "/usr/share/gnome-background-properties/ubuntu-wallpapers.xml":
source => "puppet://server/modules/module_name/backgrounds.xml",
}
Кроме того, обратите внимание, что фон Ubuntu по умолчанию находится в файле /usr/share/backgrounds/warty-final-ubuntu.png - Я обнаружил, что замена этого файла дает более предсказуемые результаты, чем создание другого (т. Е. Gsettings не может изменить фон для новых пользователей, которые никогда не входили, например). Это также меняет фон экрана входа в систему и т. Д., Что, я полагаю, является хорошей вещью.
На Oneiric:
Настройки обоев были перенесены в dconf; все настройки должны быть изменены с помощью вызовов D-Bus.
Поэтому для достижения этой цели с помощью Puppet вам понадобится модуль D-Bus Puppet, и вы сможете использовать его для отправки вызовов, как описано ниже.
Вы можете собрать информацию о том, какие вызовы D-Bus использовать, используя dbus-monitor приложение, чтобы посмотреть, что происходит, когда вы меняете обои.
См. Также Как изменить системное фоновое изображение по умолчанию, чтобы узнать, как настроить доступные по умолчанию обои.
method call sender=:1.2153 -> dest=ca.desrt.dconf serial=44 path=/ca/desrt/dconf/Writer/user; interface=ca.desrt.dconf.Writer; member=WriteMany
string "/org/gnome/desktop/background/"
array [
struct {
string "color-shading-type"
array [
variant string "solid"
]
}
struct {
string "picture-options"
array [
variant string "zoom"
]
}
struct {
string "picture-uri"
array [
variant string "file:///usr/share/themes/Adwaita/backgrounds/stripes.jpg"
]
}
struct {
string "primary-color"
array [
variant string "#3465a4"
]
}
]
method call sender=:1.2153 -> dest=ca.desrt.dconf serial=45 path=/ca/desrt/dconf/Writer/user; interface=ca.desrt.dconf.Writer; member=WriteMany
string "/org/gnome/desktop/background/"
array [
struct {
string "picture-options"
array [
variant string "zoom"
]
}
]