Skip to content
SRE运维进阶之路SRE运维进阶之路
github icon
  • Jenkins

    • Jenkins 学习笔记
      • 1 Jenkins 简介

        • 1.1 DevOps、CI、CD都是什么鬼?
          • 1.2 Jenkins简介
          • 2 安装 Jenkins

            • 2.1 yum 安装 jenkins
              • 2.2 war 包安装 jenkins
                • 2.3 使用 ansible 安装 jenkins
                  • 2.4 使用docker安装jenkins
                  • 3 使用 Jenkins

                    • 3.1 Jenkins用户权限管理
                      • 3.2 访问 API
                      • 4 流水线核心语法

                        • 4.1 开始编写Jenkinsfile
                          • 4.2 Jenkins流水线语法
                            • 4.3 Groovy 简明教程
                              • 4.4 Jenkins共享库应用
                                • 4.5 共享库之钉钉消息推送
                                  • 4.6 流水线开发工具
                                    • 4.7 pipeline 生产配置实例
                                      • 4.8 在 VS Code 中校验 Jenkinsfile
                                      • 5 流水线集成篇

                                        • 5.1 构建发布工具集成
                                          • 5.2 用户认证系统集成
                                          • 6 管理 jenkins

                                            • 6.1 Jenkins 关闭和重启的实现方式
                                            • 7 日常维护

                                              • 7.1 Jenkins Job迁移
                                              • 8 Jenkins 常见问题
                                              • Ansible

                                                • Ansible 学习笔记
                                                  • 1 初识Ansible
                                                    • 2 Ansible Inventory配置详解
                                                      • 3 Ansible Ad-hoc命令集

                                                        • 3.1 Ansible Ad-hoc 常用命令集
                                                          • 3.2 Ansible lineinfile模块详解
                                                          • 4 Ansible Playbook

                                                            • 4.1 Playbook的结构及handler用法
                                                              • 4.2 Playbook循环语句
                                                                • 4.3 Playbook条件语句
                                                                  • 4.4 Playbook高级用法
                                                                    • 4.5 Playbook之tags
                                                                      • 4.6 巧用Roles
                                                                        • 4.7 Jinja2 模板
                                                                          • 4.8 yaml语法
                                                                            • playbook的语法:YAML
                                                                              • 对象
                                                                                • 数组
                                                                                  • 字典
                                                                                    • 复合结构
                                                                                      • 字符串续行
                                                                                  • 5 Ansible变量

                                                                                    • 5.1 自定义变量
                                                                                      • 5.2 Fact变量
                                                                                        • 5.3 魔法变量
                                                                                          • 5.4 使用lookup生成变量
                                                                                            • 5.5 使用vault配置加密
                                                                                            • 6 Ansible使用优化
                                                                                              • 7 常见问题
                                                                                                • 8 综合项目

                                                                                                  • 使用 ansible 快速安装 k8s 机器

                                                                                                4.8 yaml语法

                                                                                                author iconClaycalendar icon2020年3月20日category icon
                                                                                                • 自动化工具
                                                                                                tag icon
                                                                                                • Ansible
                                                                                                timer icon大约 3 分钟

                                                                                                此页内容
                                                                                                • playbook的语法:YAML
                                                                                                  • 对象
                                                                                                  • 数组
                                                                                                  • 字典
                                                                                                  • 复合结构
                                                                                                  • 字符串续行

                                                                                                # 4.8 yaml语法

                                                                                                # playbook的语法:YAML

                                                                                                ansible的playbook采用yaml语法,它以非常简洁的方式实现了json格式的事件描述。

                                                                                                yaml之于json就像markdown之于html一样,极度简化了json的书写。

                                                                                                YAML文件后缀通常为.yaml或.yml。

                                                                                                YAML在不少工具里都使用,学习它是"一次学习、终生受益"的,所以很有必要把yaml的语法格式做个梳理,系统性地去学一学。

                                                                                                YAML的基本语法规则如下:

                                                                                                (1).使用缩进表示层级关系

                                                                                                (2).缩进时不允许使用Tab键,只允许使用空格

                                                                                                (3).缩进的空格数目不重要,只要相同层级的元素左对齐即可

                                                                                                (4).yaml文件以"---"作为文档的开始,以表明这是一个yaml文件

                                                                                                即使没有使用---开头,也不会有什么影响

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

                                                                                                (6).字符串不用加引号,但在可能产生歧义时,需加引号(单双引号皆可),比如引用变量时

                                                                                                (7).布尔值非常灵活,不分区大小写的true/false、yes/no、on/off、y/n、0和1都允许

                                                                                                YAML支持三种数据结构:

                                                                                                (1).对象:key/value格式,也称为哈希结构、字典结构或关联数组

                                                                                                (2).数组:也称为列表

                                                                                                (3).标量(scalars):单个值

                                                                                                可以去找一些在线YAML转换JSON网站,比如 http://yaml-online-parser.appspot.comopen in new window 通过在线转换可以验证或查看自己所写的YAML是否出错以及哪里出错。

                                                                                                # 对象

                                                                                                一组键值对,使用冒号隔开key和value。注意,冒号后必须至少一个空格。

                                                                                                name: clay
                                                                                                
                                                                                                1

                                                                                                等价于json:

                                                                                                {
                                                                                                	"name": "clay"
                                                                                                }
                                                                                                
                                                                                                1
                                                                                                2
                                                                                                3

                                                                                                # 数组

                                                                                                ---
                                                                                                - Shell
                                                                                                - Perl
                                                                                                - Python
                                                                                                
                                                                                                1
                                                                                                2
                                                                                                3
                                                                                                4

                                                                                                等价于json:

                                                                                                ["Shell","Perl","Python"]
                                                                                                
                                                                                                1

                                                                                                也可以使用行内数组(内联语法)的写法:

                                                                                                ---
                                                                                                ["Shell","Perl","Python"]
                                                                                                
                                                                                                1
                                                                                                2

                                                                                                再例如:

                                                                                                ---
                                                                                                - lang1: Shell
                                                                                                - lang2: Perl
                                                                                                - lang3: Python
                                                                                                
                                                                                                1
                                                                                                2
                                                                                                3
                                                                                                4

                                                                                                等价于json:

                                                                                                [
                                                                                                    {"lang1": "Shell"},
                                                                                                    {"lang2": "Perl"},
                                                                                                    {"lang3": "Python"}
                                                                                                ]
                                                                                                
                                                                                                1
                                                                                                2
                                                                                                3
                                                                                                4
                                                                                                5

                                                                                                将对象和数组混合:

                                                                                                ---
                                                                                                languages:
                                                                                                  - Shell
                                                                                                  - Perl
                                                                                                  - Python
                                                                                                
                                                                                                1
                                                                                                2
                                                                                                3
                                                                                                4
                                                                                                5

                                                                                                等价于json:

                                                                                                {
                                                                                                	"languages": ["Shell","Perl","Python"]
                                                                                                }
                                                                                                
                                                                                                1
                                                                                                2
                                                                                                3

                                                                                                # 字典

                                                                                                ---
                                                                                                person1:
                                                                                                  name: clay
                                                                                                  age: 18
                                                                                                  gender: male
                                                                                                
                                                                                                person2:
                                                                                                  name: wangchi
                                                                                                  age: 19
                                                                                                  gender: female
                                                                                                
                                                                                                1
                                                                                                2
                                                                                                3
                                                                                                4
                                                                                                5
                                                                                                6
                                                                                                7
                                                                                                8
                                                                                                9
                                                                                                10

                                                                                                等价于json:

                                                                                                {
                                                                                                  "person2": {
                                                                                                    "gender": "female",
                                                                                                    "age": 19,
                                                                                                    "name": "clay"
                                                                                                  },
                                                                                                  "person1": {
                                                                                                    "gender": "male",
                                                                                                    "age": 18,
                                                                                                    "name": "wangchi"
                                                                                                  }
                                                                                                }
                                                                                                
                                                                                                1
                                                                                                2
                                                                                                3
                                                                                                4
                                                                                                5
                                                                                                6
                                                                                                7
                                                                                                8
                                                                                                9
                                                                                                10
                                                                                                11
                                                                                                12

                                                                                                也可以使用行内对象的写法:

                                                                                                ---
                                                                                                person1: {name: clay, age: 18, gender: male}
                                                                                                
                                                                                                1
                                                                                                2

                                                                                                # 复合结构

                                                                                                ---
                                                                                                - person1:
                                                                                                  name: clay
                                                                                                  age: 18
                                                                                                  langs:
                                                                                                    - Perl
                                                                                                    - Ruby
                                                                                                    - Shell
                                                                                                
                                                                                                - person2:
                                                                                                  name: xiaofanggao
                                                                                                  age: 19
                                                                                                  langs:
                                                                                                    - Python
                                                                                                    - Javascript
                                                                                                
                                                                                                1
                                                                                                2
                                                                                                3
                                                                                                4
                                                                                                5
                                                                                                6
                                                                                                7
                                                                                                8
                                                                                                9
                                                                                                10
                                                                                                11
                                                                                                12
                                                                                                13
                                                                                                14
                                                                                                15

                                                                                                等价于json:

                                                                                                [
                                                                                                    {
                                                                                                        "langs": [
                                                                                                        "Perl",
                                                                                                        "Ruby",
                                                                                                        "Shell"
                                                                                                        ],
                                                                                                        "person1": null,
                                                                                                        "age": 18,
                                                                                                        "name": "clay"
                                                                                                    },
                                                                                                    {
                                                                                                        "person2": null,
                                                                                                        "age": 19,
                                                                                                        "langs": [
                                                                                                        "Python",
                                                                                                        "Javascript"
                                                                                                        ],
                                                                                                        "name": "xiaofanggao"
                                                                                                    }
                                                                                                ]
                                                                                                
                                                                                                1
                                                                                                2
                                                                                                3
                                                                                                4
                                                                                                5
                                                                                                6
                                                                                                7
                                                                                                8
                                                                                                9
                                                                                                10
                                                                                                11
                                                                                                12
                                                                                                13
                                                                                                14
                                                                                                15
                                                                                                16
                                                                                                17
                                                                                                18
                                                                                                19
                                                                                                20
                                                                                                21

                                                                                                # 字符串续行

                                                                                                字符串可以写成多行,从第二行开始,必须至少有一个单空格缩进。换行符会被转为空格。

                                                                                                str: hello
                                                                                                  world
                                                                                                  hello world
                                                                                                
                                                                                                1
                                                                                                2
                                                                                                3

                                                                                                等价于json:

                                                                                                {
                                                                                                  "str": "hello world hello world"
                                                                                                }
                                                                                                
                                                                                                1
                                                                                                2
                                                                                                3

                                                                                                也可以使用 > 换行,它类似于上面的多层缩进写法。此外,还可以使用|在换行时保留换行符。

                                                                                                that: >
                                                                                                  Foo
                                                                                                  Bar
                                                                                                this: |
                                                                                                  Foo
                                                                                                  Bar
                                                                                                
                                                                                                1
                                                                                                2
                                                                                                3
                                                                                                4
                                                                                                5
                                                                                                6

                                                                                                等价于json:

                                                                                                {'that': 'Foo Bar', 'this': 'Foo\nBar\n'}
                                                                                                
                                                                                                1

                                                                                                参考链接:

                                                                                                https://blog.51cto.com/cloumn/blog/1543

                                                                                                edit icon编辑此页open in new window
                                                                                                上次编辑于: 2022/4/27 15:33:00
                                                                                                贡献者: clay-wangzhi
                                                                                                上一页
                                                                                                4.7 Jinja2 模板
                                                                                                备案号:冀ICP备2021007336号
                                                                                                Copyright © 2023 Clay