最新在使用 ansible,也看了下 ansible 的 python api,发现里面有个 check 和 diff 模式
从官方文档的解释是这样 “当以 --check 参数来运行 ansible-playbook 时,将不会对远程的系统作出任何更改.” 从-h 中看到 “ -C, --check don't make any changes; instead, try to predict some of the changes that may occur -D, --diff when changing (small) files and templates, show the differences in those files; works great with --check ”
但其实还是不明白,尤其是使用 command 或者 shell 模块的时候,更是一点区别也感觉不出来,求大神解释,谢谢
1
cxbig 2017-10-13 17:42:55 +08:00
command 或 shell 在没有添加 when 条件做制约的时候总是会运行的,所以 dry run 对这两个模块没有什么用处。
|
2
cxbig 2017-10-13 17:46:34 +08:00
文档说的很清楚
check 是告诉你每个 task 会不会执行 diff 主要针对 template/lineinfile/blockinfile/replace 这类模块的 |
3
hagezhou OP @cxbig 哦哦,那 diff 的话理解了,check 每个 task 会不会执行的话在 shell 或者 command 模块中会有体现吗?我加上 check 参数和不加也没看到什么区别,也没有打屏输出会不会执行什么的
|
4
cxbig 2017-10-13 18:07:19 +08:00
@hagezhou
我在#1 里说的 如果你不加 when 这类判断的话,shell 和 command 每次都会执行 如果 when 条件是 false,那就会是 skip 没有看到区别??怎么会?这是我的一个 check 结果: ...... TASK [scripts : Check deploy folder] changed: [srv-0] ...... PLAY RECAP srv-0 : ok=4 changed=2 unreachable=0 failed=0 很清晰的告诉我这个 task 会执行 |
6
sgaoc 2019-09-19 02:33:31 +08:00
- name: Get the school server
shell: DOMAIN={{ school_config.url }} && echo ${DOMAIN#*.} register: domain_name 我的 shell 模块如上,没有 when 判断条件,但在执行 --check --diff 的时候也被跳过了 |