sách gpt4 ai đã đi

ansible:thay đổi=0

In lại 作者:行者123 更新时间:2023-12-04 01:15:59 28 4
mua khóa gpt4 Nike

我想知道在某些情况下,即使剧本任务已成功执行并且 ok=2,ansible 也会显示“changed=0”。使用 Rest API 和 uri 模块时会发生这种情况。我试图找到解释但没有成功。谁能告诉我是什么原因?如果我在许多服务器上一起进行更改,而我没有手动检查更改是否已完成,这将是一个大问题。谢谢!

1 Câu trả lời

Ansible 中 'changed' 和 'ok' 的主要区别在于所有模块之间关于什么是 'ok' 和什么是 'changed' 的内部协议(protocol)。

当一个模块认为它的 Action 改变了某些东西(例如,一个主题在模块执行之前的状态和之后的状态不同),它需要向 Ansible 报告“改变”。如果没有有意义的变化(“有意义”的定义留给模块),则报告“正常”。有时模块可以提前检测是否需要更改(例如:不需要创建目录,因为它已经存在),有时只能在执行操作后检测到(例如,某些应用程序向尝试重新配置)。

现在让我们看看 địa chỉ 模块。 địa chỉ 模块如何在请求后猜测远程 http/s 服务器上是否已更改某些内容?事实是,它有时可以。如果服务器回答“已更新”之类的内容,则模块可以报告“已更改”。但是如果服务器回答是“200 OK”怎么办?所以,这里没有“改变”。

phải làm gì?

Ansible 有一个特性:您可以通过为“已更改”声明条件来覆盖默认模块“已更改”状态。

Ví dụ

这是我对 API 服务器的真实配置中的一个示例:

  uri:
method: POST
url: http://{{ api_address }}:{{api_port }}/config
body_format: raw
headers:
Content-Type: text/plain
body: '{{ {"global_config": global_config} |to_yaml }}'
status_code:
- 200
- 304
- 201
register: config_post
changed_when: config_post.status == 200 or config_post.status == 201

如您所见,我们同意“200 或 201”已“更改”,而“304”未更改(但可以)。该协议(protocol)由服务器和 Ansible 角色支持。

对于不太精确的情况,您可以只说 changed_when: True 并且您的任务将始终“更改”(失败和跳过除外)。

关于Ansible:更改=0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54123693/

28 4 0
Bài viết được đề xuất: node.js - 如何使用其他列更新列?
Bài viết được đề xuất: vim - 有没有办法模拟 Vimscript/VimL 函数?
Bài viết được đề xuất: node.js - 未设置安全 cookie
Bài viết được đề xuất: python - 使用 DictReader 从 python 中的 csv 行 'as a list' 中读取列表
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com