Home >> Blog >> 什麼是 Ansible?
什麼是 Ansible?
這是您開始使用 IT 自動化工具 Ansible 需要了解的內容。
Ansible是一種軟體工具,可為跨平台電腦支持提供簡單但功能強大的自動化服務。它主要面向 IT 專業人員,他們將其用於應用程式部署、工作站和伺服器的更新、雲端配置、配置管理、服務內編排以及系統管理員每週或每天所做的幾乎所有事情。Ansible 不依賴代理軟體,也沒有額外的安全基礎設施,因此很容易部署,如果您有架設SEO優化基礎設施,Ansible 會是個好幫手。
因為 Ansible 完全是關於自動化的流程,所以它需要指令來完成每項工作。以簡單的腳本形式寫下所有內容,很容易進行版本控制。這樣做的實際結果是對 IT 中“基礎設施即程式碼”運動的重大貢獻:伺服器和客戶端基礎設施的維護可以而且應該被視為與軟體開發相同的想法,具有自我記錄的存儲庫,經過驗證,和可執行的解決方案,無論人員變動如何,都能運行組織。
雖然 Ansible 可能處於自動化、系統管理和 DevOps 的最前沿,但它對日常用戶也很有用。Ansible 不僅允許您配置一台電腦,還可以一次配置整個電腦網絡,並且使用它不需要任何編程技能。為 Ansible 編寫的指令是人類可讀的。無論您是電腦新手還是專家,Ansible 文件都很容易理解。
Ansible 的工作原理
在 Ansible 中,有兩類電腦:控制節點和託管節點。控制節點是運行 Ansible 的電腦。必須至少有一個控制節點,但也可能存在備用控制節點。受管節點是由控制節點管理的任何設備。
Ansible 通過連接到網絡上的節點(客戶端、伺服器或您正在配置的任何東西),然後向該節點發送一個稱為 Ansible模塊的小程式來工作。Ansible 通過 SSH 執行這些模塊,並在完成後將其刪除。此交互的唯一要求是您的 Ansible 控制節點具有對託管節點的登錄訪問權限。SSH 密鑰是提供訪問的最常見方式,但也支持其他形式的身份驗證。
Ansible 做了什麼
Ansible 模塊這個術語聽起來很複雜,但大部分複雜性是由 Ansible 而不是用戶處理的。Ansible 模塊被編寫為系統所需狀態的模型,這意味著每個模塊都定義了在任何給定託管節點上應該為真的內容。例如,如果系統管理員決定組織中的所有工作站都應該安裝LibreOffice XZ 版本,那麼這取決於 Ansible 的打包模塊來確定每個節點上是否有 LibreOffice XZ。如果 Ansible 找到安裝了 LibreOffice XY 的託管節點,它會檢測操作系統並運行必要的例程將其更新到 LibreOffice XZ。這樣,組織中的每個工作站都可以使用 IT 部門支持的軟體在一夜之間進行更新。
不過,維護基礎設施不僅僅是檢查軟體版本。當人們談論使用 Ansible 時,他們真正指的是使用 Ansible 模塊,因為這些是 Ansible 執行特定任務的部分。如果您需要在多台電腦上自動執行某些操作,請查看 Ansible 模塊以找到處理您需要執行的任務的模塊,然後安裝 Ansible 以便您可以配置和調用該模塊。如果您是程式員,您還可以編寫自己的自定義模塊來執行專門的任務。如果您的模塊通常很有用,您還可以將其提交到 Ansible 項目以供包含,以便其他人可以從您的工作中受益。
Ansible 劇本
雖然模塊提供了完成任務的方法,但您使用它們的方式是通過 Ansible playbook。playbook 是一個用 YAML 編寫的配置文件,它提供了將受管節點帶入所需狀態所需執行的操作的說明。劇本旨在簡單、易於閱讀和自我記錄。它們也是冪等的,這意味著劇本可以隨時在系統上運行而不會對其產生負面影響。如果 playbook 在已正確配置且處於所需狀態的系統上運行,則在 playbook 運行後仍應正確配置該系統。
劇本可以非常簡單,例如,作為特權用戶在 IT 部門的webservers組中的任何節點上安裝 Apache HTTP 伺服器:
劇本也可能非常複雜,帶有條件和變量。然而,由於大部分實際工作是由 Ansible 模塊完成的,因此即使 playbook 可以編排整個託管節點網絡,它們仍然保持簡短、可讀和清晰。
學習 Ansible
您可以在家中或工作中使用Ansible 來學習它。如果您是 YAML 新手,請花時間學習它,然後編寫您的第一本劇本。如果您喜歡從小處著手,您可以在您的個人電腦上安裝 Ansible 並使用它來管理自己或僅管理家庭網絡中的幾台電腦。最重要的是,嘗試不同的模塊,以便您可以輕鬆使用和配置新模塊。它們是使您的節點符合您的基礎架構設計的門戶,而 Ansible 是使之成為可能的引擎。