下面我用由浅入深 + 示例的方式,教你如何写 Ansible Playbook。
Playbook 是 Ansible 的“剧本”,用 YAML 格式编写,用来定义:
一句话:
Playbook = 一批有序的自动化操作
---
- name: Install nginx
hosts: web
become: yes
tasks:
- name: Install nginx package
apt:
name: nginx
state: present
执行:
ansible-playbook playbook.yml
---
- name: Play 的名称
hosts: 主机组
become: true/false
vars:
变量
tasks:
- name: 任务名
模块:
参数
| 部分 | 作用 |
|---|---|
| name | 给人看的描述 |
| hosts | 目标主机(inventory 中定义) |
| become | 是否提权(sudo) |
| vars | 变量 |
| tasks | 具体任务 |
- name: Create file
file:
path: /tmp/test.txt
state: touch
- name: Copy config
copy:
src: nginx.conf
dest: /etc/nginx/nginx.conf
- name: Start nginx
service:
name: nginx
state: started
enabled: yes
- name: Run command
command: uptime
---
- hosts: web
vars:
pkg_name: nginx
tasks:
- name: Install package
apt:
name: "{{ pkg_name }}"
state: present
tasks:
- name: Create users
user:
name: "{{ item }}"
state: present
loop:
- alice
- bob
- tom
- name: Restart nginx on Ubuntu
service:
name: nginx
state: restarted
when: ansible_os_family == "Debian"
tasks:
- name: Copy nginx config
copy:
src: nginx.conf
dest: /etc/nginx/nginx.conf
notify: Restart nginx
handlers:
- name: Restart nginx
service:
name: nginx
state: restarted
只有任务“发生变化”时,handler 才会执行
---
- name: Setup web
hosts: web
tasks:
- name: Install nginx
apt:
name: nginx
- name: Setup db
hosts: db
tasks:
- name: Install mysql
apt:
name: mysql-server
✅ 用 name 描述每一步
✅ 尽量用模块,不用 command/shell
✅ 使用 become 而不是手动 sudo
✅ 拆分 roles(复杂项目)
如果你愿意,可以告诉我:
我可以直接帮你写一份 可用 Playbook。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。