概述
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进行加密管理。