> 软件包与系统管理 > ansible

ansible: 远程服务器管理与自动化

Ansible是一个开源自动化引擎,用于执行软件配置、应用程序部署、任务自动化和编排等IT自动化任务。它无需代理即可通过SSH连接到远程服务器执行任务,并使用基于YAML的Playbook来定义任务。

概述

Ansible采用无代理(agentless)方式工作,无需在被管理服务器上安装任何额外软件。它通过SSH连接执行命令,并使用Python编写的模块来执行各种任务。可以通过清单文件(inventory file)定义被管理主机,并使用ad-hoc命令或Playbook来自动化任务。

主要特点

  • 无代理方式(被管理服务器无需安装代理)
  • 基于SSH通信(利用现有基础设施)
  • 使用YAML Playbook(简洁且易于阅读的自动化脚本)
  • 配置管理、应用程序部署、任务自动化等多种IT自动化

主要选项

Ansible命令用于在清单文件中定义的组上执行特定模块或执行ad-hoc命令。

基本执行选项

信息与调试

生成的命令:

请尝试组合命令。

描述:

`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**:除了简单的ad-hoc命令外,为了可重用性、可读性和版本控制,建议使用基于YAML的Playbook(`ansible-playbook`)。
  • **理解幂等性(Idempotency)**:Ansible的设计目标是即使多次执行任务,系统状态也能保持不变。这被称为幂等性,在编写自动化脚本时应利用此概念。
  • **SSH密钥认证**:建议使用SSH密钥而非密码来增强安全性并简化自动化流程。
  • **使用Vault**:敏感信息(如密码、API密钥等)应使用Ansible Vault进行加密管理。

相同类别命令