YAML(YAML Ain’t Markup Language)在服务器运维中非常常见,主要因为它可读性强、结构清晰、易于版本管理。下面从「使用场景 → 示例 → 最佳实践」三个层面,讲清楚如何用 YAML 做服务器运维。
| 场景 | 说明 |
|---|---|
| 配置管理 | Ansible、SaltStack |
| 容器编排 | Docker Compose、Kubernetes |
| CI/CD | GitLab CI、GitHub Actions |
| 服务配置 | 应用 YAML 配置文件 |
| 基础设施即代码 | Terraform(部分场景) |
示例:安装 Nginx 并启动
---
- name: Setup Web Server
hosts: web
become: yes
tasks:
- name: Install nginx
apt:
name: nginx
state: present
- name: Start nginx
service:
name: nginx
state: started
enabled: true
✅ 特点:
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
db:
image: mysql:8
environment:
MYSQL_ROOT_PASSWORD: rootpass
✅ 常用于:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deploy
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80
✅ 适合:
GitLab CI 示例
stages:
- build
- deploy
deploy_prod:
stage: deploy
script:
- ssh user@server "bash /opt/deploy.sh"
only:
- main
❌ 不要用 Tab
# 正确
key:
sub: value
--- 分隔多个文档适合 Ansible、K8s
---
apiVersion: v1
kind: Service
...
❌ 不要写密码明文
password: "{{ secret_password }}"
或用:
yamllint config.yaml
kubectl apply --dry-run=client -f deploy.yaml
ansible-playbook --check playbook.yml
如果你愿意,我可以:
你目前主要用在哪一块?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。