下面从概念 → 安装 → 核心组件 → 常见运维场景 → 最佳实践给你一个完整、可落地的 Ansible 服务器运维指南。
Ansible 是无 Agent的自动化运维工具:
# CentOS / Rocky
yum install -y ansible
# Ubuntu
apt install -y ansible
# 验证
ansible --version
ssh-keygen
ssh-copy-id user@server_ip
| 概念 | 说明 |
|---|---|
| Inventory | 主机清单 |
| Module | 执行单元(命令、包、文件等) |
| Playbook | 自动化剧本(YAML) |
| Role | 可复用的运维模块 |
| Task | Playbook 中的一步操作 |
inventory.ini[web]
192.168.1.10
192.168.1.11
[db]
192.168.1.20
[all:vars]
ansible_user=root
ansible_python_interpreter=/usr/bin/python3
测试连通性:
ansible all -i inventory.ini -m ping
ansible web -m shell -a "uptime"
ansible web -m yum -a "name=nginx state=present"
ansible web -m copy -a "src=nginx.conf dest=/etc/nginx/nginx.conf"
ansible web -m service -a "name=nginx state=started enabled=yes"
# deploy_nginx.yml
- hosts: web
become: yes
tasks:
- name: Install nginx
yum:
name: nginx
state: present
- name: Copy config
copy:
src: files/nginx.conf
dest: /etc/nginx/nginx.conf
- name: Start nginx
service:
name: nginx
state: started
enabled: true
执行:
ansible-playbook -i inventory.ini deploy_nginx.yml
- hosts: all
become: yes
tasks:
- yum:
name: '*'
state: latest
ansible all -m shell -a "df -h; free -m; uptime"
- user:
name: deploy
groups: wheel
append: yes
- find:
path: /var/log
age: 30d
recurse: yes
register: logs
- file:
path: "{{ item.path }}"
state: absent
loop: "{{ logs.files }}"
ansible-galaxy init nginx
结构:
roles/nginx/
├── tasks/main.yml
├── handlers/main.yml
├── templates/nginx.conf.j2
├── vars/main.yml
Playbook 使用:
- hosts: web
roles:
- nginx
[web:vars]
env=prod
- debug:
msg: "Environment is {{ env }}"
✅ 使用 SSH Key + sudo
✅ Playbook 幂等
✅ 重要操作前 --check
✅ 用 Git 管理 Ansible 代码
✅ 敏感信息用 Ansible Vault
ansible-vault encrypt vars/secret.yml
如果你愿意,我可以:
你目前是个人服务器还是企业多台机器?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。