YAML标记语言
基本语法规则:
大小写敏感
使用缩进表示层级关系
缩进时不允许使用tab键,只允许使用空格
缩进的空格数目不重要,只要相同层级的元素左对齐即可
# 表示注释
YAML支持的数据结构有三种:
对象:
对象的一组键值对,使用冒号结构表示。
my_key:my_value
数组:
数据结构的子成员是一个数组,则可以在该项下面缩进一个空格
languages:
- python
- perl
- ruby
纯量:
纯量是最基本的、不可再分的值
字符串var:abc
布尔值var:true
整数var:123
浮点数var:123.123
Null var:~
时间time:2000-12-12
日期date:20:20:20
playbook用来完成将任务写到一个YAML格式的文件中,然后利用ansible-playbook进行调用该文件,从而实现了多条语句,可重复执行的效果,类似shell脚本的效果,ansible的playbook要借助YAML文件来实现,YAML文件扩展名通常为.yaml或者.ym
playbook的基础组件
hosts:运行指定任务的目标主机,多主机用冒号分隔
remote_user:在远程主机上执行任务的用户,可以全局指定,也可以单个任务指定
sudo_user:表示以sudo方式运行任务时,切换为哪个用户身份运行
tasks:任务列表
示例
- hosts: wyq
remote_user: root
tasks:
- name: add_group
group: gid=8888 name=redhat state=present
- name: copy
copy: src=/etc/hosts dest=/tmp/
1.用户在.yml文件自定义变量
---
- hosts: wyq
remote_user: root
vars:
- packname: "nmap"
tasks:
- name: uninstall nmap
yum: name={{packname}} state=absent
2.通过-e参数传递的变量
---
- hosts: wyq
remote_user: root
tasks:
- name: install package nmap
yum: name={{pkname}} state=present
ansible-playbook vartest.yml -e pkname=nmap
3.通过主机或主机配置文件传递变量
主机
vim /etc/ansible/hosts
[wyq]
192.168.254.228 package=nmap
---
- hosts: wyq
remote_user: root
tasks:
- name: install package nmap
yum: name={{package}} state=present
ansible-playbook vartest.yml
主机组
vim /etc/ansible/hosts
[wyq]
192.168.254.228
#192.168.254.244
#127.0.0.1
[wyq:vars]
packname=nmap
---
- hosts: wyq
remote_user: root
tasks:
- name: install package nmap
yum: name={{packname}} state=abesent
通过facts获取的系统的变量
即ansible wyq -m setup查到的变量
---
- hosts: wyq
remote_user: root
tasks:
- name: save facts var in file
shell: echo "{{ansible_default_ipv4.address}}" >> /tmp/vars.txt