ansible小技巧
- 出现带'u'的 unicode编码, 在python里 .encode()回去,尤其是经过shell处理的,最好在shell中使用jinja2来处理一下
最好这种情况在shell模块使用jinja2的循环来代替shell的循环,从而获得一个列表stdout_lines
- register的变量,后边判断是否定义不能用is defined要用|skipped这样的方式,set_fact定义的变量可以用is defined来判断
- ansible中的dict类型通过点 . 调用下一级字段最多三级,三级之后用中括号[ ]
例如: - debug: var=out.json.versions["values"]
模块的执行,无论是执行或不执行 都会有changed字段输出, 执行成功与失败也都会有changed的字段输出,所以控制changed的状态就是非常重要的事情
shell模块执行成功就会changed: true ; 失败则是false ; 执行命令失败: 命令错误的情况并不输出failed的字段,因为要用is failed判断, 执行命令正确但是结果返回码不是0的情况下有failed字段,但是执行成功或失败都有rc字段,skipped则没有rc字段 输出。
register一个变量,不论该task是否被skipped,都会有defined状态,所以register的变量不能以defined来做判断,set_fact的可以用defined来判断。
run_once时获取到的变量值是可以带入其他hosts的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类