成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何使用Ansible安裝軟件

運維 系統運維
Ansible 是系統管理員和開發人員用來保持計算機系統處于最佳狀態的一種流行的自動化工具。使用 Ansible 劇本自動安裝和更新設備上的軟件。

[[345428]]

使用 Ansible 劇本自動安裝和更新設備上的軟件。

Ansible 是系統管理員和開發人員用來保持計算機系統處于最佳狀態的一種流行的自動化工具。與可擴展框架一樣,Ansible 本身功能有限,它真正的功能體現在許多模塊中。在某種程度上,Ansible 模塊就是 Linux 系統的命令。它們針對特定問題提供解決方案,而維護計算機時的一項常見任務是使所有計算機的更新和一致。

我曾經使用軟件包的文本列表來保持系統或多或少的同步:我會列出筆記本電腦上安裝的軟件包,然后將其與臺式機或另一臺服務器之間進行交叉參考,手動彌補差異。當然,在 Linux 機器上安裝和維護應用程序是 Ansible 的一項基本功能,這意味著你可以在自己關心的計算機上列出所需的內容。

尋找正確的 Ansible 模塊

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

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

動手寫一個 Ansible 劇本

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

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

  1. $ mkdir ~/install_packages

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

  1. $ touch ~/install_packages/site.yml

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

  1. ---
  2. - hosts: localhost
  3. tasks:
  4. - name: install packages
  5. become: true
  6. become_user: root
  7. dnf:
  8. state: present
  9. name:
  10. - tcsh
  11. - 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 命令的手冊頁一樣,模塊文檔會告訴你可用的選項和所需的參數。

 

Ansible 文檔

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

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

驗證 YAML

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

在 Fedora 或 CentOs 上:

  1. $ sudo dnf ins tall yamllint python3-ansible-lint

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

  1. $ sudo apt install yamllint ansible-lint

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

  1. $ ansible-lint ~/install_packages/site.yml

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

使用 Ansible 安裝一個應用

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

開始安裝:

  1. $ ansible-playbook --ask-become-pass ~/install_packages/site.yml
  2. BECOME password:
  3. PLAY [localhost] ******************************
  4.  
  5. TASK [Gathering Facts] ******************************
  6. ok: [localhost]
  7.  
  8. TASK [install packages] ******************************
  9. ok: [localhost]
  10.  
  11. PLAY RECAP ******************************
  12. 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 定義:

  1. ---
  2. - hosts: all
  3.   tasks:
  4.     - name: install packages
  5.       become: true
  6.       become_user: root
  7.       dnf:
  8.         state: present
  9.         name:
  10.          - tcsh
  11.          - htop

再次運行 ansible-playbook

  1. $ 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 模塊。

  1. ---
  2. - hosts: all
  3.   tasks:
  4.     - name: install packages
  5.       become: true
  6.       become_user: root
  7.       action: >
  8.        {{ ansible_pkg_mgr }} name=htop,transmission state=present update_cache=yes

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

  1. TASK [Gathering Facts] *****************************************
  2. ok: [localhost]

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

使用 Ansible

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

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2017-06-09 14:22:31

AnsibleTiDB分布式數據庫

2020-01-02 10:44:22

運維架構技術

2022-06-15 10:12:04

Ansible命令Linux

2019-09-08 17:04:00

DebianLinuxAnsible

2020-01-02 19:00:05

AnsibleGitHubGitLab

2016-10-24 09:09:48

AnsibleVagrantFedora

2023-06-25 18:53:03

2020-04-16 08:00:00

Ansible Vau敏感數據加密

2022-11-21 16:57:20

2011-01-06 13:22:00

2023-04-10 07:23:24

軟件微服務網絡

2017-12-18 09:02:42

Red Hat SysAnsible集成

2018-02-23 15:15:31

UbuntuAnsibleAmazon EC2

2010-02-23 17:47:27

Fedora RPM

2021-10-14 09:55:28

AnsibleanacronLinux

2019-07-16 16:40:00

Ansible工作站配置

2020-02-04 13:58:11

存儲云存儲IT

2023-04-02 21:45:46

Vim文本編輯器

2011-03-10 15:47:45

2021-05-17 12:54:04

AnsiblePodman開源
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品国产三级国产aⅴ中文 | 日本一卡精品视频免费 | 日本在线小视频 | 91色站| 亚洲午夜精品一区二区三区他趣 | 婷婷丁香在线视频 | 精品国产免费人成在线观看 | 自拍偷拍欧美 | 丁香五月缴情综合网 | 亚洲国产精品一区二区久久 | 91视频网 | 欧美理伦片在线播放 | 成年人视频在线免费观看 | 亚洲国产专区 | 91亚洲精品在线观看 | 91在线精品视频 | 99re热精品视频 | 日韩视频在线免费观看 | 成人精品一区二区三区中文字幕 | 日本不卡视频 | 亚洲午夜小视频 | 羞羞视频免费在线 | 中文字幕 在线观看 | 欧美一级免费 | 黄色一级大片在线免费看产 | www.一区二区三区 | 男人天堂免费在线 | 亚洲区一区二 | 99免费精品 | 国产特级毛片aaaaaa | 99热视| 国产成人jvid在线播放 | 国产在线第一页 | 亚洲精品一区二区在线观看 | 你懂的在线视频播放 | 日韩精品一区二区三区第95 | 欧美精品久久久 | 国产美女精品视频免费观看 | 免费精品 | xx视频在线 | wwwww在线观看 |