0Pricing
DevOps Bootcamp · 课时

期望状态,而非逐步脚本

了解声明式为何优于命令式

期望状态,而非逐步脚本 是 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: present

state 用于命名目标

state 键用于声明意图。present、started 或 absent 分别表示期望的最终状态,而不是要执行的操作。

ansible.builtin.service:
  name: nginx
  state: started

Ansible 先进行比较

在更改任何内容之前,模块会将当前状态与您声明的状态进行比较。如果两者已经一致,它就完全不会执行任何操作。

这就是收敛

每次运行都会让主机趋近于您声明的状态。这就是收敛:无论起点是什么,主机最终都会到达同一个状态。

执行顺序不再那么重要

由于任务声明的是目标,重新运行一个未完成的执行流程只会完成剩余部分。您不必追踪上次失败的是哪一步。

可安全重复运行

声明式任务可以安全地重复运行。已经处于正确状态的主机会保持不变,这正是幂等性的基础。

需要记住的更少

您不必再手动编写“如果已安装则跳过”之类的检查。模块负责处理这些逻辑,因此您的执行手册会保持简短易读。

执行手册是真实来源

声明式执行手册读起来就像对期望状态的服务器进行说明:服务器上应该有哪些软件包、服务和文件。

- 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 期望状态,而非逐步脚本
  2. 阅读输出中的 changed 与 ok
  3. 为什么 command 会破坏幂等性
  4. 检查模式:使用 --check 进行试运行
← 返回 DevOps Bootcamp