介紹
Ansible 是一種 IT 自動化工具,旨在促進遠程服務器的管理。 運行 Ansible 需要 Python(2.7 或 3.5 或更高版本)。 Ansible 從一個集中的控制節點運行,可以管理通過 SSH 訪問的任何服務器。 Ansible 管理的遠程服務器稱為受管節點。
默認情況下,Ansible 使用 OpenSSH 與託管節點通信。 SSH 不是 Ansible 支持的唯一通信機制。您可以在控制服務器、Docker 容器或 Windows 服務器上執行任務。控制節點必須運行 Linux。
什麼是 IT 自動化?
如今,系統管理員和 DevOps 工程師需要在雲中和跨多個站點管理複雜的 IT 基礎架構。現代 Web 應用程序通常由 API 服務、前端服務和數據庫服務組成。手動管理這樣一個複雜的系統既費時又容易出錯。
IT 自動化使用軟件來配置 IT 基礎架構、部署應用程序和管理服務配置更改。 用於完成此角色的軟件必須提供一種可靠且可重複的方式來管理 IT 任務。 Ansible 的 IT 自動化方法以劇本為中心。 Ansible playbook 可以被認為是解釋設置 IT 基礎架構、部署應用程序和配置這些服務所需的步驟的秘訣。
Ansible 的好處
Ansible 非常容易學習,並且可以比任何其他工具更快地啟動和運行自動化。 Ansible 是無代理的,因此您無需在託管節點上安裝和維護 Ansible 客戶端。這極大地簡化了 Ansible 更新的管理。
Ansible 的缺點
當然,Ansible 並不是完美的工具。如果在運行 playbook 的過程中 SSH 連接丟失,則節點可能處於部分配置狀態。 Ansible 的速度也很慢,可能需要額外的性能調整才能滿足您的要求。
飛行前檢查
在開始之前,您需要對運行 CentOS 7 的一對服務器的 root 訪問權限。本文使用兩個 LiquidWebSelf-ManagedPrivateCloud 服務器。我命名為 Control 的第一台服務器將是控制服務器。指定為節點的第二個服務器將是第一個 Ansible 受管節點。您可以假設您對兩台 CentOS 7 服務器都具有 SSH 訪問權限。
安裝 Ansible
第一步:更新控制節點
每當您安裝新軟件時,最好確保您現有的操作系統軟件是最新的。讓我們先從那個任務開始。
yum update
第 2 步:安裝 EPEL 存儲庫
安裝 Ansible 非常簡單。首先,您需要安裝 CentOS7 EPEL 存儲庫。
yum install epel-release
第 3 步:安裝 Ansible
然後從 EPEL 存儲庫安裝 Ansible 包。
yum install ansible
步驟 4a:創建 Ansible 用戶
正如安全最佳實踐中所指出的,避免以 root 身份登錄 Linux 服務器。在控制和託管節點上創建一個非 root 用戶來運行 Ansible playbook。此用戶定義 Ansible 用於登錄受管節點的管理員。此處,“admin”用於用戶,但您可以將其替換為任何用戶名。要遵循此示例,控制節點和受管節點必須使用相同的用戶名。登錄控制節點,添加用戶,設置密碼。
useradd admin
passwd admin
登錄被管節點,添加管理員用戶,設置密碼。
useradd admin
passwd admin
步驟 4b:為無密碼超級用戶訪問配置控制節點用戶
在託管節點上,您需要確保 Ansible 用戶無需密碼即可使用 sudo 命令。通過運行以下命令打開 sudoers 文件進行編輯:
visudo
輸入“i”進入輸入模式,並在文件末尾添加以下內容:類型'[ESC]使用:wq’ 保存您的更改。
admin ALL=(ALL) NOPASSWD: ALL
第 5 步:為 SSH 訪問配置管理員用戶
您需要確保管理員用戶無需密碼即可通過 SSH 訪問受管節點。設置一個 SSH 密鑰對來執行此操作。 以admin用戶登錄控制節點,執行以下命令生成SSH密鑰對。注意:您只需在提示符處按 Enter 即可接受默認值。
ssh-keygen
您現在可以使用以下命令將公鑰複製到託管節點:
ssh-copy-id node.kb.CodePre.com
第 6 步:創建 Ansible 清單
Ansible 需要一個清單列表來識別託管節點。要將受管節點添加到您的清單,您必須以管理員身份登錄到控制節點管理員用戶。然後添加一個新的清單文件。確保您以管理員用戶身份作為控制節點登錄。
vim /home/admin/inventory
輸入“i”進入插入模式,並將受管節點的主機名添加到清單文件中。
node.kb.CodePre.com
然後輸入'[ESC]+: 用 wq’ 保存文件。
第 7 步:創建 Ansible 劇本
要測試您的配置,請創建一個簡單的劇本以在您的託管節點上安裝 Nginx。首先,創建一個新文件並打開它。 就 Ansible 而言,文件名並不是特別重要。當然,您需要使用描述性文件名。確保您以管理員用戶身份作為控制節點登錄。
vim /home/admin/install-nginx.yml
Ansible playbook 是用一種稱為 YAML 的語言編寫的。 YAML 被設計成人類可讀的。看下面的文字,你應該可以說出預期的結果是什麼。稍後我將分解語法,但現在我將鍵入“i”進入插入模式並將以下文本添加到劇本中。然後輸入'[ESC]+:保存wq’並退出。

Ansible 劇本運行“劇本”。 Play 是在節點上執行的任務列表。在上面的示例中,“hosts”關鍵字用於指定僅包含單個節點的列表。但是,您可以使用逗號分隔值指定主機列表。 要使用 Ansible 安裝軟件,您需要 root 訪問權限才能使用 yum。在 play 中使用關鍵字“become”表示 Ansible 需要 root 用戶來執行任務。
“tasks”關鍵字啟動要完成的任務列表。 使用“名稱”關鍵字為每個任務指定一個唯一的名稱。然後使用Ansible提供的yum模塊安裝第一個epel倉庫,然後使用第二個入口安裝nginx。
第 8 步:運行劇本
運行劇本非常容易。 在“ansible-playbook”命令後使用“-i”選項來指定manifest文件後playbook的路徑。確保您以管理員用戶身份作為控制節點登錄。
ansible-playbook -i /home/admin/inventory /home/admin/install-nginx.yml
結論是
到目前為止,我只觸及了 Ansible 的皮毛。您可以使用組名對清單中的服務器進行分組。此分組允許您僅在 Web 服務器或數據庫服務器上運行 playbook。您還可以運行臨時命令。臨時命令是只需要執行一次的任務。例如,如果您需要重新啟動所有 Web 服務器。總體而言,Ansible 是一個很棒的工具,您可以使用它通過在單個或多個遠程服務器上自動執行任務來節省時間、金錢和精力。
立即註冊知識庫,以獲取涵蓋這些主題及更多內容的未來文章和更新。現在開始使用 Ansible 雲服務器和 LiquidWeb。 請致電 (800.580.4985)。 [email protected] 關於計費或開始 聊天 我們是託管方面最有用的人之一,並希望幫助您入門。