自动化运维工具-Ansible Playbook


ansible playbook初始

PlayBook即"剧本","兵书"之意,PlayBook是由以下部分组成的
	play: 定义的是主机的角色。(主角还是配角)
	task: 定义的是具体执行的任务。(角色的台词和动作)
	playbook: 由一个或多个play(角色)组成,一个play(角色)可以包含多个task(台词,动作)。

简单理解为: 使用不同的模块完成一件事情

Ansible中"剧本文件"是以yml结尾的文件。 在SaltStack中"剧本文件"是以sls结尾的文件。 但是语法,使用的都是yaml语法

image-20241015224543378

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,但仍然以普通用户登录。