溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用Ansible管理工作站配置

發(fā)布時間:2021-10-23 10:20:00 來源:億速云 閱讀:240 作者:小新 欄目:系統(tǒng)運維

這篇文章給大家分享的是有關(guān)怎么使用Ansible管理工作站配置的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

配置管理是服務器管理和 DevOps 的一個非常重要的方面?!?ruby>基礎(chǔ)架構(gòu)即代碼infrastructure as code”方法可以輕松地以各種配置部署服務器,并動態(tài)擴展組織的資源以滿足用戶需求。但是,對于希望自動設置自己的筆記本電腦和臺式機(工作站)的個人管理員的關(guān)注較少。

在本系列中,我將向你展示如何通過 Ansible   自動化你的工作站設置,如果你想要或需要重新安裝你的機器,這可以讓你輕松恢復整個配置。此外,如果你有多個工作站,則可以使用相同的方法在每個工作站上進行相同的配置。在***篇文章中,我們將為個人或工作計算機設置基本的配置管理,并為本系列的其余部分奠定基礎(chǔ)。到本文結(jié)束時,你將會因此得到一個可以工作的環(huán)境。本系列之后的每篇文章都會自動化更多內(nèi)容并增加復雜性。

為什么用 Ansible?

有許多配置管理解決方案,包括 Salt Stack、Chef 和 Puppet。我更喜歡  Ansible,因為它在資源利用方面更輕量級,語法更容易閱讀,并且如果正確使用它可以徹底改變你的配置管理。Ansible  的輕量級特性與這個主題特別相關(guān),因為我們可能不希望運行一整臺服務器而只是為了自動化我們的筆記本電腦和臺式機的設置。一般我們總是想要快一些;我們可以使用某些東西來快速啟動和運行,以在我們需要恢復的工作站或在多臺機器之間同步我們的配置。我使用  Ansible 的具體方法(我將在本文中演示)非常適用于此,而不需要維護服務器。你只需下載配置并運行它。

我的方法

通常,Ansible 運行于中央服務器。它使用一個庫存清單inventory文件,該文件是一個文本文件,其中包含我們希望  Ansible 管理的所有主機及其 IP  地址或域名的列表。這對于靜態(tài)環(huán)境非常有用,但對于工作站來說并不理想。原因是我們真的不知道我們的工作站在某一時刻的狀態(tài)。也許我關(guān)閉了臺式電腦,或者筆記本電腦可能會被掛起并放在我的包里。在任何一種情況下,Ansible  服務器都會抱怨,因為如果它們處于脫機狀態(tài),Ansible 就無法聯(lián)系到我的機器。我們更需要的是按需方式,我們通過利用 ansible-pull 來實現(xiàn)這一目標。ansible-pull 命令是 Ansible 的一個命令,允許你從 Git 倉庫下載配置并立即應用它。你不需要維護服務器或庫存清單;你只需運行 ansible-pull 命令,給它一個 Git 倉庫 URL,它將為你完成剩下的工作。

起步

首先,在要管理的計算機上安裝 Ansible。有一個問題是許多發(fā)行版都附帶了舊版本的  Ansible。根據(jù)經(jīng)驗,你肯定希望獲得***版本。Ansible  中經(jīng)常引入新功能,如果你運行的是舊版本,則你在網(wǎng)上找到的示例語法可能無法正常運行,因為它使用的功能未在你安裝的版本中實現(xiàn)。甚至發(fā)布的小版本都有很多新功能。其中一個例子是  dconf 模塊,它是從 Ansible 2.4 開始的新功能。如果你嘗試使用使用此模塊的語法,除非你使用 2.4 或更新版本,否則會失敗。在 Ubuntu 及其衍生產(chǎn)品中,我們可以使用官方個人包存檔(PPA)輕松安裝***版本的 Ansible。以下命令可以解決這個問題:

sudo apt-get install software-properties-commonsudo apt-add-repository ppa:ansible/ansiblesudo apt-get updatesudo apt-get install ansible

如果你沒有使用 Ubuntu,請參閱 Ansible 的文檔 了解如何為你的平臺獲取它。

接下來,我們需要一個 Git 倉庫來保存我們的配置。滿足此要求的最簡單方法是在 GitHub  上創(chuàng)建一個空的倉庫,或者如果有的話,也可以使用自己的 Git 服務器。為了簡單起見,我假設你正在使用  GitHub,因此如果你正在使用其他倉庫,請相應調(diào)整命令。在 GitHub 中創(chuàng)建一個倉庫;你最終會得到一個與此類似的倉庫 URL:

git@github.com:<your_user_name>/ansible.git

將該倉庫克隆到你的本地工作目錄(忽略任何抱怨倉庫為空的消息):

git clone git@github.com:<your_user_name>/ansible.git

現(xiàn)在我們有了一個可以使用的空倉庫。將你的工作目錄切換到倉庫(例如 cd ./ansible),并在你喜歡的文本編輯器中創(chuàng)建名為 local.yml 的文件。將以下配置放在該文件中:

- hosts: localhost  become: true  tasks:  - name: Install htop    apt: name=htop

你剛剛創(chuàng)建的文件被稱為劇本playbook,安裝 htop 的指令(我任意選擇的一個包作為例子)被稱為動作play。劇本本身是一個 YAML 格式的文件,它是一種易于閱讀的標記語言。對 YAML 的完整講述超出了本文的范圍,但你無需專業(yè)理解即可熟練使用 Ansible。該配置易于閱讀;只需查看此文件,你就可以輕松理解我們正在安裝的 htop 軟件包。要注意一下***一行的 apt 模塊,它只適用于基于 Debian 的系統(tǒng)。如果你使用的是 Red Hat 平臺,你可以將其更改為 yum 而不是 apt,或者如果你正在使用 Fedora,則將其更改為 dnfname 行只是提供有關(guān)我們?nèi)蝿盏男畔?,并將顯示在輸出中。因此,你需要確保名稱具有描述性,以便在需要對多個動作進行故障排除時很容易找到。

接下來,讓我們將新文件提交到我們的倉庫:

git add local.ymlgit commit -m "initial commit"git push origin master

現(xiàn)在我們的新劇本應該出現(xiàn)在我們的 GitHub 上的倉庫中。我們可以使用以下命令應用我們創(chuàng)建的劇本:

sudo ansible-pull -U https://github.com/<your_user_name>/ansible.git

如果執(zhí)行正確,htop包應該會安裝在你的系統(tǒng)上。你可能會在開頭附近看到一些警告,抱怨缺少庫存清單文件。這很好,因為我們沒有使用庫存清單文件(我們也不需要這樣做)。在輸出結(jié)束時,它將概述它做的內(nèi)容。如果 htop 安裝正確,你應該在輸出的***一行看到 changed = 1

它是如何工作的呢?ansible-pull 命令使用了 -U 選項,它需要一個倉庫 URL。出于安全考慮,我給它提供了倉庫 URL 的 https 版本,因為我不希望任何主機對倉庫具有寫訪問權(quán)限(默認情況下 https 是只讀的)。local.yml 是預設的劇本名稱,因此我們不需要為劇本提供文件名:如果它在倉庫的根目錄中找到名為 local.yml 的劇本,它將自動運行它。接下來,我們在命令前面使用了 sudo,因為我們正在修改系統(tǒng)。

讓我們繼續(xù)為我們的劇本添加更多的包。我將添加兩個包,使它看起來像這樣:

- hosts: localhost  become: true  tasks:  - name: Install htop    apt: name=htop   - name: Install mc    apt: name=mc     - name: Install tmux    apt: name=tmux

我添加了更多的動作(任務)來安裝另外兩個包,mctmux。在此劇本中選擇安裝的哪些軟件包并不重要;我只是隨意挑選這些。你應該安裝你希望所有的系統(tǒng)都具有的軟件包。唯一需要注意的是,在你分發(fā)前,你必須知道那個包存在于軟件倉庫中。

在我們提交并應用這個更新的劇本之前,我們應該整理一下它。它可以很好地工作,但(說實話)它看起來有點混亂。讓我們嘗試在一個動作中安裝所有三個包。用下面這個替換你的 local.yml 的內(nèi)容:

- hosts: localhost  become: true  tasks:  - name: Install packages    apt: name={{item}}    with_items:      - htop      - mc      - tmux

現(xiàn)在看起來更干凈、更有效率了。我們使用 with_items 將我們的包列表合并為一個動作。如果我們想要添加其他包,我們只需添加另一個帶有連字符和包名稱的行??梢园?with_items 看做類似于 for 循環(huán)。我們列出的每個包都將安裝。

將我們的新更改提交回倉庫:

git add local.ymlgit commit -m "added additional packages, cleaned up formatting"git push origin master

現(xiàn)在我們可以運行我們的劇本以接受新的新配置:

sudo ansible-pull -U https://github.com/<your_user_name>/ansible.git

不可否認,這個例子還沒有做多少事情;它所做的就是安裝一些軟件包。你可以使用包管理器更快地安裝這些包。然而,隨著這個系列的繼續(xù),這些例子將變得更加復雜,我們將自動化更多的東西。***,你創(chuàng)建的  Ansible 配置將自動執(zhí)行越來越多的任務。例如,我自己使用的那個配置可以自動安裝數(shù)百個軟件包、設置cron 作業(yè)、處理桌面配置等等。

從我們迄今為止所取得的成就來看,你可能已經(jīng)有了大概了解。我們所要做的就是創(chuàng)建一個倉庫,在該倉庫中放置一個劇本,然后利用 ansible-pull 命令拉取該倉庫并將其應用到我們的機器上。我們不需要設置服務器。將來,如果我們想要更改配置,我們可以拉取該倉庫、更新它,然后將其推回到我們的倉庫并應用它。如果我們要設置新機器,我們只需要安裝 Ansible 并應用配置。

感謝各位的閱讀!關(guān)于“怎么使用Ansible管理工作站配置”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI