下面用一个由浅入深、偏实战的方式,教你如何用 Ansible 写运维 Playbook。
| 概念 | 说明 |
|---|---|
| Inventory | 被管理主机清单 |
| Playbook | YAML 格式的自动化脚本 |
| Task | 最小执行单元 |
| Module | 具体功能(如 yum, copy, service) |
| Role | 可复用的 Playbook 结构 |
inventory.ini[web]
192.168.1.10
192.168.1.11
[db]
192.168.1.20
deploy.yml- name: 安装并启动 Nginx
hosts: web
become: yes
tasks:
- name: 安装 nginx
yum:
name: nginx
state: present
- name: 启动 nginx
service:
name: nginx
state: started
enabled: yes
执行:
ansible-playbook -i inventory.ini deploy.yml
- name: 拷贝配置文件
copy:
src: ./nginx.conf
dest: /etc/nginx/nginx.conf
owner: root
mode: '0644'
- name: 查看磁盘使用
shell: df -h
register: disk
- debug:
var: disk.stdout_lines
- name: 仅 CentOS 安装 httpd
yum:
name: httpd
state: present
when: ansible_os_family == "RedHat"
- name: 创建多个用户
user:
name: "{{ item }}"
state: present
loop:
- alice
- bob
- tom
vars:
pkg_name: nginx
tasks:
- name: 安装变量指定的包
yum:
name: "{{ pkg_name }}"
state: present
命令行传参:
ansible-playbook deploy.yml -e "pkg_name=httpd"
roles/
└── nginx/
├── tasks/main.yml
├── handlers/main.yml
├── templates/nginx.conf.j2
└── vars/main.yml
roles/nginx/tasks/main.yml- name: 安装 nginx
yum:
name: nginx
state: present
- name: 渲染配置
template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.conf
notify: restart nginx
site.yml- hosts: web
roles:
- nginx
✅ Role 是生产环境推荐方式
handlers:
- name: restart nginx
service:
name: nginx
state: restarted
- name: 主机健康检查
hosts: all
tasks:
- name: 内存使用
shell: free -m
register: mem
- name: 输出内存
debug:
var: mem.stdout_lines
# 只检查不执行
ansible-playbook play.yml --check
# 显示详细信息
ansible-playbook play.yml -v
# 从指定任务开始
ansible-playbook play.yml --start-at-task="安装 nginx"
| 模块 | 用途 |
|---|---|
yum/apt |
软件安装 |
service |
服务管理 |
copy/template |
文件管理 |
lineinfile |
修改配置行 |
cron |
定时任务 |
user/group |
用户管理 |
stat |
文件状态判断 |
如果你愿意,我可以:
你现在是刚开始学,还是想直接写生产用的?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。