当前位置: 首页 > 科技观察

使用Ansible管理您的工作站:配置桌面设置

时间:2023-03-14 16:22:04 科技观察

在本系列的第三篇(也是最后一篇)文章中,我们将使用Ansible自动配置GNOME桌面设置。在本系列的第一篇关于使用Ansible配置工作站的文章中,我们设置了一个存储库并配置了一些基本的东西。在第二篇文章中,我们将Ansible配置为在对存储库进行更改时自动应用设置。在第三篇(也是最后一篇)文章中,我们将使用Ansible配置GNOME桌面设置。此配置仅适用于较新的发行版(例如我将在示例中使用的Ubuntu18.04)。旧版本的Ubuntu将无法工作,因为它们附带旧版本的python-psutils,该版本不能与Ansible的dconf模块一起正常工作。如果您使用的是较新版本的Linux发行版,应该没问题。在开始之前,请确保您已完成本系列的第1部分和第2部分,因为第3部分建立在这个基础上。如果您还没有,请下载我们在前两篇文章中使用的GitHub存储库,因为我们将向其中添加更多功能。设置墙纸和锁定屏幕首先,我们将创建一个任务簿来保存我们的GNOME设置。在存储库的根目录中,应该有一个名为local.yml的文件,添加以下行:-include:tasks/gnome.yml整个文件应该如下所示:-hosts:localhostbecome:truepre_tasks:-name:更新存储库apt:update_cache=yeschanged_when:Falsetasks:-include:tasks/users.yml-include:tasks/cron.yml-include:tasks/packages.yml-include:tasks/gnome.yml基本上,这增加了对对名为gnome.yml的文件的引用,该文件将存储在存储库的任务目录中。我们还没有创建这个文件,所以让我们现在创建它。在tasks目录下新建gnome.yml文件,放入以下内容:-name:安装python-psutil包apt:name=python-psutil-name:复制壁纸文件copy:src=files/wallpaper.jpgdest=/home/jay/.wallpaper.jpgowner=jaygroup=jaymode=600-name:设置GNOME壁纸become_user:jaydconf:key="/org/gnome/desktop/background/picture-uri"value="'file:///home/jay/.wallpaper.jpg'"请注意,此代码多次引用我的用户名(jay),因此请确保将每次出现的jay替换为您计算机上的用户名。此外,如果您不像我一样使用Ubuntu18.04,则必须更改apt行以匹配您选择的发行版包管理器,并确认python-psutil包名称,因为它可能会有所不同。在示例任务中,我引用了文件目录中的wallpaper.jpg文件,此文件必须存在,否则Ansible配置将失败。在任务目录中,创建一个名为files的子目录。找一张你喜欢的壁纸图片,命名为wallpaper.jpg,放在files目录下。如果文件是PNG图像而不是JPG,请更改代码和存储库中的文件扩展名。如果您觉得没有想法,可以使用我的GitHub存储库中的样本墙纸文件。完成所有这些更改后,将内容提交到GitHub存储库并推送更改。总而言之,您应该完成以下操作:修改local.yml文件以引用tasks/gnome.yml使用上述内容创建tasks/gnome.yml在任务目录中创建一个文件目录,其中包含一个名为wallpaper.jpg图像的文件文件(或您选择的任何名称)。完成这些步骤并将更改推送到存储库后,应该会在下一次计划运行期间自动应用配置。(您可能还记得我们在之前的帖子中将其自动化。)如果您想节省时间,可以立即应用配置:sudoansible-pull-Uhttps://github.com//ansible.git如果一切都很好,你应该看到你的新墙纸了。让我们花点时间了解一下新的GNOME任务簿的功能。首先,我们添加了一个安装python-psutil包的计划。如果不添加它,我们将无法使用dconf模块,因为它要求在修改GNOME设置之前安装此包。接下来,我们使用复制模块将墙纸文件复制到我们的主目录,并将生成的文件命名为以点开头的隐藏文件。如果您不希望此文件位于您的主目录的根目录中,您可以随时指示此部分将其复制到其他位置——只要您在正确的位置引用它,它仍然可以工作。在下一个项目中,我们使用dconf模块来更改GNOME设置。在这种情况下,我们调整了/org/gnome/desktop/background/picture-uri键并将其设置为file:///home/jay/.wallpaper.jpg。请注意本节中的引号——您必须在dconf值中使用两个单引号,如果该值是字符串,则还必须用双引号括起来。现在,让我们更进一步,将背景应用到锁定屏幕。这是当前的GNOME任务簿,但添加了两个额外的计划:-name:Installpython-psutilpackageapt:name=python-psutil-name:Copywallpaperfilecopy:src=files/wallpaper.jpgdest=/home/jay/.wallpaper.jpgowner=jaygroup=jaymode=600-name:设置GNOME壁纸dconf:key="/org/gnome/desktop/background/picture-uri"value="'file:///home/jay/.wallpaper.jpg'"-name:Copylockscreenfilecopy:src=files/lockscreen.jpgdest=/home/jay/.lockscreen.jpgowner=jaygroup=jaymode=600-name:设置锁屏背景become_user:jaydconf:key="/org/gnome/desktop/screensaver/picture-uri"value="'file:///home/jay/.lockscreen.jpg'"如你所见,我们做的和when一样设置壁纸。我们添加了两个额外的任务,一个是复制锁屏图像并将其放在我们的主目录中,另一个是将设置应用到GNOME以便使用它。同样,确保将jay更改为您的用户名并将所需的锁屏图像命名为lockscreen.jpg并将其复制到文件目录。一旦将这些更改提交到存储库,新的锁屏将在下一次计划的Ansible运行期间应用。应用一个新的桌面主题来设置你的墙纸和锁屏背景很酷,但让我们更进一步,应用一个桌面主题。首先,让我们在任务簿中添加一条指令来安装arc-themed包。将以下代码添加到GNOME任务簿的开头:-name:Installarcthemeapt:name=arc-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密钥,基本上我想自定义的都用到了。以本系列文章为起点,将为您实现工作站的完全自动化铺平道路。