首頁 > 套件與系統管理 > ansible

ansible: 遠端伺服器管理與自動化

Ansible 是一個開源自動化引擎,用於執行軟體配置、配置管理、應用程式部署和協調等各種 IT 自動化任務。它無需代理即可透過 SSH 連線到遠端伺服器執行任務,並使用基於 YAML 的 Playbook 來定義任務。

概述

Ansible 以無代理(agentless)方式運行,無需在受管伺服器上安裝額外的軟體。它透過 SSH 連線執行命令,並使用 Python 編寫的模組來執行各種任務。您可以通過清單檔案(inventory file)定義受管主機,並使用臨時命令(ad-hoc commands)或 Playbook 來自動化任務。

主要特點

  • 無代理方式(受管伺服器無需代理)
  • 基於 SSH 的通訊(利用現有基礎設施)
  • 使用 YAML Playbook(簡潔且易於閱讀的自動化腳本)
  • 配置管理、應用程式部署、協調等各種 IT 自動化

主要選項

Ansible 命令用於在清單檔案中定義的主機群組上執行特定模組或臨時命令。

基本執行選項

資訊與除錯

生成的命令:

請試著組合命令。

這個 Django 應用程序是一個技術指南文檔,旨在為用戶輕鬆解釋 Linux 的各種命令。

`ansible` 執行命令。

請將上述選項組合在一起,與 AI 一同虛擬執行命令。

使用範例

您可以使用 Ansible 命令對遠端伺服器執行各種任務。

檢查所有主機連線(ping)

ansible all -m ping

測試清單中所有主機的連線可用性。

在 Web 伺服器群組上執行命令

ansible webservers -a "uptime"

在清單中的 'webservers' 群組主機上執行 'uptime' 命令。

在特定主機上安裝套件(使用 sudo)

ansible node1 -b -m apt -a "name=nginx state=present"

在 node1 主機上安裝 'nginx' 套件。使用 -b 選項進行 sudo 權限提升。

使用自訂清單檔案

ansible all -i my_inventory.ini -a "df -h"

使用 'my_inventory.ini' 檔案代替預設清單檔案,在所有主機上執行 'df -h' 命令。

指定遠端使用者複製檔案

ansible webservers -u deploy_user -m copy -a "src=./index.html dest=/var/www/html/"

以遠端使用者 'deploy_user' 連線,將本地的 'index.html' 檔案複製到遠端伺服器的 '/var/www/html/' 路徑。

安裝

Ansible 通常不包含在大多數 Linux 發行版中,因此需要透過套件管理器或 Python pip 進行安裝。透過 Python pip 安裝是最推薦的方法。

使用 Python pip 安裝(推薦)

如果已安裝 Python,您可以使用 pip 來安裝 Ansible。

  • 安裝命令: pip install ansible
  • 升級命令: pip install --upgrade ansible

Ubuntu/Debian

使用 APT 套件管理器進行安裝。

  • 安裝命令: sudo apt update && sudo apt install ansible

CentOS/RHEL

使用 YUM/DNF 套件管理器進行安裝。可能需要 EPEL 儲存庫。

  • 安裝 EPEL 儲存庫: sudo yum install epel-release
  • 安裝命令: sudo yum install ansible

提示與注意事項

有效使用 Ansible 的提示和注意事項。

Ansible 使用提示

  • **管理清單檔案**:系統性地對受管主機進行分組和定義非常重要。您可以使用 `ini` 或 `yaml` 格式。
  • **推薦使用 Playbook**:除了簡單的臨時命令外,為了可重用性、可讀性和版本控制,建議使用基於 YAML 的 Playbook(`ansible-playbook`)。
  • **理解冪等性(Idempotency)**:Ansible 的設計目標是即使多次執行任務,系統狀態也能保持一致。這稱為冪等性,在編寫自動化腳本時應利用此概念。
  • **基於 SSH 金鑰的認證**:建議使用 SSH 金鑰而非密碼來增強安全性並簡化自動化流程。
  • **使用 Vault**:敏感資訊(密碼、API 金鑰等)應使用 Ansible Vault 加密管理。

相同類別命令