Примеры YAML
Примеры формата YAML (YAML Ain't Markup Language) от простых до сложных структур
Key Facts
- Category
- Data Formats
- Items
- 8
- Format Families
- yaml
Sample Overview
Примеры формата YAML (YAML Ain't Markup Language) от простых до сложных структур This sample set belongs to Data Formats and can be used to test related workflows inside Elysia Tools.
⚙️ Простой файл конфигурации
🟢 simple
Базовый файл конфигурации приложения
# Application Configuration
app:
name: "MyWebApp"
version: "1.0.0"
environment: "development"
server:
host: "localhost"
port: 3000
ssl: false
logging:
level: "info"
format: "text"
⚙️ Конфигурация базы данных
🟡 intermediate
Пример конфигурации подключения к базе данных
# Database Configuration
database:
type: "postgresql"
host: "localhost"
port: 5432
name: "myapp_db"
credentials:
username: "db_user"
password: "secure_password"
ssl: true
pool:
min: 2
max: 10
timeout: 30s
connection:
timeout: 10s
retries: 3
backoff: 1s
⚙️ Профиль пользователя
🟡 intermediate
Структура YAML с информацией о пользователе
# User Profile
user:
id: "USR12345"
username: "johndoe"
email: "[email protected]"
profile:
first_name: "John"
last_name: "Doe"
age: 30
bio: >
Software developer passionate about
creating amazing applications.
Love working with modern technologies.
interests:
- "programming"
- "photography"
- "travel"
preferences:
theme: "dark"
language: "en"
timezone: "UTC-5"
notifications:
email: true
push: false
roles:
- "user"
- "developer"
⚙️ Конфигурация сервера
🟡 intermediate
Пример конфигурации веб-сервера
# Server Configuration
server:
name: "Production Web Server"
environment: "production"
http:
host: "0.0.0.0"
port: 80
timeout: 30s
https:
enabled: true
port: 443
certificate: "/etc/ssl/certs/server.crt"
private_key: "/etc/ssl/private/server.key"
middleware:
- cors
- rate_limit
- compression
- logging
rate_limit:
requests_per_minute: 100
burst_size: 20
cors:
origins:
- "https://example.com"
- "https://app.example.com"
methods:
- GET
- POST
- PUT
- DELETE
headers:
- Content-Type
- Authorization
⚙️ Сообщения интернационализации
🟡 intermediate
Пример конфигурации многоязычных сообщений
# Internationalization Messages
en:
common:
welcome: "Welcome to our application"
login: "Login"
logout: "Logout"
register: "Register"
navigation:
home: "Home"
about: "About"
contact: "Contact"
services: "Services"
messages:
success: "Operation completed successfully"
error: "An error occurred"
loading: "Loading..."
no_data: "No data available"
validation:
required: "This field is required"
email: "Please enter a valid email"
min_length: "Minimum length is {count} characters"
zh:
common:
welcome: "欢迎使用我们的应用程序"
login: "登录"
logout: "登出"
register: "注册"
navigation:
home: "首页"
about: "关于"
contact: "联系"
services: "服务"
messages:
success: "操作成功完成"
error: "发生错误"
loading: "加载中..."
no_data: "暂无数据"
validation:
required: "此字段为必填项"
email: "请输入有效的邮箱地址"
min_length: "最小长度为 {count} 个字符"
es:
common:
welcome: "Bienvenido a nuestra aplicación"
login: "Iniciar sesión"
logout: "Cerrar sesión"
register: "Registrarse"
navigation:
home: "Inicio"
about: "Acerca de"
contact: "Contacto"
services: "Servicios"
messages:
success: "Operación completada exitosamente"
error: "Ocurrió un error"
loading: "Cargando..."
no_data: "No hay datos disponibles"
validation:
required: "Este campo es obligatorio"
email: "Por favor ingrese un email válido"
min_length: "La longitud mínima es {count} caracteres"
⚙️ Конфигурация Docker Compose
🔴 complex
Конфигурация оркестрации контейнеризированных приложений
# Docker Compose Configuration
version: '3.8'
services:
web:
image: nginx:alpine
container_name: web_server
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
- ./ssl:/etc/ssl:ro
depends_on:
- app
networks:
- frontend
app:
build:
context: .
dockerfile: Dockerfile
container_name: web_app
environment:
NODE_ENV: "production"
DATABASE_URL: "postgresql://user:password@db:5432/myapp"
REDIS_URL: "redis://redis:6379"
ports:
- "3000:3000"
volumes:
- ./app:/usr/src/app
- /usr/src/app/node_modules
depends_on:
- db
- redis
networks:
- frontend
- backend
db:
image: postgres:15
container_name: postgres_db
environment:
POSTGRES_DB: "myapp"
POSTGRES_USER: "user"
POSTGRES_PASSWORD: "password"
volumes:
- postgres_data:/var/lib/postgresql/data
- ./init.sql:/docker-entrypoint-initdb.d/init.sql:ro
ports:
- "5432:5432"
networks:
- backend
redis:
image: redis:7-alpine
container_name: redis_cache
command: redis-server --appendonly yes
volumes:
- redis_data:/data
ports:
- "6379:6379"
networks:
- backend
volumes:
postgres_data:
redis_data:
networks:
frontend:
driver: bridge
backend:
driver: bridge
⚙️ CI/CD конвейер
🔴 complex
Пример конфигурации непрерывной интеграции
# CI/CD Pipeline Configuration
name: "CI/CD Pipeline"
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18, 20]
steps:
- name: "Checkout code"
uses: actions/checkout@v3
- name: "Setup Node.js ${{ matrix.node-version }}"
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- name: "Install dependencies"
run: npm ci
- name: "Run linting"
run: npm run lint
- name: "Run type checking"
run: npm run type-check
- name: "Run unit tests"
run: npm run test:unit
- name: "Run integration tests"
run: npm run test:integration
build:
needs: test
runs-on: ubuntu-latest
steps:
- name: "Checkout code"
uses: actions/checkout@v3
- name: "Setup Node.js"
uses: actions/setup-node@v3
with:
node-version: '20'
cache: 'npm'
- name: "Install dependencies"
run: npm ci
- name: "Build application"
run: npm run build
- name: "Upload build artifacts"
uses: actions/upload-artifact@v3
with:
name: build-files
path: dist/
deploy:
needs: build
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
environment: production
steps:
- name: "Download build artifacts"
uses: actions/download-artifact@v3
with:
name: build-files
path: dist/
- name: "Deploy to production"
run: |
echo "Deploying to production server..."
# Add your deployment commands here
- name: "Run smoke tests"
run: npm run test:smoke
⚙️ Развертывание Kubernetes
🔴 complex
Конфигурация развертывания оркестрации контейнеров
# Kubernetes Deployment Configuration
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-app
namespace: production
labels:
app: web-app
version: v1.0.0
spec:
replicas: 3
selector:
matchLabels:
app: web-app
template:
metadata:
labels:
app: web-app
version: v1.0.0
spec:
containers:
- name: web-app
image: myregistry/web-app:1.0.0
ports:
- containerPort: 3000
protocol: TCP
env:
- name: NODE_ENV
value: "production"
- name: DATABASE_URL
valueFrom:
secretKeyRef:
name: app-secrets
key: database-url
- name: REDIS_URL
valueFrom:
configMapKeyRef:
name: app-config
key: redis-url
resources:
requests:
memory: "256Mi"
cpu: "250m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
httpGet:
path: /health
port: 3000
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /ready
port: 3000
initialDelaySeconds: 5
periodSeconds: 5
volumeMounts:
- name: config-volume
mountPath: /app/config
readOnly: true
volumes:
- name: config-volume
configMap:
name: app-config
imagePullSecrets:
- name: registry-secret
---
apiVersion: v1
kind: Service
metadata:
name: web-app-service
namespace: production
spec:
selector:
app: web-app
ports:
- protocol: TCP
port: 80
targetPort: 3000
type: ClusterIP
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: web-app-ingress
namespace: production
annotations:
kubernetes.io/ingress.class: nginx
cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
tls:
- hosts:
- app.example.com
secretName: web-app-tls
rules:
- host: app.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: web-app-service
port:
number: 80