YAML 本身不是编程语言,所以严格来说它不能直接“写运维脚本”(不能像 Bash/Python 那样执行逻辑)。
但在运维领域,YAML 通常用来描述“做什么”,而真正的执行逻辑由工具(如 Ansible、Kubernetes、GitHub Actions、ArgoCD 等)来读取并运行。
下面按常见场景给你讲清楚怎么用 YAML 做“运维脚本”。
Ansible 的 Playbook 就是 YAML 格式的运维脚本。
- name: 安装并启动 Nginx
hosts: webservers
become: true
tasks:
- name: 安装 nginx
apt:
name: nginx
state: present
- name: 启动 nginx
service:
name: nginx
state: started
enabled: true
✅ 特点
运行:
ansible-playbook nginx.yaml
name: deploy
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: 拉代码
uses: actions/checkout@v3
- name: 部署到服务器
run: |
ssh user@server "cd /app && git pull && systemctl restart app"
✅ 这里 YAML 是流程定义脚本
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.25
✅ YAML 是“运维声明文件”
如果你“必须”写逻辑,正确做法是:
YAML 管配置,Shell/Python 管逻辑
script: deploy.sh
params:
env: prod
version: v1.2.3
#!/bin/bash
echo "部署 $1 版本到 $2"
❌ 不适合:
✅ 更适合:
YAML 不是脚本语言,而是“运维说明书”
真正的脚本能力,来自 Ansible / K8s / CI 工具去“读它并执行”。
如果你愿意,可以告诉我:
我可以直接帮你写一份可用的 YAML。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。