自动化运维工具-Ansible Playbook
ansible playbook初始
PlayBook即"剧本","兵书"之意,PlayBook是由以下部分组成的
play: 定义的是主机的角色。(主角还是配角)
task: 定义的是具体执行的任务。(角色的台词和动作)
playbook: 由一个或多个play(角色)组成,一个play(角色)可以包含多个task(台词,动作)。
简单理解为: 使用不同的模块完成一件事情
在Ansible
中"剧本文件"是以yml结尾的文件。
在SaltStack
中"剧本文件"是以sls结尾的文件。
但是语法,使用的都是yaml
语法
play book与ad-hoc的区别
特点 | PlayBook | ad-hoc |
---|---|---|
完整性 | √ | ✘ |
持久性 | √ | ✘ |
执行效率 | 低 | 高 |
变量 | 支持 | 不支持 |
耦合度 | 低 | 高 |
1.PlayBook
功能比ad-hoc
更全,是对ad-hoc
的一种编排.
2.PlayBook
能很好的控制先后执行顺序, 以及依赖关系.
3.PlayBook
语法展现更加的直观.
4.playbook
可以持久使用,ad-hoc
无法持久使用.
yaml语法
语法 | 描述 |
---|---|
缩进 | YAML使用固定的缩进风格表示层级结构,每个缩进由两个空格组成, 不能使用TAB |
冒号 | 以冒号结尾的除外,其他所有冒号后面所有必须有空格 |
短横线 | 表示列表项,使用一个短横杠加一个空格,多个项使用同样的缩进级别作为同一列表 |
apt:
name: nginx
state: present
apt:
name:
- mariadb
- nginx
- php-fpm
state: present
PlayBook—《孙子兵法》编写
host:对哪些主机进行操作(演员) remote_user:使用什么用户执行(通行证) tasks:具体执行任务(台词和动作)
cat foo.yml
---
- hosts: all
remote_user: root
vars:
file_name: lll.txt
tasks:
- name: Create New File
file: name=/tmp/{{ file_name }} state=touch
- hosts: all
remote_user: lzd
become: yes
become_user: root
tasks:
- name: 执行高权限任务
file: name=/tmp/{{ file_name }} state=touch
# become: yes 告诉 Ansible 在执行任务时使用 sudo 提升权限到 root,但仍然以普通用户登录。