如何使用 puppet 更改所有客户端的壁纸?

如何使用 puppet 更改所有客户端的壁纸?

我已经设置了 puppet(中央管理服务器)。有人能告诉我如何从这个 puppet 服务器更改所有客户端的壁纸吗?

答案1

要从命令行设置壁纸图像(不使用 puppet),你可以使用以下命令:

gsettings set org.gnome.desktop.background picture-uri "file:///path/to/file.jpg"

显然,这需要以您要更改背景的用户身份运行。

就 puppet 而言,我相信您可以使用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 无法为从未登录过的新用户更改背景)。这还会更改登录屏幕的背景等,我认为这是一件好事。

答案2

关于 Oneiric :

壁纸设置已移至 dconf ;所有设置都必须通过 D-Bus 调用进行更改。

因此,要使用 Puppet 实现这一点,你需要一个puppet D-Bus 模块,并按照如下所述使用它来发送呼叫。

您可以收集有关使用哪些 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"
         ]
      }
   ]

相关内容