期望状态,而非逐步脚本
了解声明式为何优于命令式
期望状态,而非逐步脚本 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 4 节课。
描述结果,而非步骤
Ansible 是声明式的:您描述想要的最终状态,Ansible 会根据主机当前所处的状态,找出达到目标所需的步骤。
命令式方式
命令式脚本会按顺序列出确切的命令。它假定了起始状态,因此如果主机已经完成部分配置,就可能失败。
apt-get update
apt-get install -y nginx
systemctl start nginx声明式方式
声明式任务只需说明目标:nginx 应已安装并正在运行。Ansible 会检查实际情况,仅在需要时执行操作。
ansible.builtin.package:
name: nginx
state: presentstate 用于命名目标
state 键用于声明意图。present、started 或 absent 分别表示期望的最终状态,而不是要执行的操作。
ansible.builtin.service:
name: nginx
state: startedAnsible 先进行比较
在更改任何内容之前,模块会将当前状态与您声明的状态进行比较。如果两者已经一致,它就完全不会执行任何操作。
这就是收敛
每次运行都会让主机趋近于您声明的状态。这就是收敛:无论起点是什么,主机最终都会到达同一个状态。
执行顺序不再那么重要
由于任务声明的是目标,重新运行一个未完成的执行流程只会完成剩余部分。您不必追踪上次失败的是哪一步。
可安全重复运行
声明式任务可以安全地重复运行。已经处于正确状态的主机会保持不变,这正是幂等性的基础。
需要记住的更少
您不必再手动编写“如果已安装则跳过”之类的检查。模块负责处理这些逻辑,因此您的执行手册会保持简短易读。
执行手册是真实来源
声明式执行手册读起来就像对期望状态的服务器进行说明:服务器上应该有哪些软件包、服务和文件。
- name: Web server desired state
hosts: web
tasks:
- ansible.builtin.package:
name: nginx
state: present有些任务仍是命令式的
原始的command和 shell 任务是命令式的:它们每次都会运行。请优先使用基于状态的模块,以便 Ansible 保持声明式。
快速检查
您编写了一个任务,声明 nginx 应该存在,然后在已经安装 nginx 的主机上运行执行手册。
回顾
您声明期望状态,Ansible 会让主机趋近于该状态,只有现实与声明不一致时才采取行动。这种安全性就是幂等性。🎯
常见问题解答
「期望状态,而非逐步脚本」课时是免费的吗?
是的 — 「期望状态,而非逐步脚本」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。
「期望状态,而非逐步脚本」这节课中我会学到什么?
了解声明式为何优于命令式 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 DevOps Bootcamp 需要有经验吗?
无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「期望状态,而非逐步脚本」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 DevOps Bootcamp 课中编写并运行代码吗?
能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。