ansible的playbook的介绍-yaml

ansible的playbook是使用yaml语言写的

YAML标记语言介绍
YAML是一个可读性高的用来表达资料序列的格式。YAML参考了其他多种语言包括XML、C语言、Python、Perl以及电子邮件格式RFC2822等。Clark Evans在2001年在首次发表了这种语言另外Ingy dtNet与Oren Ben-Kiki也是这语言的共同设计者。 
YAML Ain't Markup Language即YAML不是XML。不过在开发的这种语言时YAML的意思其实是"Yet Another Markup Language"仍是一种标记语言。其特性 
YAML的可读性好 
YAML和脚本语言的交互性好 
YAML使用实现语言的数据类型 
YAML有一个一致的信息模型 
YAML易于实现 
YAML可以基于流来处理 
YAML表达能力强扩展性好 


它的基本语法规则如下。
• 大小写敏感
• 使用缩进表示层级关系
• 缩进时不允许使用Tab键,只允许使用空格。
• 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

# 表示注释,从这个字符一直到行尾,都会被解析器忽略。

yaml支持的数据类型

对象:
对象的一组键值对,使用冒号结构表示。
my_key: my_value

数组:
数据结构的子成员是一个数组,则可以在该项下面缩进一个空格
languages:
- python
- perl
- ruby


纯量
纯量是最基本的、不可再分的值
字符串
var: abc
布尔值
var: true
整数
var: 123
浮点数
var: 12.30
Null
var: ~
时间
time: 2001-12-14
日期
date 20:10:20


 当需要执行的任务有多个时,需要一条一条编辑ansible命令,然后执行,而且当需要重复执行时,又要重新编辑执行,这样效率不高,因此ansible就可以利用playbook来完成将任务写到一个YAML格式的文件中,然后利用ansible-playbook进行调用该文件,从而实现了多条语句,可重复执行的效果,类似shell脚本的效果,ansible的playbook要借助YAML文件来实现,YAML文件扩展名通常为.yaml或.yml

 

使用playbook的基本命令格式

Usage: ansible-playbook [options] playbook.yml [playbook2 ...]
-C, --check 干跑一次 不会真正落地
-f FORKS 做高并发
--list-hosts 列出匹配的主机
--syntax-check 检查语法

playbook的基础组件

hosts:运行指定任务的目标主机,多个主机用:冒号分隔
remote_user:在远程主机上执行任务的用户;可以全局指定,也可以单个任务指定,如果是root用户执行可以不用写,默认是root
sudo_user:表示以sudo方式运行任务时,切换为哪个用户身份运行
tasks: 任务列表

使用palybook来管理被控机

1 创建剧本

编写ansible的剧本,创建yaml语言的文件,文件的位置可以任意,为了规范,好记,最好有一个单独的目录存放剧本

我创建了mkdir /palybook这个目录来存在剧本

:后缀名是.yaml 或 yml


[root@master ~]# vim p1.yml

- hosts: web
  remote_user: root
  tasks:
  - name: add group
    group: name=IT
  - name: creat user
    user: name=alex20
- hosts: 192.168.16.140
  remote_user: root
  tasks:
  - name: copy
    copy: src=/var/log/yum.log dest=/tmp/

文件翻译成python的语言的格式

ansible的剧本

文件的解释:

- hosts: web  # 应用的主机 web是主机组
  remote_user: root # 使用root来执行这个playbook
  tasks: # 要执行的任务
  - name: add group  # 任务的名字,可以随意写
    group: name=IT  # group 是执行的模块名 后面是模块的参数
  - name: creat user # 任务的名字
    user: name=alex20 # 使用user模块创建用户 alex20
- hosts: 192.168.16.140 # 140这台主机执行下面的命令
  remote_user: root # root用户执行
  tasks: # 执行任务
  - name: copy # 任务的名字
    copy: src=/var/log/yum.log dest=/tmp/ # 使用copy模块来复制文件
p1.yml

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-03-07
  • 2022-03-08
  • 2021-10-24
  • 2021-09-17
  • 2022-12-23
猜你喜欢
  • 2021-12-31
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案