管理一台服务器还行,管理五台、十台、上百台呢?一台台SSH上去敲命令既慢又易出错。Ansible让你用一份脚本批量管理所有服务器——安装软件、改配置、部署应用,一条命令全搞定。本文带你入门这个自动化运维利器。
一、Ansible解决什么问题?
随着服务器变多(参考多节点架构篇),手动运维的问题爆发:配置不一致(每台手动配难免有差异)、效率低(重复操作N遍)、易出错、难复现。Ansible用”基础设施即代码”的思路:把要做的事写成脚本(Playbook),对所有服务器批量、一致、可重复地执行。
二、Ansible的最大优点:无需Agent
和其他配置管理工具不同,Ansible不需要在被管理的服务器上安装任何东西——它通过SSH(参考SSH篇)直接连接执行。你只需在一台”控制机”上装Ansible,配好SSH密钥能连到各服务器,就能开始批量管理。门槛低、上手快。
三、安装与基础
# 在控制机(你的电脑或一台管理VPS)安装
apt install ansible -y
ansible --version
Inventory(主机清单):定义要管理哪些服务器,创建 hosts 文件:
[web]
server1 ansible_host=1.2.3.4
server2 ansible_host=5.6.7.8
[db]
server3 ansible_host=9.10.11.12
测试连通:ansible all -i hosts -m ping,所有服务器返回pong就通了。
四、临时命令:批量执行
# 对所有web服务器执行命令
ansible web -i hosts -m shell -a "uptime"
# 批量安装软件
ansible all -i hosts -m apt -a "name=nginx state=present" --become
# 批量重启服务
ansible web -i hosts -m service -a "name=nginx state=restarted" --become
一条命令,所有服务器同时执行——这就是批量管理的威力。
五、Playbook:把运维流程写成脚本
Playbook是Ansible的核心,用YAML把一系列操作写成可复用的脚本。例如”配置一台Web服务器”的Playbook:
- hosts: web
become: yes
tasks:
- name: 安装Nginx
apt:
name: nginx
state: present
- name: 启动并开机自启
service:
name: nginx
state: started
enabled: yes
- name: 部署配置文件
copy:
src: nginx.conf
dest: /etc/nginx/nginx.conf
notify: 重启Nginx
handlers:
- name: 重启Nginx
service:
name: nginx
state: restarted
执行 ansible-playbook -i hosts site.yml,所有web服务器就被配置成一模一样的状态。可重复执行、结果一致、新服务器一键配置。
六、幂等性:Ansible的重要特性
Ansible的操作是幂等的——重复执行同一个Playbook,已经是目标状态的不会重复改动,只改需要改的。这意味着你可以放心地反复运行,把Playbook当作”服务器应该是什么样”的声明,随时执行来保证一致性。
七、适用场景
- 批量初始化新服务器:一键完成安全加固、装环境、配置(参考安全加固篇);
- 批量部署应用:多台服务器同步部署;
- 保持配置一致:多节点架构中确保各机配置统一(参考多节点篇);
- 批量更新和维护:一条命令给所有服务器打补丁。
结论
Ansible是多服务器自动化运维的利器:无需Agent(走SSH)、用Playbook批量一致地管理、幂等可重复执行。管理超过两三台服务器,就值得学Ansible——它把重复、易错的手动运维变成可靠、可复现的自动化。有多台服务器(参考多节点篇)的话,用一台机器当控制机,把你的运维流程写成Playbook,效率和一致性都会质变。