yaml的字符串,字典和列表写法
配置vim的yaml格式友好支持
# 创建vimrc
vim ~/.vimrc
# 插入yaml配置
## ai = auto indent 自动退格对齐
## ts=tabstop,即一个tab的宽带设定为2个空格
## sw=shiftwidth,即退格对齐以两个空格为准
## et=expandtab,将tab转换位空格
autocmd FileType yaml setlocal ai ts=2 sw=2 et
# 配置完下次会直接生效
yaml的开头和结尾
yaml
文件开头三个杠
,结束三个点
。
---
yaml内容
...
yaml的字符串
字符串引号与不加引号
yaml中的字符串加不加引号效果都是一样的
单引号可以避免转义符错误
yaml中不允许在双引号中出现转义符号,所以都是单引号来避免转义符错误
ansible单引号内容全是字符串,双引号里面可以带变量
---
- name:
hosts: all
tasks:
- name:
debug:
msg: 不加引号字符串测试
- debug:
msg: '单引号字符串测试'
- debug:
msg: "双引号字符串测试"
运行结果: 字符串加不加引号运行效果都是一样的。
[student@workstation gzy]$ ansible-playbook yamlstr.yml
PLAY [all] *********************************************************************************************
TASK [Gathering Facts] *********************************************************************************
ok: [servera]
TASK [debug] *******************************************************************************************
ok: [servera] => {
"msg": "不加引号字符串测试"
}
TASK [debug] *******************************************************************************************
ok: [servera] => {
"msg": "单引号字符串测试"
}
TASK [debug] *******************************************************************************************
ok: [servera] => {
"msg": "双引号字符串测试"
}
PLAY RECAP *********************************************************************************************
servera : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
字符串换行
如果文本需要换行,在行首加
竖线|
---
- name: 字符串演示
hosts: all
tasks:
- name: 字符串换行演示
debug:
msg: |
字符串
换行
演示
运行效果
[student@workstation gzy]$ ansible-playbook str2.yml
PLAY [字符串演示] *******************************************************************************************
TASK [Gathering Facts] *********************************************************************************
ok: [servera]
TASK [字符串换行演示] *****************************************************************************************
ok: [servera] => {
"msg": "字符串\n换行\n演示\n"
}
PLAY RECAP *********************************************************************************************
servera : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
字符串连行
字符串连行显示,需要在行首加
大于号>
---
- name: 字符串演示3
hosts: all
tasks:
- name: 字符串连行演示
debug:
msg: >
连
行
演
示
运行效果
[student@workstation gzy]$ ansible-playbook str3.yml
PLAY [字符串演示3] ******************************************************************************************
TASK [Gathering Facts] *********************************************************************************
ok: [servera]
TASK [字符串连行演示] *****************************************************************************************
ok: [servera] => {
"msg": "连 行 演 示\n"
}
PLAY RECAP *********************************************************************************************
servera : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
yaml的字典
和python定义字典很像,两种写法效果都一样的
多行定义字典:ansible推荐的写法
name: 安装httpd
svcservice: httpd
svcport: 80
一行定义字典:python风格写法
{name: 安装httpd,svcservice: httpd,svcport: 80}
yaml的列表
yaml的列表,可以单行也可以多行
单行写法需要加-
多行写法以方括号扩起来,和python的列表方法一样,但不需要加引号
多行列表演示:ansible推荐的写法
---
- name: 列表演示
hosts:
- servera
- serverb
- serverc
tasks:
- name: 多行列表演示
debug:
msg: 多行列表演示
运行效果
[student@workstation gzy]$ ansible-playbook list1.yml
PLAY [列表演示] ********************************************************************************************
TASK [Gathering Facts] *********************************************************************************
ok: [servera]
ok: [serverc]
ok: [serverb]
TASK [多行列表演示] ******************************************************************************************
ok: [servera] => {
"msg": "多行列表演示"
}
ok: [serverb] => {
"msg": "多行列表演示"
}
ok: [serverc] => {
"msg": "多行列表演示"
}
PLAY RECAP *********************************************************************************************
servera : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
serverb : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
serverc : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
单行列表演示:python风格写法
---
- name: 列表演示
hosts: [servera,serverb,serverc]
tasks:
- name: 单行列表演示
debug:
msg: 单行列表演示
运行效果演示
[student@workstation gzy]$ ansible-playbook list2.yml
PLAY [列表演示] ********************************************************************************************
TASK [Gathering Facts] *********************************************************************************
ok: [serverc]
ok: [servera]
ok: [serverb]
TASK [单行列表演示] ******************************************************************************************
ok: [servera] => {
"msg": "单行列表演示"
}
ok: [serverb] => {
"msg": "单行列表演示"
}
ok: [serverc] => {
"msg": "单行列表演示"
}
PLAY RECAP *********************************************************************************************
servera : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
serverb : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
serverc : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0