YAML 脚本详解与实战案例

YAML(YAML Ain’t a Markup Language)是一种直观的、可读性强的数据序列化格式,常用于配置文件和数据交换。它使用缩进来表示层级关系,支持复杂的数据结构,如对象、数组和纯量等。

基本语法

  • 大小写敏感:YAML 中的关键字是大小写敏感的。
  • 缩进:使用空格进行缩进,通常是两个空格,不允许使用Tab键。
  • 注释:以 # 开头的行表示注释。
  • 键值对:使用冒号 : 表示键值对,冒号后通常跟一个空格。

数据类型

对象(Mapping)

对象是由键值对组成的集合,类似于其他语言中的字典或对象。

database:
  host: localhost
  port: 3306

数组(Sequence)

数组是一组有序的值,以 - 开头表示列表项。

fruits:
  - Apple
  - Banana
  - Cherry

纯量(Scalar)

纯量是单个的、不可再分的值,包括字符串、布尔值、整数、浮点数、Null等。

name: John Doe
age: 30
is_student: false

实战案例

Docker Compose

Docker Compose 使用 YAML 文件来配置多容器 Docker 应用程序。以下是一个简单的 docker-compose.yml 文件示例,它定义了一个 Web 应用和数据库服务。

version: '3'
services:
  web:
    build: .
    ports:
      - "5000:5000"
    depends_on:
      - db
  db:
    image: postgres
    environment:
      POSTGRES_DB: mydatabase

在这个例子中,我们定义了两个服务:webdbweb 服务使用当前目录下的 Dockerfile 构建镜像,并映射端口 5000。它依赖于 db 服务,db 服务使用官方的 PostgreSQL 镜像,并设置了环境变量 POSTGRES_DB

Kubernetes 配置

Kubernetes 也广泛使用 YAML 文件来定义资源。以下是一个简单的 Pod 配置文件示例。

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: mycontainer
    image: nginx
    ports:
    - containerPort: 80

这个配置文件定义了一个名为 mypod 的 Pod,它包含一个使用 Nginx 镜像的容器,并暴露了容器的 80 端口。

引用与锚点

YAML 还支持锚点和别名,允许复用配置片段。

defaults: &defaults
  adapter: postgres
  host: localhost

development:
  <<: *defaults
  database: myapp_development

test:
  <<: *defaults
  database: myapp_test

在这个例子中,defaults 定义了一组默认设置,developmenttest 环境通过 <<: *defaults 合并了这些默认设置。

通过这些基本语法和实战案例,你可以开始使用 YAML 来编写配置文件和定义复杂的数据结构。YAML 的简洁性和可读性使其成为配置管理和数据交换的理想选择。

猜你喜欢

转载自blog.csdn.net/qq_40797754/article/details/142900424