配置管理 ansible
在本系列的第一篇有关使用Ansible配置工作站的文章中,我们建立了一个存储库并配置了一些基本的东西。 在第二部分中 ,我们自动使Ansible在对存储库进行更改时自动应用设置。 在第三篇(也是最后一篇)文章中,我们将使用Ansible配置GNOME桌面设置。
此配置仅适用于较新的发行版(例如我将在示例中使用的Ubuntu 18.04)。 较旧的Ubuntu版本将无法使用,因为它们随附的python-psutils
版本过旧,导致Ansible的dconf
模块无法正常工作。 如果您使用的是Linux发行版的较新版本,则应该没有问题。
在开始之前,请确保您已经完成了本系列的第一和第二部分,而第三部分是建立在该基础之上的。 如果尚未下载,请下载前两篇文章中一直在使用的存储库 。 我们将为其添加更多功能。
设置墙纸并锁定屏幕
首先,我们将创建一个任务簿来保存我们的GNOME设置。 在存储库的根目录中,应该有一个名为local.yml
的文件。 向其添加以下行:
- include: tasks/gnome.yml
现在,整个文件应如下所示:
- hosts: localhost
become: true
pre_tasks:
- name: update repositories
apt: update_cache=yes
changed_when: False
tasks:
- include: tasks/users.yml
- include: tasks/cron.yml
- include: tasks/packages.yml
- include: tasks/gnome.yml
基本上,这添加了对名为gnome.yml
的文件的引用,该文件将存储在资源库内的tasks
目录中。 我们尚未创建此文件,所以现在开始做。 在tasks
目录中创建gnome.yml
文件,并将以下内容放入其中:
- name: Install python-psutil package
apt: name=python-psutil
- name: Copy wallpaper file
copy: src=files/wallpaper.jpg dest=/home/jay/.wallpaper.jpg owner=jay group=jay mode=600
- name: Set GNOME Wallpaper
become_user: jay
dconf: key="/org/gnome/desktop/background/picture-uri" value="'file:///home/jay/.wallpaper.jpg'"
请注意,此代码多次引用了我的用户名( jay
),因此请确保将每次出现的jay
替换为您在计算机上使用的用户名。 另外,如果您不使用Ubuntu 18.04(按我的方式),则必须更改apt
行以匹配所选发行版的软件包管理器,并确认发行版的python-psutil
软件包的名称,如下所示:可能会有所不同。
files
目录中的wallpaper.jpg
。
该文件必须存在,否则Ansible配置将失败。
在tasks
目录中,创建一个名为files
的子目录。
找到您喜欢的墙纸图像,将其命名为wallpaper.jpg
,并将其放置在files
目录中。
如果文件是PNG图像而不是JPG,请在代码和存储库中都更改文件扩展名。
如果您不觉得有创意,可以在本系列文章的资源库中找到一个示例墙纸文件。
完成所有这些更改后,将所有内容提交到存储库,然后推送这些更改。 回顾一下,您应该完成以下步骤:
- 修改了
local.yml
文件以引用tasks/gnome.yml
剧本 - 使用上述内容创建了
tasks/gnome.yml
剧本 - 在
tasks
目录中创建了一个files
目录,其中包含一个名为wallpaper.jpg
的图像文件(或您选择的任何名称)。
完成这些步骤并将更改推回存储库后,应在下一次计划运行期间自动应用配置。 (您可能还记得我们在上一篇文章中对此进行了自动化。)如果您很着急,可以使用以下命令立即应用配置:
sudo ansible-pull -U https://github.com/<github_user>/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: Install python-psutil package
apt: name=python-psutil
- name: Copy wallpaper file
copy: src=files/wallpaper.jpg dest=/home/jay/.wallpaper.jpg owner=jay group=jay mode=600
- name: Set GNOME wallpaper
dconf: key="/org/gnome/desktop/background/picture-uri" value="'file:///home/jay/.wallpaper.jpg'"
- name: Copy lockscreenfile
copy: src=files/lockscreen.jpg dest=/home/jay/.lockscreen.jpg owner=jay group=jay mode=600
- name: Set lock screen background
become_user: jay
dconf: key="/org/gnome/desktop/screensaver/picture-uri" value="'file:///home/jay/.lockscreen.jpg'"
如您所见,我们几乎在做与墙纸相同的事情。 我们添加了两个附加任务,一个任务是复制锁定屏幕图像并将其放置在我们的home
目录中,另一个任务是将该设置应用于GNOME以便使用。 同样,请确保从jay
更改用户名,并命名所需的锁屏图片lockscreen.jpg
并将其复制到files
目录。 将这些更改提交到存储库后,应在下一次计划的Ansible运行期间应用新的锁定屏幕。
应用新的桌面主题
设置墙纸和锁屏背景非常酷,但让我们更进一步,应用桌面主题。 首先,让我们在任务簿中添加一条说明,以安装用于arc
主题的软件包。 将以下代码添加到GNOME任务簿的开头:
- name: Install arc theme
apt: name=arc-theme
然后,在底部添加以下播放:
- name: Set GTK theme
become_user: jay
dconf: key="/org/gnome/desktop/interface/gtk-theme" value="'Arc'"
您是否在眼前看到GNOME的GTK主题发生了变化? 我们添加了一个通过apt
模块安装arc-theme
软件包的玩法,以及另一个将该主题应用于GNOME的游戏。
进行其他自定义
现在,您已经更改了一些GNOME设置,可以随时自行添加其他自定义设置。 您可以在GNOME中进行调整的任何设置都可以通过这种方式自动进行; 设置墙纸和主题只是几个示例。 您可能想知道如何找到要更改的设置。 这是一个对我有用的技巧。
首先,通过在要管理的计算机上运行以下命令,对所有当前dconf
设置进行快照:
dconf dump / > before.txt
此命令将当前所有更改导出到名为before.txt
的文件。 接下来,手动更改要自动化的设置,然后再次捕获dconf
设置:
dconf dump / > after.txt
现在,您可以使用diff
命令查看两个文件之间的区别:
diff before.txt after.txt
这应该给您列出了已更改的键。 确实,手动更改设置会破坏自动化的目的,但实际上,您要做的是捕获在更新首选设置时更改的键,这样您就可以创建Ansible剧本来修改这些设置,因此您永远不需要再次触摸这些设置。 如果您需要还原计算机,则Ansible存储库将处理您的每个自定义项。 如果您有多台计算机,甚至有一组工作站,则只需手动 进行一次更改,所有其他工作站将应用新设置并完全同步。
结语
如果按照本系列进行了学习,则应该知道如何设置Ansible来使您的工作站自动化。 这些示例提供了有用的基准,您可以使用语法和示例进行其他自定义。 在进行过程中,您可以继续添加新的修改,这将使您的Ansible配置随时间增长。
我以这种方式使用Ansible来自动化一切,包括我的用户帐户和密码。 Vim,tmux等的配置文件; 桌面套件; SSH设置; SSH密钥; 基本上我想自定义的所有内容 以本系列文章为起点,将为您完全自动化工作站铺平道路。
翻译自: https://opensource.com/article/18/5/manage-your-workstation-ansible-part-3
配置管理 ansible