From a6399d1bcebbe713f81fe5cbb6b63a5392a52114 Mon Sep 17 00:00:00 2001 From: Wang Defa Date: Tue, 16 Dec 2025 13:49:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20Ansible=20stat=20=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E5=B1=9E=E6=80=A7=E8=AE=BF=E9=97=AE=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修正 xxxigcc_update_pool_url.yaml 中的条件判断 - 将 log_dir_stat.isdir 修正为 log_dir_stat.stat.isdir - 新增 stat 模块属性访问最佳实践文档 - 更新故障排除指南中的常见错误处理部分 --- llmdoc/guides/xxxigcc-pool-url-update.md | 26 ++++++++++++++++++- llmdoc/index.md | 6 ++--- .../ansible-version-compatibility.md | 13 ++++++++++ xxxigcc_update_pool_url.yaml | 2 +- 4 files changed, 42 insertions(+), 5 deletions(-) diff --git a/llmdoc/guides/xxxigcc-pool-url-update.md b/llmdoc/guides/xxxigcc-pool-url-update.md index 40e46cb..9581e25 100644 --- a/llmdoc/guides/xxxigcc-pool-url-update.md +++ b/llmdoc/guides/xxxigcc-pool-url-update.md @@ -45,8 +45,32 @@ 3. 系统权限 4. Ansible 版本兼容性 +### 常见错误处理 + +#### Stat 模块属性访问问题 + +- **错误**:`'dict object' has no attribute 'isdir'` +- **原因**:Ansible stat 模块返回嵌套字典结构 +- **解决方案**:始终使用 `log_dir_stat.stat.isdir` 而非 `log_dir_stat.isdir` + +示例修复: +```yaml +- name: 检查日志目录 + ansible.builtin.stat: + path: "/var/log/xxxigcc" + register: log_dir_stat + +# 正确的条件判断 +- name: 处理日志目录 + when: log_dir_stat.stat.exists and log_dir_stat.stat.isdir + block: + - name: 清理日志 + # 清理操作 +``` + ## 5. 安全注意事项 - 仅在可信环境中执行此 Playbook - 谨慎使用 `old_pool_url` 参数 -- 确保 Ansible 版本满足最低要求 \ No newline at end of file +- 确保 Ansible 版本满足最低要求 +- 注意处理 stat 模块返回的嵌套字典属性 \ No newline at end of file diff --git a/llmdoc/index.md b/llmdoc/index.md index 9cf25f3..a293c38 100644 --- a/llmdoc/index.md +++ b/llmdoc/index.md @@ -19,9 +19,9 @@ ## 最近更新 -- 修复 `xxxigcc_update_pool_url.yaml` 中的版本兼容性问题 -- 新增 Ansible 版本兼容性参考文档 -- 更新 Pool URL 更新指南 +- 修复 `xxxigcc_update_pool_url.yaml` 中的 stat 模块属性访问问题 +- 新增 Ansible 模块属性访问的最佳实践说明 +- 更新 XXXigCC Pool URL 更新指南中的故障排除部分 ## 联系方式 diff --git a/llmdoc/reference/ansible-version-compatibility.md b/llmdoc/reference/ansible-version-compatibility.md index df07d97..5fb7f97 100644 --- a/llmdoc/reference/ansible-version-compatibility.md +++ b/llmdoc/reference/ansible-version-compatibility.md @@ -10,6 +10,18 @@ ## 关键变更详情 +### 模块属性访问 + +Ansible stat 模块返回的是嵌套字典结构,访问属性时需要注意: + +- **错误示例**:`log_dir_stat.isdir` +- **正确示例**:`log_dir_stat.stat.isdir` + +原因: +- stat 模块返回一个包含 `stat` 子字典的对象 +- 必须通过 `stat` 子字典访问文件/目录属性 +- 直接访问根对象属性会导致 `'dict object' has no attribute` 错误 + ### `warn` 参数的移除 - **版本**:Ansible 2.14 @@ -32,6 +44,7 @@ - 始终使用最新的 Ansible 版本 - 定期检查并更新 Playbook - 使用 `ansible_version` 进行版本兼容性检查 +- 谨慎访问模块返回的嵌套字典属性 ## 参考资源 diff --git a/xxxigcc_update_pool_url.yaml b/xxxigcc_update_pool_url.yaml index a02a48a..35079f7 100644 --- a/xxxigcc_update_pool_url.yaml +++ b/xxxigcc_update_pool_url.yaml @@ -106,7 +106,7 @@ - name: 显示日志清理结果 ansible.builtin.debug: msg: "日志目录 {{ log_dir }} 已清理" - when: log_dir_stat.stat.exists and log_dir_stat.isdir + when: log_dir_stat.stat.exists and log_dir_stat.stat.isdir - name: 重启 xxxigcc-daemon 服务 ansible.builtin.systemd: