好嘞!我们来详细讲讲自动化运维利器——Ansible,这是系列的第一篇,帮你扎实打下基础。
Ansible详解(一):自动化运维从入门到实战
一、什么是 Ansible?
- 定义:Ansible 是一个简单但强大的自动化运维工具,主要用来批量管理服务器配置、部署应用、执行任务等。
- 特点:
- 无代理(Agentless):不需要在被管理节点安装额外软件,利用SSH进行通讯。
- 简单易学:配置用 YAML 格式编写(Playbook),结构清晰,语法直观。
- 可扩展性强:支持模块化,社区模块丰富,也支持自定义模块。
- 支持并行执行:可以同时管理成百上千台服务器。
二、Ansible 的基本架构
组件 | 作用 |
---|---|
控制节点 | 运行 Ansible 命令或 Playbook 的机器,通常是你的工作站或管理服务器。 |
被控节点 | 需要被管理的服务器,Ansible 通过 SSH 连接到这些节点。 |
Inventory 文件 | 存放被控节点的列表,可以是静态文件或动态脚本。 |
Playbook | 用 YAML 写的自动化任务脚本,定义要执行的操作和目标主机。 |
模块(Module) | Ansible 执行任务的最小单元,如文件操作、软件安装、服务管理等。 |
三、安装 Ansible
- Linux 下一般用包管理器安装,例如:
sudo apt update
sudo apt install ansible # Debian/Ubuntu
或
sudo yum install ansible # CentOS/RHEL
- 也可以用 Python 的 pip 安装:
pip install ansible
四、Inventory 文件(主机清单)
这是 Ansible 的核心,告诉 Ansible 管理哪些机器。
示例 hosts
文件:
[webservers]
web1.example.com
web2.example.com
[dbservers]
db1.example.com
你也可以用 IP:
[webservers]
192.168.1.101
192.168.1.102
使用命令时指定 inventory 文件:
ansible all -i hosts -m ping
五、基础命令演示
- 测试所有主机连通性:
ansible all -i hosts -m ping
- 在所有 webservers 组执行命令:
ansible webservers -i hosts -m shell -a "uname -r"
- 使用 sudo 权限执行命令:
ansible all -i hosts -m shell -a "systemctl restart nginx" --become
六、Playbook 简介
Playbook 是用来描述自动化任务的 YAML 文件,结构清晰,类似程序的“剧本”。
示例 site.yml
:
- name: 安装 nginx 并启动服务
hosts: webservers
become: yes
tasks:
- name: 安装 nginx
apt:
name: nginx
state: present
when: ansible_os_family == "Debian"
- name: 启动 nginx 服务
service:
name: nginx
state: started
执行:
ansible-playbook -i hosts site.yml
七、总结
- Ansible 是一款无代理、简单易用的自动化运维工具
- 通过 Inventory 定义管理的服务器
- 通过模块执行命令、操作配置
- Playbook 是用 YAML 写的自动化任务,方便维护和版本控制
发表回复