前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >技术|使用 Ansible 管理你的工作站:配置桌面设置

技术|使用 Ansible 管理你的工作站:配置桌面设置

原创
作者头像
知忆
修改2021-07-07 10:17:02
7990
修改2021-07-07 10:17:02
举报
文章被收录于专栏:linux百科小宇宙linux百科小宇宙

在本系列第三篇(也是最后一篇)文章中,我们将使用Ansible自动化配置GNOME桌面设置。

在本系列关于使用Ansible配置工作站的第一篇文章中,我们设置了一个仓库并配置了一些基本的东西。在第二篇文章中,我们配置了Ansible以使其在对仓库进行更改时自动应用设置。在第三篇(也是最后一篇)文章中,我们将使用Ansible配置GNOME桌面设置。

此配置只适用于较新的发行版(例如我将在示例中使用的Ubuntu18.04)。较旧版本的Ubuntu将无法运行,因为它们附带了一个老版本的python-psutils,对于Ansible的dconf模块无法正常工作。如果你使用的是较新版本的Linux发行版,则应该没有问题。

在开始之前,确保你已经完成了本系列的第一部分和第二部分,因为第三部分建立在此基础之上的。如果还没有,下载前两篇文章中一直使用的GitHub仓库,我们将为其添加更多功能。

设置壁纸和锁屏首先,我们将创建一个任务手册来保存我们的GNOME设置。在仓库的根目录中,应该有一个名为local.yml的文件,添加以下行:

-include:tasks/gnome.yml整个文件应如下所示:

-hosts:localhostbecome:truepre_tasks:-name:updaterepositoriesapt:update_cacheyeschanged_when:Falsetasks:-include:tasks/users.yml-include:tasks/cron.yml-include:tasks/packages.yml-include:tasks/gnome.yml基本上,这添加了对名为gnome.yml文件的引用,它将存储在仓库内的tasks目录中。我们还没有创建这个文件,现在就来创建它。在tasks目录中创建gnome.yml文件,并将以下内容放入:

-name:Installpython-psutilpackageapt:namepython-psutil-name:Copywallpaperfilecopy:srcfiles/wallpaper.jpgdest/home/jay/.wallpaper.jpgownerjaygroupjaymode600-name:SetGNOMEWallpaperbecome_user:jaydconf:key"/org/gnome/desktop/background/picture-uri"value"'file:///home/jay/.wallpaper.jpg'"注意,此代码多次引用我的用户名(jay),因此确保使用你机器上的用户名替换每次出现的jay。另外,如果你没有像我一样使用Ubuntu18.04,你将必须更改apt一行来匹配你所选择的发行版的包管理器,并确认python-psutil包的名称,因为它可能有所不同。

在示例任务中,我引用了file目录下的wallpaper.jpg文件,此文件必须存在,否则Ansible配置将失败。在tasks目录中,创建一个名为files的子目录。找到你喜欢的壁纸图片,将其命名为wallpaper.jpg,然后把它放在files目录中。如果文件是PNG图像而不是JPG,在代码和仓库中更改文件扩展名。如果你觉得没有创意,我在GitHub仓库中有一个示例壁纸文件,你可以使用它。

完成所有这些更改后,将内容提交到GitHub仓库,并推送这些更改。总结一下,你应该完成以下工作:

修改local.yml文件以引用tasks/gnome.yml使用上面提到的内容创建tasks/gnome.yml在tasks目录中创建一个files目录,其中有一个名为wallpaper.jpg的图像文件(或者你选择的任何名称)。完成这些步骤并将更改推送到仓库后,配置应该在下次计划运行期间自动应用。(你可能还记得我们在上一篇文章中对此进行了自动化。)如果你想节省时间,可以使用以下命令立即应用配置:

sudoansible-pull-Uhttps://github.com//ansible.git如果一切正常,你应该可以看到你的新壁纸。

让我们花一点时间来了解新的GNOME任务手册的功能。首先,我们添加了一个计划来安装python-psutil包。如果不添加它,我们就不能使用dconf模块,因为它需要在修改GNOME设置之前安装这个包。接下来,我们使用copy模块将壁纸文件复制到我们的home目录,并将生成的文件命名为以点开头的隐藏文件。如果你不希望此文件放在home目录的根目录中,你可以随时指示此部分将其复制到其它位置——只要你在正确的位置引用它,它仍然可以工作。在下一个计划中,我们使用dconf模块来更改GNOME设置。在这种情况下,我们调整了/org/gnome/desktop/background/picture-uri键并将其设置为file:///home/jay/.wallpaper.jpg。注意本节中的引号——你必须在dconf值中使用两个单引号,如果值是一个字符串,还必须包含在双引号内。

现在,让我们进一步进行配置,并将背景应用于锁屏。这是现在的GNOME任务手册,但增加了两个额外的计划:

-name:Installpython-psutilpackageapt:namepython-psutil-name:Copywallpaperfilecopy:srcfiles/wallpaper.jpgdest/home/jay/.wallpaper.jpgownerjaygroupjaymode600-name:SetGNOMEwallpaperdconf:key"/org/gnome/desktop/background/picture-uri"value"'file:///home/jay/.wallpaper.jpg'"-name:Copylockscreenfilecopy:srcfiles/lockscreen.jpgdest/home/jay/.lockscreen.jpgownerjaygroupjaymode600-name:Setlockscreenbackgroundbecome_user:jaydconf:key"/org/gnome/desktop/screensaver/picture-uri"value"'file:///home/jay/.lockscreen.jpg'"正如你所看到的,我们做的事情和设置壁纸时差不多。我们添加了两个额外的任务,一个是复制锁屏图像并将其放在我们的home目录中,另一个是将设置应用于GNOME以便使用它。同样,确保将jay更改为你的用户名,并命名你想要的锁屏图片lockscreen.jpg,并将其复制到files目录。将这些更改提交到仓库后,在下一次计划的Ansible运行期间就会应用新的锁屏。

应用新的桌面主题设置壁纸和锁屏背景很酷,但是让我们更进一步来应用桌面主题。首先,让我们在我们的任务手册中添加一条指令来安装arc主题的包。将以下代码添加到GNOME任务手册的开头:

-name:Installarcthemeapt:namearc-theme然后,在底部,添加以下动作:

-name:SetGTKthemebecome_user:jaydconf:key"/org/gnome/desktop/interface/gtk-theme"value"'Arc'"你看到GNOME的GTK主题在你眼前变化了吗?我们添加了一个动作来通过apt模块安装arc-theme包,另一个动作将这个主题应用到GNOME。

进行其它定制既然你已经更改了一些GNOME设置,你可以随意添加其它定制。你在GNOME中调整的任何设置都可以通过这种方式自动完成,设置壁纸和主题只是几个例子。你可能想知道如何找到要更改的设置,以下是一个我用的技巧。

首先,通过在你管理的计算机上运行以下命令,获取所有当前dconf设置的快照:

dconfdump/>before.txt此命令将所有当前更改导出到名为before.txt的文件中。接下来,手动更改要自动化的设置,并再次获取dconf设置:

dconfdump/>after.txt现在,你可以使用diff命令查看两个文件之间的不同之处:

diffbefore.txtafter.txt这应该会给你一个已更改键值的列表。虽然手动更改设置确实违背了自动化的目的,但你实际上正在做的是获取更新首选设置时更改的键,这允许你创建Ansible任务以修改这些设置,这样你就再也不需要碰这些设置了。如果你需要还原机器,Ansible仓库会处理好你的每个定制。如果你有多台计算机,甚至是一组工作站,则只需手动进行一次更改,所有其他工作站都将应用新设置并完全同步。

最后如果你已经阅读完本系列文章,你应该知道如何设置Ansible来自动化工作站。这些示例提供了一个有用的基础,你可以使用这些语法和示例进行其他定制。随着你的进展,你可以继续添加新的修改,这将使你的Ansible配置一直增长。

我已经用Ansible以这种方式自动化了一切,包括我的用户帐户和密码、Vim、tmux等配置文件、桌面包、SSH设置、SSH密钥,基本上我想要自定义的一切都使用了。以本系列文章作为起点,将为你实现工作站的完全自动化铺平道路。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档