代码即基础设施:Ansible 基础
黄玮
2026-01
当你有 100 台服务器: - 用 Shell 循环 SSH?效率低,串行慢。 - 有的服务器已经装了软件,有的没装?脚本逻辑变得极度复杂。 - 如何保证所有服务器状态最终一致?
hosts.ini:
[webservers]
server01 ansible_host=192.168.1.10
server02 ansible_host=192.168.1.11
[all:vars]
ansible_user=student
ansible_ssh_private_key_file=~/.ssh/id_ed25519
# 测试连通性
ansible webservers -m ping -i hosts.ini
# 查内存
ansible webservers -m shell -a "free -h" -i hosts.ini
# 复制文件
ansible webservers -m copy -a "src=./index.html dest=/tmp/" -i hosts.ini
site.yml:
- name: Deploy Web Server
hosts: webservers
tasks:
- name: Ensure Nginx is installed
apt:
name: nginx
state: present
become: yes # 需要 sudo
- name: Ensure Nginx is running
service:
name: nginx
state: started
enabled: yes