Ansible-playbook剧本
yaml格式:.yaml\yml结尾的文件
yaml格式要求:
1.严格区分大小写
2.缩进统一,同一级别配置要对齐
# 文件名:simple_playbook.yml
--- # YAML 文件开头标识(可选,但推荐加)
- name: 第一个 Play(描述目的) # Play 名称,便于阅读日志hosts: group1 # 目标主机/主机组(来自 inventory 清单)become: true # 是否提权(true = 用 sudo,默认 false)remote_user: ubuntu # 远程主机登录用户(默认用控制端当前用户)tasks: # 任务列表(用 - 开头的列表,按顺序执行)- name: 任务1:安装 wget # 任务名称(必填,增强可读性)apt: # 调用的 Ansible 模块(核心,如 apt、service、copy)name: wget # 模块参数(键值对,不同模块参数不同)state: present- name: 任务2:启动 nginx 服务service:name: nginxstate: startedenabled: true
核心组件说明
组件 | 作用 |
---|---|
name | 给 Play 或 Task 起名字,仅用于日志和控制台输出,不影响执行逻辑。 |
hosts | 指定任务执行的目标(必选),可填主机组(如 group1 )、单个 IP(如 192.168.146.102 )或 all (所有主机)。 |
become | 是否需要提权(如 sudo ),true 表示执行任务时用 sudo (适合安装软件、修改系统配置等操作)。 |
tasks | 任务列表(必选),每个任务用 - name: ... 开头,包含 “模块名” 和 “模块参数”,按顺序执行。 |
模块(如 apt ) | Ansible 预置的功能单元,每个模块对应一类操作(如 apt 管理 Debian 系软件,yum 管理 RHEL 系软件)。 |
执行剧本:
# 执行剧本但不真正生效,用于检测脚本是否正确
ansible-playbook -C lnmp.yml
# 正常执行剧本
ansible-playbook lnmp.yml
- name: play
hosts: group1
become: true
remote_user: ubuntu
tasks:
- name: 任务1:安装wget
apt:
name: wget
state: present
- name: 任务2:启动nginx服务
service:
name: nginx
state: started
enabled: true