中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

Linux下如何使用Ansible安裝軟件

發布時間:2022-01-26 10:59:12 來源:億速云 閱讀:142 作者:小新 欄目:開發技術

這篇文章主要介紹了Linux下如何使用Ansible安裝軟件,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

ansible是新出現的自動化運維工具,基于Python開發,集合了眾多運維工具的優點,實現了批量系統配置、批量程序部署、批量運行命令等功能。

Linux下如何使用Ansible安裝軟件

尋找正確的 Ansible 模塊

Ansible 模塊的數量非常龐大,如何找到能完成你任務的模塊?在 Linux 中,你可以在應用程序菜單或 /usr/bin 中查找要運行的應用程序。使用 Ansible 時,你可以參考 Ansible 模塊索引

這個索引按照類別列出。稍加搜索,你就很可能找到所需的模塊。對于包管理,Packaging 模塊幾乎適用于所有帶包管理器的系統。

動手寫一個 Ansible 劇本

首先,選擇本地計算機上的包管理器。例如,如果你打算在運行 Fedora 的筆記本電腦上編寫 Ansible 指令(在 Ansible 中稱為“劇本playbook”),那么從 dnf 模塊開始。如果你在 Elementary OS 上編寫,使用 apt 模塊,以此類推。這樣你就可以開始進行測試和驗證,并可以在以后擴展到其它計算機。

第一步是創建一個代表你的劇本的目錄。這不是絕對必要的,但這是一個好習慣。Ansible 只需要一個配置文件就可以運行在 YAML 中,但是如果你以后想要擴展劇本,你就可以通過改變目錄和文件的方式來控制 Ansible。現在,只需創建一個名為 install_packages 或類似的目錄:

$ mkdir ~/install_packages

你可以根據自己的喜好來命名 Ansible 的劇本,但通常將其命名為 site.yml:

$ touch ~/install_packages/site.yml

在你最喜歡的文本編輯器中打開 site.yml,添加以下內容:

---
- hosts: localhost
 tasks:
   - name: install packages
     become: true
     become_user: root
     dnf:
       state: present
       name:
        - tcsh
        - htop

你必須調整使用的模塊名稱以匹配你使用的發行版。在此示例中,我使用 dnf 是因為我在 Fedora Linux 上編寫劇本。

就像 Linux 終端中的命令一樣,知道 如何 來調用 Ansible 模塊就已經成功了一半。這個示例劇本遵循標準劇本格式:

  • hosts 是一臺或多臺計算機。在本示例中,目標計算機是 localhost,即你當前正在使用的計算機(而不是你希望 Ansible 連接的遠程系統)。

  • tasks

    是你要在主機上執行的任務列表。

    • name 是任務的人性化名稱。在這種情況下,我使用 install packages,因為這就是該任務正在做的事情。

    • become 允許 Ansible 更改運行此任務的用戶。

    • become_user 允許 Ansible 成為 root 用戶來運行此任務。這是必須的,因為只有 root 用戶才能使用 dnf 安裝應用程序。

    • dnf 是模塊名稱,你可以在 Ansible 網站上的模塊索引中找到。

dnf 下的節點是 dnf 模塊專用的。這是模塊文檔的關鍵所在。就像 Linux 命令的手冊頁一樣,模塊文檔會告訴你可用的選項和所需的參數。

Linux下如何使用Ansible安裝軟件

Ansible 文檔

安裝軟件包是一個相對簡單的任務,僅需要兩個元素。state 選項指示 Ansible 檢查系統上是否存在 軟件包,而 name 選項列出要查找的軟件包。Ansible 會針對機器的 狀態 進行調整,因此模塊指令始終意味著更改。假如 Ansible 掃描了系統狀態,發現劇本里描述的系統(在本例中,tcsh 和 htop 存在)與實際狀態存在沖突,那么 Ansible 的任務是進行必要的更改來使系統與劇本匹配。Ansible 可以通過 dnf(或 apt 或者其它任何包管理器)模塊進行更改。

每個模塊可能都有一組不同的選項,所以在編寫劇本時,要經常參考模塊文檔。除非你對模塊非常熟悉,否則這是期望模塊完成工作的唯一合理方法。

驗證 YAML

劇本是用 YAML 編寫的。因為 YAML 遵循嚴格的語法,所以安裝 yamllint 來檢查劇本是很有幫助的。更妙的是,有一個專門針對 Ansible 的檢查工具稱為 ansible-lint,它專門為劇本而生。在繼續之前,安裝它。

在 Fedora 或 CentOs 上:

$ sudo dnf ins tall yamllint python3-ansible-lint

在 Debian、Elementary 或 Ubuntu 上,同樣的:

$ sudo apt install yamllint ansible-lint

使用 ansible-link 來驗證你的劇本。如果你無法使用 ansible-lint,你可以使用 yamllint。

$ ansible-lint ~/install_packages/site.yml

成功則不返回任何內容,但如果文件中有錯誤,則必須先修復它們,然后再繼續。復制和粘貼過程中的常見錯誤包括在最后一行的末尾省略換行符、使用制表符而不是空格來縮進。在文本編輯器中修復它們,重新運行 ansible-llint,重復這個過程,直到 ansible-lint 或 yamllint 沒有返回為止。

使用 Ansible 安裝一個應用

現在你有了一個可驗證的有效劇本,你終于可以在本地計算機上運行它了,因為你碰巧知道該劇本定義的任務需要 root 權限,所以在調用 Ansible 時必須使用 --ask-become-pass 選項,因此系統會提示你輸入管理員密碼。

開始安裝:

$ ansible-playbook --ask-become-pass ~/install_packages/site.yml
BECOME password:
PLAY [localhost] ******************************
TASK [Gathering Facts] ******************************
ok: [localhost]
TASK [install packages] ******************************
ok: [localhost]
PLAY RECAP ******************************
localhost: ok=0 changed=2 unreachable=0 failed=0 [...]

這些命令被執行后,目標系統將處于與劇本中描述的相同的狀態。

在遠程系統上安裝應用程序

通過這么多操作來替換一個簡單的命令可能會適得其反,但是 Ansible 的優勢是它可以在你的所有系統中實現自動化。你可以使用條件語句使 Ansible 在不同的系統上使用特定的模塊,但是現在,假定所有計算機都使用相同的包管理器。

要連接到遠程系統,你必須在 /etc/ansible/hosts 文件中定義遠程系統,該文件與 Ansible 是一起安裝的,所以它已經存在了,但它可能是空的,除了一些解釋性注釋之外。使用 sudo 在你喜歡的文本編輯器中打開它。

你可以通過其 IP 地址或主機名(只要主機名可以解析)定義主機。例如,如果你已經在 /etc/hosts 中定義了 liavara 并可以成功 ping 通,那么你可以在 /etc/ansible/hosts 中將 liavara 設置為主機。或者,如果你正在運行一個域名服務器或 Avahi 服務器并且可以 ping 通 liavara,那么你就可以在 /etc/ansible/hosts 中定義它。否則,你必須使用它的 IP 地址。

你還必須成功地建立與目標主機的安全 shell(SSH)連接。最簡單的方法是使用 ssh-copy-id 命令,但是如果你以前從未與主機建立 SSH 連接,閱讀我關于如何創建自動 SSH 連接的文章

一旦你在 /etc/ansible/hosts 文件中輸入了主機名或 IP 地址后,你就可以在劇本中更改 hosts 定義:

---
- hosts: all
 tasks:
   - name: install packages
     become: true
     become_user: root
     dnf:
       state: present
       name:
        - tcsh
        - htop

再次運行 ansible-playbook:

$ ansible-playbook --ask-become-pass ~/install_packages/site.yml

這次,劇本會在你的遠程系統上運行。

如果你添加更多主機,則有許多方法可以過濾哪個主機執行哪個任務。例如,你可以創建主機組(服務器的 webserves,臺式機的 workstations等)。

適用于混合環境的 Ansible

到目前為止,我們一直假定 Ansible 配置的所有主機都運行相同的操作系統(都是是使用 dnf 命令進行程序包管理的操作系統)。那么,如果你要管理不同發行版的主機,例如 Ubuntu(使用 apt)或 Arch(使用 pacman),或者其它的操作系統時,該怎么辦?

只要目標操作系統具有程序包管理器(MacOs 有 HomebrewWindows 有 Chocolatey),Ansible 就能派上用場。

這就是 Ansible 優勢最明顯的地方。在 shell 腳本中,你必須檢查目標主機上有哪些可用的包管理器,即使使用純 Python,也必須檢查操作系統。Ansible 不僅內置了這些功能,而且還具有在劇本中使用命令結果的機制。你可以使用 action 關鍵字來執行由 Ansible 事實收集子系統提供的變量定義的任務,而不是使用 dnf 模塊。

---
- hosts: all
 tasks:
   - name: install packages
     become: true
     become_user: root
     action: >
      {{ ansible_pkg_mgr }} name=htop,transmission state=present update_cache=yes

action 關鍵字會加載目標插件。在本例中,它使用了 ansible_pkg_mgr 變量,該變量由 Ansible 在初始 收集信息 期間填充。你不需要告訴 Ansible 收集有關其運行操作系統的事實,所以很容易忽略這一點,但是當你運行一個劇本時,你會在默認輸出中看到它:

TASK [Gathering Facts] *****************************************
ok: [localhost]

action 插件使用來自這個探針的信息,使用相關的包管理器命令填充 ansible_pkg_mgr,以安裝在 name 參數之后列出的程序包。使用 8 行代碼,你可以克服在其它腳本選項中很少允許的復雜跨平臺難題。

使用 Ansible

現在是 21 世紀,我們都希望我們的計算機設備能夠互聯并且相對一致。無論你維護的是兩臺還是 200 臺計算機,你都不必一次又一次地執行相同的維護任務。使用 Ansible 來同步生活中的計算機設備,看看 Ansible 還能為你做些什么。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Linux下如何使用Ansible安裝軟件”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

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

AI

泸州市| 交口县| 砀山县| 东安县| 尼木县| 北辰区| 辽源市| 收藏| 隆回县| 南靖县| 密云县| 监利县| 沭阳县| 汕尾市| 友谊县| 安化县| 房产| 白山市| 林西县| 南雄市| 霍州市| 万安县| 宁国市| 张掖市| 荔波县| 伊金霍洛旗| 苏尼特右旗| 鄂托克旗| 嘉峪关市| 富阳市| 信阳市| 河池市| 习水县| 平武县| 宿州市| 山西省| 长顺县| 滕州市| 张北县| 宁津县| 宜春市|