使用 Ansible 管理你的工作站:配置桌面設定
在本系列第三篇(也是最後一篇)文章中,我們將使用 Ansible 自動化配置 GNOME 桌面設定。
在本系列關於使用 Ansible 配置工作站的第一篇文章中,我們設定了一個倉庫並配置了一些基本的東西。在第二篇文章中,我們配置了 Ansible 以使其在對倉庫進行更改時自動應用設定。在第三篇(也是最後一篇)文章中,我們將使用 Ansible 配置 GNOME 桌面設定。
此配置只適用於較新的發行版(例如我將在示例中使用的 Ubuntu 18.04)。較舊版本的 Ubuntu 將無法執行,因為它們附帶了一個老版本的 python-psutils
,對於 Ansible 的 dconf
模組無法正常工作。如果你使用的是較新版本的 Linux 發行版,則應該沒有問題。
在開始之前,確保你已經完成了本系列的第一部分和第二部分,因為第三部分建立在此基礎之上的。如果還沒有,下載前兩篇文章中一直使用的 GitHub 倉庫,我們將為其新增更多功能。
設定桌布和鎖屏
首先,我們將建立一個任務手冊來儲存我們的 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
包的名稱,因為它可能有所不同。
在示例任務中,我引用了 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
的影象檔案(或者你選擇的任何名稱)。
完成這些步驟並將更改推送到倉庫後,配置應該在下次計劃執行期間自動應用。(你可能還記得我們在上一篇文章中對此進行了自動化。)如果你想節省時間,可以使用以下命令立即應用配置:
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 金鑰,基本上我想要自定義的一切都使用了。以本系列文章作為起點,將為你實現工作站的完全自動化鋪平道路。
via: https://opensource.com/article/18/5/manage-your-workstation-ansible-part-3
作者:Jay LaCroix 選題:lujun9972 譯者:MjSeven 校對:wxy
訂閱“Linux 中國”官方小程式來檢視
相關文章
- windows遠端桌面設定,windows遠端桌面設定的方法Windows
- ansible設定環境變數變數
- ansible 設定環境變數變數
- 後臺配置元件——使用最簡單的方式管理你的專案配置元件
- 如何設定Ansible AWS的動態清單
- Ansible的原理與配置
- ansible部署配置
- Ansible6--------ansible中的角色使用
- 如何使用 Ansible 配置 Vim並安裝外掛
- android設定桌面小部件Android
- 怎麼設定MacOS的多工桌面Mac
- Vivado使用技巧(11):設定FPGA配置模式FPGA模式
- Flutter 中使用 Widgetbook 管理你的元件Flutter元件
- Mac電腦怎麼設定動態桌面,heic動態桌面桌布怎麼使用Mac
- Ubuntu 設定遠端桌面(RDP)Ubuntu
- win10設定遠端桌面連線的方法_win10如何設定遠端桌面連線Win10
- 又雙叒叕搶行了?使用 React 管理你的設計資產React
- 如何設定weblogic的nodemanger配置Web
- 使用Ansible為叢集初始化並配置免密
- 使用 Bitwarden 和 Podman 管理你的密碼密碼
- 使用【Path Finder】來管理你的檔案
- Windows遠端桌面設定多使用者同時登入Windows
- C# 設定桌面動態桌布C#
- VS Code使用之基本設定與配置詳解
- 如何遠端連線 桌面設定遠端桌面連線
- jinja 模板設計者文件¶- 可以在ansible的playbook中使用
- SpreadJS使用進階指南 - 使用 NPM 管理你的專案JSNPM
- “微信公眾號-設定-基本配置”的配置
- linux定時任務的設定 crontab 配置指南Linux
- Swoft 配置的設定和讀取
- win10如何設定桌面顯示圖示_windows10顯示桌面圖示設定方法Win10Windows
- win10遠端桌面設定步驟_win10怎樣設定遠端桌面連線Win10
- 怎麼使用pipenv管理你的python專案Python
- 如何使用 Bitwarden 和 Podman 管理你的密碼密碼
- 使用碼雲管理你的專案程式碼
- 使用supervisor管理你的nginx、php-fpm程式NginxPHP
- 使用Ansible管理WindowsWindows
- Ansible自動化配置詳解